<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Siri's Programming</title>
    <link>https://jinsiri.tistory.com/</link>
    <description>하루하루 행복하게 살아가는 siri입니다.</description>
    <language>ko</language>
    <pubDate>Thu, 9 Apr 2026 02:03:47 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>jinsiri</managingEditor>
    <image>
      <title>Siri's Programming</title>
      <url>https://tistory1.daumcdn.net/tistory/2894521/attach/06b01c2b8548450b8083337155e7adb5</url>
      <link>https://jinsiri.tistory.com</link>
    </image>
    <item>
      <title>Spring Java 배포 쉘스크립트(Jenkins 대신 임시로)</title>
      <link>https://jinsiri.tistory.com/625</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;급히 몇시간만에 배포를 해야 해 sh을 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 참고할수 있으니 메모~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일명: deploy.sh&lt;/p&gt;
&lt;pre id=&quot;code_1756429575862&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash

APP_HOME=&quot;/home/ubuntu/admin-src&quot;

echo &quot;=== 1. 작업 디렉토리 준비 ===&quot;
mkdir -p $APP_HOME
cd $APP_HOME

echo &quot;=== 2. 기존 소스/컨테이너 정리 ===&quot;
# 기존 clone 삭제
rm -rf admin
# 기존 컨테이너가 있다면 중지 &amp;amp; 삭제
docker stop &amp;lt;container name&amp;gt; 2&amp;gt;/dev/null || true
docker rm &amp;lt;container name&amp;gt; 2&amp;gt;/dev/null || true

echo &quot;=== 3. Git clone ===&quot;
git clone https://&amp;lt;user name&amp;gt;:&amp;lt;발급받은토큰&amp;gt;@github.com/&amp;lt;user name&amp;gt;/&amp;lt;프로젝트명.git&amp;gt;
cd admin

echo &quot;=== 4. Gradle build ===&quot;
./gradlew clean build -x test

echo &quot;=== 5. Plain war 제거 ===&quot;
rm -f build/libs/*-plain.war

echo &quot;=== 6. Docker build ===&quot;
docker build -t admin:latest .

echo &quot;=== 7. Docker run ===&quot;
docker run -d --name admin -p 8444:8443 \
              admin:latest \
              --server.port=8443 \
              --server.ssl.enabled=false
echo &quot;=== ✅ 배포 완료! ===&quot;

~                                                                                                                       ~&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DockerFile&lt;/p&gt;
&lt;pre id=&quot;code_1756429772576&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;FROM eclipse-temurin:17-jdk AS runtime
WORKDIR /app

COPY build/libs/*.war app.war

EXPOSE 8443

ENV SPRING_PROFILES_ACTIVE=master

ENTRYPOINT [&quot;java&quot;, &quot;-jar&quot;, &quot;app.war&quot;, &quot;--spring.profiles.active=master&quot;]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>program_language 및 궁금한것/Java</category>
      <category>java 배포쉘스크립트</category>
      <category>java수동배포</category>
      <category>jenkins대신</category>
      <category>급하게 30분만에</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/625</guid>
      <comments>https://jinsiri.tistory.com/625#entry625comment</comments>
      <pubDate>Fri, 29 Aug 2025 10:10:35 +0900</pubDate>
    </item>
    <item>
      <title>[AWS Free-tier] Dockerfile 작성</title>
      <link>https://jinsiri.tistory.com/624</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;spring boot 프로젝트 최상단에&amp;nbsp; Dockerfile을 추가해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 JSP 프로젝트라 war로 진행했지만 그 외의 경우는 jar로 진행해도 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1746158936982&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;FROM eclipse-temurin:17-jdk AS runtime
WORKDIR /app

COPY build/libs/*.war app.war

EXPOSE 8080

ENV SPRING_PROFILES_ACTIVE=master

ENTRYPOINT [&quot;java&quot;, &quot;-jar&quot;, &quot;app.war&quot;, &quot;--spring.profiles.active=master&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>study/AWS</category>
      <category>spring boot dockerfile</category>
      <category>spring boot jsp dockerfile</category>
      <category>spring boot war</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/624</guid>
      <comments>https://jinsiri.tistory.com/624#entry624comment</comments>
      <pubDate>Fri, 2 May 2025 20:10:19 +0900</pubDate>
    </item>
    <item>
      <title>[AWS Free-tier] EC2 생성</title>
      <link>https://jinsiri.tistory.com/623</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;EC2 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회원가입 생략&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. AWS EC2 &amp;gt; 인스턴스 &amp;gt; 인스턴스 시작&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;무료로 이용할 것이기 때문에 프리티어 사용가능한 AMI를 선택한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;나는 spring boot를 배포할 예정이라 Ubuntu로 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDr8mO/btsNuD4TNCk/RVCx7r3FCiXUM734J6qyjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDr8mO/btsNuD4TNCk/RVCx7r3FCiXUM734J6qyjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDr8mO/btsNuD4TNCk/RVCx7r3FCiXUM734J6qyjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDr8mO%2FbtsNuD4TNCk%2FRVCx7r3FCiXUM734J6qyjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1093&quot; height=&quot;708&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;- 인스턴스 유형은 비용 발생의 여지 없이 t2.micro 선택&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;- 키 페어 생성을 해준다. 키 페어 생성시 .pem 파일이 다운받아지는데 잊어버리면 안된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;- .pem 파일로 ec2에 ssh를 붙을 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4PhXY/btsNuEv2Dxc/gXF5jFl5LhdDYEBV8Qtwk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4PhXY/btsNuEv2Dxc/gXF5jFl5LhdDYEBV8Qtwk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4PhXY/btsNuEv2Dxc/gXF5jFl5LhdDYEBV8Qtwk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4PhXY%2FbtsNuEv2Dxc%2FgXF5jFl5LhdDYEBV8Qtwk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1145&quot; height=&quot;712&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;- 네트워크 설정시 보안그룹을 생성해준다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;- 내 IP는 현재 IP를 SSH 트래픽 허용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;- 더 필요시 생성된 보안그룹에 설정을 추가해주면된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;- 인바운드:&amp;nbsp; EC2로 들어오는 IP 설정&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;561&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLhWeQ/btsNuEixo3y/ABcpSbnp9i08wnIwZpQ9D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLhWeQ/btsNuEixo3y/ABcpSbnp9i08wnIwZpQ9D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLhWeQ/btsNuEixo3y/ABcpSbnp9i08wnIwZpQ9D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLhWeQ%2FbtsNuEixo3y%2FABcpSbnp9i08wnIwZpQ9D0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1093&quot; height=&quot;561&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;561&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. EC2 SSH 접속&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;로컬 cmd에서 EC2 SSH 접속&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1745373857733&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;chmod 400 your-key.pem
ssh -i &quot;내가설정한.pem&quot; ubuntu@&amp;lt;EC2 퍼블릭 IP&amp;gt; # 퍼플릭 IP: 인스턴스 세부정보 &amp;gt; 퍼블릭 IPv4 DNS&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;EC2에 SSH접속해서 Docker를 설치해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;EC2를 재시작 될경우를 생각해 Docker 자동 시작을 설정해준다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1745373572213&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 업데이트 및 패키지 설치
sudo apt update
sudo apt install docker.io -y

# 도커 사용자 권한 설정
sudo usermod -aG docker ubuntu
newgrp docker

# 도커 자동 시작 설정
sudo systemctl enable docker
sudo systemctl start docker&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7; text-align: start;&quot;&gt;꿀팁. 스왑 메모리 설정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7; text-align: start;&quot;&gt;- 기본 메모리로는 부족하기에 스왑메모리를 설정해준다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1746158330328&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 스왑 파일 생성
sudo fallocate -l 2G /swapfile

# 파일 권한 설정
sudo chmod 600 /swapfile

# 스왑 파일로 설정
sudo mkswap /swapfile
sudo swapon /swapfile

# 시스템 재시작해도 유지되도록 설정
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# 설정확인
free -h
              total        used        free      shared  buff/cache   available
Mem:           980M        150M        100M         10M        729M        760M
Swap:          2.0G          0B        2.0G&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;Docker Image로 올릴 예정이라 EC2에 Java 설치는 패쓰~&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;- EC2 셋팅 끝 -&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>study/AWS</category>
      <category>AWS EC2</category>
      <category>aws freetier</category>
      <category>aws t2.micro</category>
      <category>ec2스왑메모리</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/623</guid>
      <comments>https://jinsiri.tistory.com/623#entry623comment</comments>
      <pubDate>Fri, 2 May 2025 12:59:38 +0900</pubDate>
    </item>
    <item>
      <title>TOSS SLASH-24 :: No Limit 후기</title>
      <link>https://jinsiri.tistory.com/622</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;토스의 SLASH-24 No Limit을 다녀 왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코엑스에서 진행되었고 꽤 큰 행사였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CuKjg/btsJPKzCiIX/wDcffmRGduEWzePWtvPSu1/tfile.HEIC&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CuKjg/btsJPKzCiIX/wDcffmRGduEWzePWtvPSu1/tfile.HEIC&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CuKjg/btsJPKzCiIX/wDcffmRGduEWzePWtvPSu1/tfile.HEIC&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCuKjg%2FbtsJPKzCiIX%2FwDcffmRGduEWzePWtvPSu1%2Ftfile.HEIC&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굿즈도 알차게 받고 ( 우루샷, 키링, 스티커, 물 등 )&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wL8np/btsJQ6aeumX/lfkPftHtP4H7fwOSKDsP5k/tfile.HEIC&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wL8np/btsJQ6aeumX/lfkPftHtP4H7fwOSKDsP5k/tfile.HEIC&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wL8np/btsJQ6aeumX/lfkPftHtP4H7fwOSKDsP5k/tfile.HEIC&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwL8np%2FbtsJQ6aeumX%2FlfkPftHtP4H7fwOSKDsP5k%2Ftfile.HEIC&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;스페셜 세션&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;막 개발을 시작하는 주니어 개발자에게 유용할 얘기들이고, 발표자의 이야기에 공감이 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발은 추상적인 개념이 많다. 그래서 그림으로 소통하는게 꽤 유용할때가 있다. 그리고 오픈소스를 통해 코드를 보는 눈을 키우라는것도 맞는 말이지.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2y8To/btsJRqfew5y/iQ2lidgQQXzk3KQb2kuRjk/tfile.HEIC&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2y8To/btsJRqfew5y/iQ2lidgQQXzk3KQb2kuRjk/tfile.HEIC&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2y8To/btsJRqfew5y/iQ2lidgQQXzk3KQb2kuRjk/tfile.HEIC&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2y8To%2FbtsJRqfew5y%2FiQ2lidgQQXzk3KQb2kuRjk%2Ftfile.HEIC&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3kTCF/btsJPKl5nHv/KUpFquKbmQDs0Py5G57BA0/tfile.HEIC&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3kTCF/btsJPKl5nHv/KUpFquKbmQDs0Py5G57BA0/tfile.HEIC&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3kTCF/btsJPKl5nHv/KUpFquKbmQDs0Py5G57BA0/tfile.HEIC&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3kTCF%2FbtsJPKl5nHv%2FKUpFquKbmQDs0Py5G57BA0%2Ftfile.HEIC&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Next 코어뱅킹, MSA와 MySQL로 여는 평생 무료 환전시대&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토스뱅크의 아키텍쳐 변환에 대한 고민과 대안을 모색하는 과정을 볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오라클의 의존적인 아키텍처에서 벗어나려 방법을 모색하던중,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외환 예금을 금융권 최초로 mysql로 코어뱅킹 시스템을 6개월만에 구축하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6개월 만에 구축한 배경에는 테스트 자동화가 있었다는데.. 단위테스트부터 종단간(E2E) 테스트까지&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단위테스트의 중요성은 알지만, 프로젝트 일정에 쫓겨 혹은 귀찮아서 안하는 경우도 더러 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토스는 역시나 토스?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;878&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brKuQf/btsJPoDJvM7/T3Akgva1hm3SF0LqkBgZN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brKuQf/btsJPoDJvM7/T3Akgva1hm3SF0LqkBgZN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brKuQf/btsJPoDJvM7/T3Akgva1hm3SF0LqkBgZN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrKuQf%2FbtsJPoDJvM7%2FT3Akgva1hm3SF0LqkBgZN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1150&quot; height=&quot;878&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;878&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성과의 트래픽 숫자를 보고 놀랐는데, 높은 트래픽을 안정적으로 소화하기까지 얼마나 많은 노력이 들어갔을까 싶다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddndA7/btsJPN33yO7/7OoVWrVRIEaCNeSxP65Uz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddndA7/btsJPN33yO7/7OoVWrVRIEaCNeSxP65Uz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddndA7/btsJPN33yO7/7OoVWrVRIEaCNeSxP65Uz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddndA7%2FbtsJPN33yO7%2F7OoVWrVRIEaCNeSxP65Uz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2040&quot; height=&quot;1142&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;1142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;쿠버네티스 cpu 알뜰하게 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제목에 이끌려 들어갔던 세션이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현 회사에서도 쿠버네티스 운영을 겸하고 있기 때문에 꿀팁을 가져갈수 있을까 해서 제일 앞자리에 자리잡았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cpu 부하 분산 이슈가 있었는데, 이는 특정 서비스의 cpu가 튈때 연관 서비스의 cpu도 같이 부하가 발생하고 이 서비스들이 한 노드에 있으면 특정노드 과부하로 서비스 지연이 일어난다는 얘기였다. 이를 해결한 방법은 Topology Spread Constraint를 사용하여 무조건 같은 갯수로 노드에 분산시켜 준다는 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;현 회사에서도 토스와 같이 Topology Spread Constraint를 사용하여 각 서비스들을 특정 노드에 분산시켜 운영하고 있는데, 잘하고 있었구나 라는 생각이 들어 뿌듯했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전시부스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기술 세미나의 재미중 하나인 전시부스 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Notion, Salesforce, 베스핀 글로벌등 이름을 알만한 기업들이 있었고, 부스는 작았지만 알찼다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MR1jF/btsJPfz9rg8/RJMbE9FLaRWfHgwu2Hjdkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MR1jF/btsJPfz9rg8/RJMbE9FLaRWfHgwu2Hjdkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MR1jF/btsJPfz9rg8/RJMbE9FLaRWfHgwu2Hjdkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMR1jF%2FbtsJPfz9rg8%2FRJMbE9FLaRWfHgwu2Hjdkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토스 자체의 이벤트도 참여할 수 있었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y3HyM/btsJPAD3KcU/hanbSKKqi79R5tNg5wnr21/tfile.HEIC&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y3HyM/btsJPAD3KcU/hanbSKKqi79R5tNg5wnr21/tfile.HEIC&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y3HyM/btsJPAD3KcU/hanbSKKqi79R5tNg5wnr21/tfile.HEIC&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy3HyM%2FbtsJPAD3KcU%2FhanbSKKqi79R5tNg5wnr21%2Ftfile.HEIC&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;4032&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토스답게 기술 위주의 세미나인점이 좋았고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션당 20분이라는 시간은 조금 짧아 아쉬웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음에 또 기회가 된다면 참여하고 싶다.&lt;/p&gt;</description>
      <category>program_language 및 궁금한것/IT conference</category>
      <category>slash24</category>
      <category>toss-slash24</category>
      <category>toss세미나</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/622</guid>
      <comments>https://jinsiri.tistory.com/622#entry622comment</comments>
      <pubDate>Sun, 29 Sep 2024 14:38:13 +0900</pubDate>
    </item>
    <item>
      <title>Obsidian github 연동하기( v1.6.5 Obsidian-Git 이름 변경 )</title>
      <link>https://jinsiri.tistory.com/621</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노마드 코더의 영상을 보다가 Obsidian을 알게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;귀찮아서 세팅을 미루다가 요즘 Obsidian 세팅글이 꽤 올라오는것 같아 나도 해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Obsidian 의 장점은 저장소를 깃으로 사용할수 있다는 것과 그래프 기능이 꽤 좋다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단점은 설정이 어렵고, 마크 다운이며, Obsidian 자체의 저장소를 사용하려면 유료이다 정도?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Obsidian의 window 셋팅방법을 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 설치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://obsidian.md/download&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://obsidian.md/download&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720145283463&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download - Obsidian&quot; data-og-description=&quot;Obsidian is available on all major platforms. Download Obsidian for iOS, Android, macOS, Windows and Linux.&quot; data-og-host=&quot;obsidian.md&quot; data-og-source-url=&quot;https://obsidian.md/download&quot; data-og-url=&quot;https://obsidian.md/download&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ccK27l/hyWvIOQY87/xwavreuimHKCzRNJdjxiw1/img.png?width=1200&amp;amp;height=688&amp;amp;face=0_0_1200_688,https://scrap.kakaocdn.net/dn/j8xwR/hyWvIadVpV/fjLRa43nRSjHzxfVy4LSW1/img.png?width=1200&amp;amp;height=688&amp;amp;face=0_0_1200_688&quot;&gt;&lt;a href=&quot;https://obsidian.md/download&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://obsidian.md/download&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ccK27l/hyWvIOQY87/xwavreuimHKCzRNJdjxiw1/img.png?width=1200&amp;amp;height=688&amp;amp;face=0_0_1200_688,https://scrap.kakaocdn.net/dn/j8xwR/hyWvIadVpV/fjLRa43nRSjHzxfVy4LSW1/img.png?width=1200&amp;amp;height=688&amp;amp;face=0_0_1200_688');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Download - Obsidian&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Obsidian is available on all major platforms. Download Obsidian for iOS, Android, macOS, Windows and Linux.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;obsidian.md&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. &lt;/b&gt;&lt;b&gt;git remote repository create&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 로컬에 clone&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git이 설치 되었다는 가정에 원하는 로컬 경로에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git init&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 2번째의 보관소 폴더 열기 - git clone한 로컬경로 복붙&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;799&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8CNJ6/btsIqTxDqg9/PUxH2EOKMf2x81FQAjuQJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8CNJ6/btsIqTxDqg9/PUxH2EOKMf2x81FQAjuQJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8CNJ6/btsIqTxDqg9/PUxH2EOKMf2x81FQAjuQJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8CNJ6%2FbtsIqTxDqg9%2FPUxH2EOKMf2x81FQAjuQJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;981&quot; height=&quot;799&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;799&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. git 수동 commit&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;.gitignore에 .obsidian 폴더 추가하기&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;obsidian 설정파일들이 들어가 있는데 이걸 추가 안하면 충돌이 아주~ 많이 날것이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;git&amp;nbsp;add&amp;nbsp;.&lt;br /&gt;git&amp;nbsp;commit&amp;nbsp;-m&amp;nbsp;&quot;first&amp;nbsp;commit&quot;&lt;br /&gt;git&amp;nbsp;branch&amp;nbsp;-M&amp;nbsp;master&lt;br /&gt;git remote add origin &amp;lt;repository url&amp;gt;&lt;br /&gt;git&amp;nbsp;push&amp;nbsp;-u&amp;nbsp;origin&amp;nbsp;master&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이후 수동커밋을 원한다면 ctrl + p를 누르고 git을 검색하여 commit, push &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;809&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l80kg/btsIqBcVZiZ/dlUkOE8CesCvWwJeKk6f01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l80kg/btsIqBcVZiZ/dlUkOE8CesCvWwJeKk6f01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l80kg/btsIqBcVZiZ/dlUkOE8CesCvWwJeKk6f01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl80kg%2FbtsIqBcVZiZ%2FdlUkOE8CesCvWwJeKk6f01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1094&quot; height=&quot;809&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;809&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;auto commit, push, pull 을 세팅하려면 5번부터 진행&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. git 플러그인 설치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽아래 톱니 &amp;gt; community plugins &amp;gt; Browse &amp;gt; git Install&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1153&quot; data-origin-height=&quot;933&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XRJqZ/btsIsJ8aWjT/7dKB6GwXKSKxkrtvfKP4k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XRJqZ/btsIsJ8aWjT/7dKB6GwXKSKxkrtvfKP4k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XRJqZ/btsIsJ8aWjT/7dKB6GwXKSKxkrtvfKP4k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXRJqZ%2FbtsIsJ8aWjT%2F7dKB6GwXKSKxkrtvfKP4k0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1153&quot; height=&quot;933&quot; data-origin-width=&quot;1153&quot; data-origin-height=&quot;933&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Obsidian-Git을 설치하는 블로그가 많았는데, obsidian v1.6.5에선 플러그인 이름이 Git으로 바뀐것같다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이유는 Obsidian-Git과 Git 플러그인 둘다 repository 주소가 똑같음.( &lt;s&gt;Obsidian-Git이 안나와서 삽질한결과...&lt;/s&gt; )&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR04zZ/btsIsJNR47Z/uKpG9KUhFvKAvWxIy6F6sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR04zZ/btsIsJNR47Z/uKpG9KUhFvKAvWxIy6F6sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR04zZ/btsIsJNR47Z/uKpG9KUhFvKAvWxIy6F6sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR04zZ%2FbtsIsJNR47Z%2FuKpG9KUhFvKAvWxIy6F6sk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1143&quot; height=&quot;451&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6. git 플러그인 설정 ( auto &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;push/commit/pull&lt;span&gt; )&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;왼쪽아래 톱니 &amp;gt; community plugins &amp;gt; 설치된 플러그인 활성화&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;595&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JlPHt/btsIseAPatB/N2n5xzsFce605buL2mfZE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JlPHt/btsIseAPatB/N2n5xzsFce605buL2mfZE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JlPHt/btsIseAPatB/N2n5xzsFce605buL2mfZE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJlPHt%2FbtsIseAPatB%2FN2n5xzsFce605buL2mfZE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1134&quot; height=&quot;595&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;595&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git 저장소에 자동으로 커밋하는 설정이 있고 수동으로 커밋해도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git 플러그인 설정(톱니바퀴)에 들어가서 자동 &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;push/commit/pull 설정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;아래 설정은 필요한대로 커스텀 해도 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;새로운 파일이 생성되거나 파일수정을 멈춘상태에서 1분 뒤 commit&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;commit 5분뒤 push&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;10분마다 원격 레파지토리의 최신 변경사항을 pull&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;822&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uNqED/btsIp0YA9Yn/kMhyq87zd7ZhsylBcy8sK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uNqED/btsIp0YA9Yn/kMhyq87zd7ZhsylBcy8sK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uNqED/btsIp0YA9Yn/kMhyq87zd7ZhsylBcy8sK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuNqED%2FbtsIp0YA9Yn%2FkMhyq87zd7ZhsylBcy8sK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;822&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;822&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>program_language 및 궁금한것</category>
      <category>obsidian for window</category>
      <category>obsidian git 플러그인 없음</category>
      <category>obsidian git은 바로 git</category>
      <category>obsidian-git이름변경</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/621</guid>
      <comments>https://jinsiri.tistory.com/621#entry621comment</comments>
      <pubDate>Mon, 8 Jul 2024 22:12:58 +0900</pubDate>
    </item>
    <item>
      <title>kubernetes :: 인증서 갱신 쉽게 하는 방법 v1.28.7</title>
      <link>https://jinsiri.tistory.com/619</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:513,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;12&amp;quot;:0}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;인증서 갱신\n인증서 만료일 확인\nkubeadm certs check-expiration\n2. 만약을 대비한 인증서 백업(개발: 146번 master, 운영: 141번 master 진행)\n\ncp -r /etc/kubernetes /root/k8sbackups\n3. 인증서 갱신\n\nkubeadm certs renew all\n4. 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler재시작\n\nkill -s SIGHUP $(pidof kube-apiserver)\nkill -s SIGHUP $(pidof kube-controller-manager)\nkill -s SIGHUP $(pidof kube-scheduler)\nsystemctl restart kubelet\nsystemctl daemon-reload\nsystemctl restart docker\n5. 인증서 복사\n\ncp /etc/kubernetes/admin.conf /root/.kube/config\n6. 마스터 서버\n\n$ vi /etc/ssh/sshd_config PermitRootLogin yes &amp;lt;&amp;lt; 찾아서 변경\n$ service sshd restart\n7. 나머지 노드에 /root/.kube/config 파일 생성 (master의 admin.conf 참고)\n\n8. 144번 서버( 젠킨스 ) 폴더 복사\n\ndocker cp .kube/config enm_jenkins:/root/.kube\n9. 젠킨스 credentials - kube_credentials 수정&amp;quot;}&quot; data-sheets-root=&quot;1&quot;&gt;kubernetes version 1.28.7&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:513,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;12&amp;quot;:0}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;인증서 갱신\n인증서 만료일 확인\nkubeadm certs check-expiration\n2. 만약을 대비한 인증서 백업(개발: 146번 master, 운영: 141번 master 진행)\n\ncp -r /etc/kubernetes /root/k8sbackups\n3. 인증서 갱신\n\nkubeadm certs renew all\n4. 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler재시작\n\nkill -s SIGHUP $(pidof kube-apiserver)\nkill -s SIGHUP $(pidof kube-controller-manager)\nkill -s SIGHUP $(pidof kube-scheduler)\nsystemctl restart kubelet\nsystemctl daemon-reload\nsystemctl restart docker\n5. 인증서 복사\n\ncp /etc/kubernetes/admin.conf /root/.kube/config\n6. 마스터 서버\n\n$ vi /etc/ssh/sshd_config PermitRootLogin yes &amp;lt;&amp;lt; 찾아서 변경\n$ service sshd restart\n7. 나머지 노드에 /root/.kube/config 파일 생성 (master의 admin.conf 참고)\n\n8. 144번 서버( 젠킨스 ) 폴더 복사\n\ndocker cp .kube/config enm_jenkins:/root/.kube\n9. 젠킨스 credentials - kube_credentials 수정&amp;quot;}&quot; data-sheets-root=&quot;1&quot;&gt;&lt;br /&gt;1. 인증서 만료일 확인&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1715057154027&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubeadm certs check-expiration&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:513,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;12&amp;quot;:0}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;인증서 갱신\n인증서 만료일 확인\nkubeadm certs check-expiration\n2. 만약을 대비한 인증서 백업(개발: 146번 master, 운영: 141번 master 진행)\n\ncp -r /etc/kubernetes /root/k8sbackups\n3. 인증서 갱신\n\nkubeadm certs renew all\n4. 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler재시작\n\nkill -s SIGHUP $(pidof kube-apiserver)\nkill -s SIGHUP $(pidof kube-controller-manager)\nkill -s SIGHUP $(pidof kube-scheduler)\nsystemctl restart kubelet\nsystemctl daemon-reload\nsystemctl restart docker\n5. 인증서 복사\n\ncp /etc/kubernetes/admin.conf /root/.kube/config\n6. 마스터 서버\n\n$ vi /etc/ssh/sshd_config PermitRootLogin yes &amp;lt;&amp;lt; 찾아서 변경\n$ service sshd restart\n7. 나머지 노드에 /root/.kube/config 파일 생성 (master의 admin.conf 참고)\n\n8. 144번 서버( 젠킨스 ) 폴더 복사\n\ndocker cp .kube/config enm_jenkins:/root/.kube\n9. 젠킨스 credentials - kube_credentials 수정&amp;quot;}&quot; data-sheets-root=&quot;1&quot;&gt;&lt;br /&gt;2. 만약을 대비한 인증서 백업&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1715057162020&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cp -r /etc/kubernetes /root/k8sbackups&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:513,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;12&amp;quot;:0}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;인증서 갱신\n인증서 만료일 확인\nkubeadm certs check-expiration\n2. 만약을 대비한 인증서 백업(개발: 146번 master, 운영: 141번 master 진행)\n\ncp -r /etc/kubernetes /root/k8sbackups\n3. 인증서 갱신\n\nkubeadm certs renew all\n4. 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler재시작\n\nkill -s SIGHUP $(pidof kube-apiserver)\nkill -s SIGHUP $(pidof kube-controller-manager)\nkill -s SIGHUP $(pidof kube-scheduler)\nsystemctl restart kubelet\nsystemctl daemon-reload\nsystemctl restart docker\n5. 인증서 복사\n\ncp /etc/kubernetes/admin.conf /root/.kube/config\n6. 마스터 서버\n\n$ vi /etc/ssh/sshd_config PermitRootLogin yes &amp;lt;&amp;lt; 찾아서 변경\n$ service sshd restart\n7. 나머지 노드에 /root/.kube/config 파일 생성 (master의 admin.conf 참고)\n\n8. 144번 서버( 젠킨스 ) 폴더 복사\n\ndocker cp .kube/config enm_jenkins:/root/.kube\n9. 젠킨스 credentials - kube_credentials 수정&amp;quot;}&quot; data-sheets-root=&quot;1&quot;&gt;&lt;br /&gt;3. 인증서 갱신&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1715057170593&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubeadm certs renew all&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:513,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;12&amp;quot;:0}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;인증서 갱신\n인증서 만료일 확인\nkubeadm certs check-expiration\n2. 만약을 대비한 인증서 백업(개발: 146번 master, 운영: 141번 master 진행)\n\ncp -r /etc/kubernetes /root/k8sbackups\n3. 인증서 갱신\n\nkubeadm certs renew all\n4. 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler재시작\n\nkill -s SIGHUP $(pidof kube-apiserver)\nkill -s SIGHUP $(pidof kube-controller-manager)\nkill -s SIGHUP $(pidof kube-scheduler)\nsystemctl restart kubelet\nsystemctl daemon-reload\nsystemctl restart docker\n5. 인증서 복사\n\ncp /etc/kubernetes/admin.conf /root/.kube/config\n6. 마스터 서버\n\n$ vi /etc/ssh/sshd_config PermitRootLogin yes &amp;lt;&amp;lt; 찾아서 변경\n$ service sshd restart\n7. 나머지 노드에 /root/.kube/config 파일 생성 (master의 admin.conf 참고)\n\n8. 144번 서버( 젠킨스 ) 폴더 복사\n\ndocker cp .kube/config enm_jenkins:/root/.kube\n9. 젠킨스 credentials - kube_credentials 수정&amp;quot;}&quot; data-sheets-root=&quot;1&quot;&gt;&lt;br /&gt;4. 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler재시작&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1715057245253&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kill -s SIGHUP $(pidof kube-apiserver)
kill -s SIGHUP $(pidof kube-controller-manager)
kill -s SIGHUP $(pidof kube-scheduler)
systemctl restart kubelet
systemctl daemon-reload
systemctl restart containerd.service&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:513,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;12&amp;quot;:0}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;인증서 갱신\n인증서 만료일 확인\nkubeadm certs check-expiration\n2. 만약을 대비한 인증서 백업(개발: 146번 master, 운영: 141번 master 진행)\n\ncp -r /etc/kubernetes /root/k8sbackups\n3. 인증서 갱신\n\nkubeadm certs renew all\n4. 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler재시작\n\nkill -s SIGHUP $(pidof kube-apiserver)\nkill -s SIGHUP $(pidof kube-controller-manager)\nkill -s SIGHUP $(pidof kube-scheduler)\nsystemctl restart kubelet\nsystemctl daemon-reload\nsystemctl restart docker\n5. 인증서 복사\n\ncp /etc/kubernetes/admin.conf /root/.kube/config\n6. 마스터 서버\n\n$ vi /etc/ssh/sshd_config PermitRootLogin yes &amp;lt;&amp;lt; 찾아서 변경\n$ service sshd restart\n7. 나머지 노드에 /root/.kube/config 파일 생성 (master의 admin.conf 참고)\n\n8. 144번 서버( 젠킨스 ) 폴더 복사\n\ndocker cp .kube/config enm_jenkins:/root/.kube\n9. 젠킨스 credentials - kube_credentials 수정&amp;quot;}&quot; data-sheets-root=&quot;1&quot;&gt;&lt;br /&gt;5. 인증서 복사&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1715057256947&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cp /etc/kubernetes/admin.conf /root/.kube/config&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-sheets-userformat=&quot;{&amp;quot;2&amp;quot;:513,&amp;quot;3&amp;quot;:{&amp;quot;1&amp;quot;:0},&amp;quot;12&amp;quot;:0}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;인증서 갱신\n인증서 만료일 확인\nkubeadm certs check-expiration\n2. 만약을 대비한 인증서 백업(개발: 146번 master, 운영: 141번 master 진행)\n\ncp -r /etc/kubernetes /root/k8sbackups\n3. 인증서 갱신\n\nkubeadm certs renew all\n4. 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler재시작\n\nkill -s SIGHUP $(pidof kube-apiserver)\nkill -s SIGHUP $(pidof kube-controller-manager)\nkill -s SIGHUP $(pidof kube-scheduler)\nsystemctl restart kubelet\nsystemctl daemon-reload\nsystemctl restart docker\n5. 인증서 복사\n\ncp /etc/kubernetes/admin.conf /root/.kube/config\n6. 마스터 서버\n\n$ vi /etc/ssh/sshd_config PermitRootLogin yes &amp;lt;&amp;lt; 찾아서 변경\n$ service sshd restart\n7. 나머지 노드에 /root/.kube/config 파일 생성 (master의 admin.conf 참고)\n\n8. 144번 서버( 젠킨스 ) 폴더 복사\n\ndocker cp .kube/config enm_jenkins:/root/.kube\n9. 젠킨스 credentials - kube_credentials 수정&amp;quot;}&quot; data-sheets-root=&quot;1&quot;&gt;&lt;br /&gt;6. 나머지 노드에 /root/.kube/config 파일 생성 (master의 admin.conf 참고)&lt;br /&gt;&lt;br /&gt;etc. 젠킨스에서 config 사용시파일 옮겨주기&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;gtx-trans&quot; style=&quot;position: absolute; left: 190px; top: 418.094px;&quot;&gt;
&lt;div class=&quot;gtx-trans-icon&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>program_language 및 궁금한것/kubernetes</category>
      <category>kubeadm certs renew all</category>
      <category>kubeadm renew</category>
      <category>kubernetes 인증서 갱신</category>
      <category>쿠베인증서갱신</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/619</guid>
      <comments>https://jinsiri.tistory.com/619#entry619comment</comments>
      <pubDate>Tue, 7 May 2024 13:50:26 +0900</pubDate>
    </item>
    <item>
      <title>k8s :: Errors during downloading metadata for repository 'kubernetes' error 해결법</title>
      <link>https://jinsiri.tistory.com/618</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;회사에서 yum install 사용시 아래와 같은 에러가 났다.&lt;/p&gt;
&lt;pre id=&quot;code_1713403888456&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Kubernetes                                                                                                                                                                                          3.0 kB/s | 1.4 kB     00:00    
Errors during downloading metadata for repository 'kubernetes':
  - Status code: 404 for https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml (IP: 142.251.42.142)
오류: repo를 위한 메타자료 내려받기에 실패하였습니다 'kubernetes': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;404가 내려오는걸보니 yum 통신은 되는것같은데, 왜 쿠버네티스 에러가 날까 하여 찾아보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;범인은 두둥.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bare metal kubernetes를 설치하면서 등록했던 kubernetes repository를 찾을수 없어서 였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubernetes.io/blog/2023/08/31/legacy-package-repository-deprecation/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;쿠버네티스 공홈&lt;/a&gt; 에 24.03.04부터 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;apt.kubernetes.io&lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;and&amp;nbsp;&lt;/span&gt;&lt;/span&gt;yum.kubernetes.io&lt;/b&gt;&lt;/span&gt; 에 대한 지원을 중단하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;pkgs.k8s.io&lt;/b&gt;&lt;/span&gt;를 지원한다... 는 문구를 볼 수 있다.&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #fefeb8; border: #f3c534 3px double; padding: 10px;&quot;&gt;On&amp;nbsp;August&amp;nbsp;15,&amp;nbsp;2023,&amp;nbsp;the&amp;nbsp;Kubernetes&amp;nbsp;project&amp;nbsp;announced&amp;nbsp;the&amp;nbsp;general&amp;nbsp;availability&amp;nbsp;of&amp;nbsp;the&amp;nbsp;community-owned&amp;nbsp;package&amp;nbsp;repositories&amp;nbsp;for&amp;nbsp;Debian&amp;nbsp;and&amp;nbsp;RPM&amp;nbsp;packages&amp;nbsp;available&amp;nbsp;at&amp;nbsp;pkgs.k8s.io.&amp;nbsp;The&amp;nbsp;new&amp;nbsp;package&amp;nbsp;repositories&amp;nbsp;are&amp;nbsp;replacement&amp;nbsp;for&amp;nbsp;the&amp;nbsp;legacy&amp;nbsp;Google-hosted&amp;nbsp;package&amp;nbsp;repositories:&amp;nbsp;apt.kubernetes.io&amp;nbsp;and&amp;nbsp;yu&lt;a href=&quot;http://m.kubernetes.io.&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://m.kubernetes.io.&lt;/a&gt;&amp;nbsp;The&amp;nbsp;announcement&amp;nbsp;blog&amp;nbsp;post&amp;nbsp;for&amp;nbsp;pkgs.k8s.io&amp;nbsp;highlighted&amp;nbsp;that&amp;nbsp;we&amp;nbsp;will&amp;nbsp;stop&amp;nbsp;publishing&amp;nbsp;packages&amp;nbsp;to&amp;nbsp;the&amp;nbsp;legacy&amp;nbsp;repositories&amp;nbsp;in&amp;nbsp;the&amp;nbsp;future. &lt;br /&gt;&lt;br /&gt;Today,&amp;nbsp;we're&amp;nbsp;formally&amp;nbsp;deprecating&amp;nbsp;the&amp;nbsp;legacy&amp;nbsp;package&amp;nbsp;repositories&amp;nbsp;(apt.kubernetes.io&amp;nbsp;and&amp;nbsp;yu&lt;a href=&quot;http://m.kubernetes.io),&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://m.kubernetes.io),&lt;/a&gt;&amp;nbsp;and&amp;nbsp;we're&amp;nbsp;announcing&amp;nbsp;our&amp;nbsp;plans&amp;nbsp;to&amp;nbsp;freeze&amp;nbsp;the&amp;nbsp;contents&amp;nbsp;of&amp;nbsp;the&amp;nbsp;repositories&amp;nbsp;as&amp;nbsp;of&amp;nbsp;September&amp;nbsp;13,&amp;nbsp;2023. &lt;br /&gt;&lt;br /&gt;Please&amp;nbsp;continue&amp;nbsp;reading&amp;nbsp;in&amp;nbsp;order&amp;nbsp;to&amp;nbsp;learn&amp;nbsp;what&amp;nbsp;does&amp;nbsp;this&amp;nbsp;mean&amp;nbsp;for&amp;nbsp;you&amp;nbsp;as&amp;nbsp;an&amp;nbsp;user&amp;nbsp;or&amp;nbsp;distributor,&amp;nbsp;and&amp;nbsp;what&amp;nbsp;steps&amp;nbsp;you&amp;nbsp;may&amp;nbsp;need&amp;nbsp;to&amp;nbsp;take. &lt;br /&gt;&lt;br /&gt;ℹ️&amp;nbsp;Update&amp;nbsp;(March&amp;nbsp;26,&amp;nbsp;2024):&amp;nbsp;the&amp;nbsp;legacy&amp;nbsp;Google-hosted&amp;nbsp;repositories&amp;nbsp;went&amp;nbsp;away&amp;nbsp;on&amp;nbsp;March&amp;nbsp;4,&amp;nbsp;2024.&amp;nbsp;It's&amp;nbsp;not&amp;nbsp;possible&amp;nbsp;to&amp;nbsp;install&amp;nbsp;Kubernetes&amp;nbsp;packages&amp;nbsp;from&amp;nbsp;the&amp;nbsp;legacy&amp;nbsp;Google-hosted&amp;nbsp;package&amp;nbsp;repositories&amp;nbsp;any&amp;nbsp;longer.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt; /etc/yum.repos.d/kubernetes.repo 파일을 수정해주자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;a href=&quot;https://kubernetes.io/blog/2023/08/15/pkgs-k8s-io-introduction/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;쿠버네티스 공홈 os별 repo&lt;/a&gt; 를 참고하면된다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;나는 CentOS, Fedora, RHEL에 해당하여 아래와 같이 수정하여 정상작동하는것을 확인했다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1713413148373&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cat &amp;lt;&amp;lt;EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>program_language 및 궁금한것/kubernetes</category>
      <category>Errors during downloading metadata for repository 'kubernetes'</category>
      <category>k8s repo</category>
      <category>kubernetes repo</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/618</guid>
      <comments>https://jinsiri.tistory.com/618#entry618comment</comments>
      <pubDate>Thu, 18 Apr 2024 22:09:12 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins :: stage view 배포한 브랜치 보이기</title>
      <link>https://jinsiri.tistory.com/616</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;jenkins에서 multi 브랜치를 사용하는데 어느브랜치에서 배포되었는지 stage view에서 볼수가 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상세화면에 들어가서 조회하기를 몇달째, build history에 배포한 브랜치명을 보여줄수 있게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시도한 방법은 두가지 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Build Name and Description Setter 플러그인을 설치한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 해당 플러그인은 jenkins 2.4.2버전에 최적화 되있음으로 내가 사용하는 jenkins &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;2.440.2 버전에선 사용불가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. pipeline에서 값을 셋팅 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;${branch}는 젠킨스 실행시 선택된 branch값이 담길것이고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;currentBuild.displayName&amp;nbsp;=&amp;nbsp;&quot;#&quot;+&lt;span style=&quot;color: #006dd7;&quot;&gt;currentBuild.number&lt;/span&gt;+&quot;:&amp;nbsp;&quot;+&lt;span style=&quot;color: #8a3db6;&quot;&gt;CURRENT_BRANCH_NAME&lt;/span&gt;는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#&lt;span style=&quot;color: #006dd7;&quot;&gt;633&lt;/span&gt;: &lt;span style=&quot;color: #8a3db6;&quot;&gt;stage&lt;/span&gt; 와 같이 출력될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 Set branch name 이라는 stage를 따로 둘 필요없이 기존 pipeline 동작하는 곳에 script만 추가하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1713330550036&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pipeline {
agent {any}
    environment {
        CURRENT_BRANCH_NAME = &quot;${branch}&quot;
    }
    stages {
        stage('Set branch name') {
            steps {
                script{
                    currentBuild.displayName = &quot;#&quot;+currentBuild.number+&quot;: &quot;+CURRENT_BRANCH_NAME
                }
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번의 pipeline에서 build history 출력 포멧을 조정함으로 해결하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;1314&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6jXa9/btsGFkjY2e3/FBReKK1j6NLTDNOgX78el0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6jXa9/btsGFkjY2e3/FBReKK1j6NLTDNOgX78el0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6jXa9/btsGFkjY2e3/FBReKK1j6NLTDNOgX78el0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6jXa9%2FbtsGFkjY2e3%2FFBReKK1j6NLTDNOgX78el0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1314&quot; height=&quot;496&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;1314&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고한 &lt;a href=&quot;https://stackoverflow.com/questions/28305450/how-to-go-about-seeing-the-branch-name-of-builds-in-the-build-history-view-of-je&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;stack overflow&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>program_language 및 궁금한것/젠킨슨씨 안녕?</category>
      <category>jenkins branch 출력</category>
      <category>jenkins build history branch</category>
      <category>jenkins stage view branch</category>
      <category>jenkins에서 build branch 보이기</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/616</guid>
      <comments>https://jinsiri.tistory.com/616#entry616comment</comments>
      <pubDate>Wed, 17 Apr 2024 19:48:58 +0900</pubDate>
    </item>
    <item>
      <title>DB 비번을 숨겨라! + spring boot, Jenknis</title>
      <link>https://jinsiri.tistory.com/615</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;우리 회사는 DB서버가 여러대입니다. 하지만 모두 하나의 비밀번호를 사용하는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;resources.yml에서 비밀번호를 하나씩 변경하다보니 실수가 일어나 변수를 받아 비밀번호를 설정하도록 변경했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 내년에 있을 ISMS를 대비하여 DB 비밀번호를 소스에서 안보이게 처리해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 생각했던 방법들과 적용한 것을 설명드리려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편의를 위해 반말로 작성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방안1. config server 구성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;config server를 띄워 비밀번호를 따로 관리할수 있지만, 서버 관리 이슈가 생기고, 설정정보 변경 전파를 위해 spring cloud bus 까지 설정하게 되면 관리이슈의 부담은 더욱 커진다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MSA구조라면 고려해볼만한 방법이나, monolithic 이라면 굳이 config sever를 따로 두는 효용보다 비용이 클것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0fWci/btsDBv8CdeW/oueKgv5Exp8vXVGc4p50q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0fWci/btsDBv8CdeW/oueKgv5Exp8vXVGc4p50q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0fWci/btsDBv8CdeW/oueKgv5Exp8vXVGc4p50q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0fWci%2FbtsDBv8CdeW%2FoueKgv5Exp8vXVGc4p50q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1110&quot; height=&quot;410&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방안2. kubernetes secret&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kubernetes의 secret으로 DB 비번과 같은 민감정보를 관리할수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;secret을 사용하고 싶었지만, jenkins에서 CI/CD시에 gradle build -&amp;gt; docker build -&amp;gt; kubectl apply를 진행하게 되는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gradle build시에 test코드 동작시에 DB 비밀번호가 필요한데 kubernetes secret을 알 수가 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 CI때 주입을 할수 있는방법이 뭐가 있을까 생각하다보니...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방안3. Gitlab secret&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gitlab의 secret값을 설정하고 action으로 CI/CD를 할때 secret을 가져다 쓸수가 있다. 이도 좋은 방법이나.. 우리 회사는 Jenkins를 사용한다. 그러므로 패쓰~~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;방안4. Jenkins Secret&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Jenkins에서 Credentials를 사용한다는 사실이 기억났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;credential의 kind를 secret text로 설정하면 jenkins서버에 AES로 암호화 되어 저장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Jenkins CI/CD시에 secret을 주입시켜주면 테스트 코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;390&quot;&gt;&lt;a href=&quot;https://www.jenkins.io/security/advisory/2017-02-01/#use-of-aes-ecb-block-cipher-mode-without-iv-for-encrypting-secrets&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l0DgL/btsDxMKSS1e/WnPMZ2A82113j1rf9z8e91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl0DgL%2FbtsDxMKSS1e%2FWnPMZ2A82113j1rf9z8e91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1056&quot; height=&quot;390&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/a&gt;&lt;figcaption&gt;jenkins 공홈&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론은 방안 4를 채택하게 되었다. test code 정상동작, application 정상동작, 추후 비번 변경시 jenkins secret만 변경하여 재배포해주면 되는것으로 마무리 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 문제를 해결하기 위해선 다양한 방법이 존재하고 각 상황에 맞는 방법을 선택하는게 중요한것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새해 첫 포스팅 끝.&lt;/p&gt;</description>
      <category>program_language 및 궁금한것/젠킨슨씨 안녕?</category>
      <category>db비번숨기기</category>
      <category>springboot 민감정보</category>
      <category>springbootdb</category>
      <category>springbootdb비번숨기기</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/615</guid>
      <comments>https://jinsiri.tistory.com/615#entry615comment</comments>
      <pubDate>Wed, 17 Jan 2024 19:30:05 +0900</pubDate>
    </item>
    <item>
      <title>kubeadm init error - kubelet nodes not found</title>
      <link>https://jinsiri.tistory.com/614</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2주 정도를 이 에러를 찾아 헤메였습니다.&lt;br&gt;&amp;nbsp;&lt;br&gt;kubeadm init을 할때 나는 &quot;nodes not found&quot; 제 서버의 hostname을 못찾는다는 에러였죠..&lt;br&gt;치열하게 구글에 검색도 해보았지만.. 원하는 답은 찾을 수 없었습니다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIXwur/btssHCDAVXF/VBnGVZkIbkdNk2uAQgRh40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIXwur/btssHCDAVXF/VBnGVZkIbkdNk2uAQgRh40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIXwur/btssHCDAVXF/VBnGVZkIbkdNk2uAQgRh40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIXwur%2FbtssHCDAVXF%2FVBnGVZkIbkdNk2uAQgRh40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;770&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;770&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론은 kubeadm reset, init을 반복하며 kubelet 설정이 꼬인 문제였습니다.&lt;br&gt;&amp;nbsp;&lt;br&gt;에러 발생부터 해결까지 과정은 아래와 같습니다&lt;br&gt;&amp;nbsp;&lt;br&gt;kubernetes 셋팅을 하면서 kubeadm reset과 init을 반복했었습니다. external etcd 설정도 추가보구요.&lt;br&gt;처음 몇번은 잘 동작되어 join 문구까지 나왔는데 어느순간(?) 아래와 같은 에러가 납니다.&lt;br&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;error execution phase upload-config/kubelet: Error writing Crisocket information for the control-plane node &quot;host명&quot; not found&lt;/b&gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;--v=5 옵션을 줘서 더 자세히 보면... kubelet쪽에서 node를 못찾는것 같습니다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;그래서 제가 했던 작업은..&lt;br&gt;&amp;nbsp;&lt;br&gt;hostname이 제대로 설정되어 있는지 체크&lt;br&gt;hostname 소문자로 변경&lt;br&gt;containerd cgroup 설정 체크&lt;br&gt;cgroup2 설정 체크...&lt;br&gt;containerd, kubelet log 보기 등&lt;br&gt;&amp;nbsp;&lt;br&gt;삽질만 열심히 했습니다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;그러던중&lt;br&gt;&lt;b&gt;systemctl status kubelet&lt;/b&gt;을 조회하며 이상한 점을 발견했습니다.&lt;br&gt;다른 블로그 글을 보면 아래와 같이 Drop-In이 /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 하나로 잡혀있고&lt;br&gt;CGroup설정도 제대로 되어 있었습니다.&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt; kubelet.service - kubelet: The Kubernetes Node Agent
&amp;nbsp;&amp;nbsp; Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
&amp;nbsp;&amp;nbsp;Drop-In: /usr/lib/systemd/system/kubelet.service.d
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; └─10-kubeadm.conf
&amp;nbsp;&amp;nbsp; Active: active (running) since Mon 2022-02-28 19:43:49 EST; 5h 42min ago
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Docs: https://kubernetes.io/docs/
 Main PID: 91537 (kubelet)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tasks: 14 (limit: 23812)
&amp;nbsp;&amp;nbsp; Memory: 50.6M
&amp;nbsp;&amp;nbsp; CGroup: /system.slice/kubelet.service
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; └─91537 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubecon&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;하지만 제 kubelet은 Drop-In이 두개파일을 참조하게 되어 있는데다가 CGrop도 뭔가 달랐습니다.&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
/etc/systemd/system/kubelet.service.d
└─20-etcd-service-manager.conf
Active: active (running) since Thu 2023-08-31 10:56:16 KST; 6min ago
Docs: https://kubernetes.io/docs/
Main PID: 114150 (kubelet)
Tasks: 40 (limit: 408104)
Memory: 49.2M
CGroup: /system.slice/kubelet.service
└─114150 /usr/bin/kubelet --address=127.0.0.1 --pod-manifest-path=/etc/kubernetes/manifests --cgroup-driver=systemd&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;systemctl cat kubelet로 조회해보니 총 3개 파일이 나오더라구요. 정상적이라면 2개가 나와야 하는데 말이죠.&lt;br&gt;&amp;nbsp;&lt;br&gt;찾아보니 /etc/systemd/system/kubelet.service.d/ 폴더 하위의 파일들은 우선순위가 높아서 이 파일이 적용 된다고 합니다.&lt;br&gt;그래서 10-kubeadm.conf파일 대신 20-etcd-service-manager.conf파일이 적용된 것이죠.&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;systemctl cat kubelet

# /usr/lib/systemd/system/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target

# /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
# Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment=&quot;KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf&quot;
Environment=&quot;KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml&quot;
# This is a file that &quot;kubeadm init&quot; and &quot;kubeadm join&quot; generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS

# /etc/systemd/system/kubelet.service.d/20-etcd-service-manager.conf
[Service]
Environment=&quot;KUBELET_CGROUP_ARGS=--cgroup-driver=systemd&quot;
ExecStart=
#&amp;nbsp;&amp;nbsp;Replace &quot;systemd&quot; with the cgroup driver of your container runtime. The default value in the kubelet is &quot;cgroupfs&quot;.
ExecStart=/usr/bin/kubelet --address=127.0.0.1 --pod-manifest-path=/etc/kubernetes/manifests --cgroup-driver=systemd
Restart=always&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;20-etcd-service-manager.conf 파일을 삭제해주고 kubelet 재시작을 해줬습니다.&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;rm -rf 20-etcd-service-manager.conf

systemctl daemon-reload
systemctl restart kubelet
systemctl status kubelet&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl status kubelet으로 조회하니 정상 출력되는것을 확인 후 &amp;nbsp;kubeadm reset, init을 진행하니 정상적으로 동작하였습니다.&lt;br&gt;&amp;nbsp;&lt;br&gt;2주묵은 체증이 내려갔군요. 후우..&lt;/p&gt;</description>
      <category>program_language 및 궁금한것/kubernetes</category>
      <category>error execution phase upload-config/kubelet: Error writing Crisocket information for the control-plane node &amp;quot;host명&amp;quot; not found</category>
      <author>jinsiri</author>
      <guid isPermaLink="true">https://jinsiri.tistory.com/614</guid>
      <comments>https://jinsiri.tistory.com/614#entry614comment</comments>
      <pubDate>Thu, 31 Aug 2023 20:03:58 +0900</pubDate>
    </item>
  </channel>
</rss>