<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>아주조코</title>
    <link>https://code1212-uh.tistory.com/</link>
    <description>피땀눈물의 삽질기</description>
    <language>ko</language>
    <pubDate>Tue, 26 May 2026 22:49:47 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>uuuhhh</managingEditor>
    <image>
      <title>아주조코</title>
      <url>https://tistory1.daumcdn.net/tistory/4909380/attach/dcafaa9d4e674c47bbab48ada96365bf</url>
      <link>https://code1212-uh.tistory.com</link>
    </image>
    <item>
      <title>sudo 권한 부여</title>
      <link>https://code1212-uh.tistory.com/81</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;sudo&lt;/b&gt; : 일반 사용자가 일시적으로 root 관리자 권한을 얻는 명령어&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위 sudo 명령어를 일반 사용자가 사용하기 위한 방법
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;/etc/sudoers&lt;/b&gt; 파일에 일반 사용자 / 그룹이 등록되어 있어야 한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;83&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCWSjR/btrXnH32O2D/yD0xj6gdwiwy60L8yTYiS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCWSjR/btrXnH32O2D/yD0xj6gdwiwy60L8yTYiS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCWSjR/btrXnH32O2D/yD0xj6gdwiwy60L8yTYiS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCWSjR%2FbtrXnH32O2D%2FyD0xj6gdwiwy60L8yTYiS1%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;362&quot; height=&quot;39&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;83&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;/etc/sudoers&lt;/b&gt; 파일은 &lt;b&gt;readonly 속성&lt;/b&gt;을 가지고 있어 편집하기 위한 두가지 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;sudoers 파일 관리 application 사용 &lt;b&gt;&amp;rarr; &lt;span style=&quot;color: #006dd7;&quot;&gt;추천 (문법 및 적합성 검사도 해줌 !)&lt;/span&gt;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;visudo -f /etc/sudoers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;편집 권한 변경 및 부여 &lt;b&gt;&amp;rarr; &lt;span style=&quot;color: #ee2323;&quot;&gt;추천 안함 (권한 회수를 깜빡할 수 도 있기 때문 !)&lt;/span&gt;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;chmod u+x /etc/sudoers&lt;/li&gt;
&lt;li&gt;chmod 640 /etc/sudoers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;883&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbvp8K/btrXm9tdMSG/DNEvK2sZTmcTXHn1RQ1tnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbvp8K/btrXm9tdMSG/DNEvK2sZTmcTXHn1RQ1tnk/img.png&quot; data-alt=&quot;파일 안에서도 visudo를 권장(?)한다고 말하네여,,&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbvp8K/btrXm9tdMSG/DNEvK2sZTmcTXHn1RQ1tnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbvp8K%2FbtrXm9tdMSG%2FDNEvK2sZTmcTXHn1RQ1tnk%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;525&quot; height=&quot;403&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;883&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파일 안에서도 visudo를 권장(?)한다고 말하네여,,&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;sudoers 파일 하단에 sudo 권한을 부여할 설정을 작성한다.&lt;/li&gt;
&lt;li&gt;sudo 명령어를 처음 사용할 시 비밀번호를 입력해줘야함
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이를 생략할 수 있는 옵션&lt;b&gt;(NOPASSWD)&lt;/b&gt; 설정가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;# 특정 사용자에게 sudo 사용 권한 부여
# username ALL=(ALL) ALL
daniel ALL=(ALL) ALL

# 그룹에 포함된 모든 사용자에게 sudo 사용 권한 부여
# %groupname ALL=(ALL) ALL
%student ALL=(ALL) ALL

# 패스워드 생략 설정
# username ALL=(ALL) NOPASSWD: ALL
tom ALL=(ALL) NOPASSWD: ALL
%adult ALL=(ALL) NOPASSWD: ALL&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ref.&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://passwd.tistory.com/entry/%EC%9D%BC%EB%B0%98-%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%EA%B2%8C-sudo-%EA%B6%8C%ED%95%9C-%EB%B6%80%EC%97%AC&quot;&gt;일반 사용자에게 sudo 권한 부여&lt;/a&gt;&lt;/p&gt;</description>
      <category>OS/Linux</category>
      <category>Linux</category>
      <category>permission</category>
      <category>sudo</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/81</guid>
      <comments>https://code1212-uh.tistory.com/81#entry81comment</comments>
      <pubDate>Sat, 28 Jan 2023 18:31:06 +0900</pubDate>
    </item>
    <item>
      <title>ArgoCD Manage Secrets</title>
      <link>https://code1212-uh.tistory.com/79</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Epilogue&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DB Pod 매니페스트 파일 정의 다하고..&lt;/li&gt;
&lt;li&gt;MySQL 시크릿도 다 정의해주고..&lt;/li&gt;
&lt;li&gt;namespace 안에 apply로 적용을 다 한 상태에서..&lt;/li&gt;
&lt;li&gt;argoCD로 배포만 하면 되는데..&lt;/li&gt;
&lt;li&gt;왜 Sync failed로 인해서 에러가 발생하는 것일까.. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfaR3C/btrTGmiVg4q/6qgkaPOaVBjAmS2SgZUJT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfaR3C/btrTGmiVg4q/6qgkaPOaVBjAmS2SgZUJT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfaR3C/btrTGmiVg4q/6qgkaPOaVBjAmS2SgZUJT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfaR3C%2FbtrTGmiVg4q%2F6qgkaPOaVBjAmS2SgZUJT0%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;715&quot; height=&quot;389&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;629&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;에러 로그 탐색 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duBEXn/btrTKlcainh/5iDBWoQ81k4bx3dM4Zm94K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duBEXn/btrTKlcainh/5iDBWoQ81k4bx3dM4Zm94K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duBEXn/btrTKlcainh/5iDBWoQ81k4bx3dM4Zm94K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduBEXn%2FbtrTKlcainh%2F5iDBWoQ81k4bx3dM4Zm94K%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;771&quot; height=&quot;139&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;231&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유효하지 않는 데이터 에러
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Deployment.spec.template.spec.containers[1]..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;위 변수는 다음과 같은 secret을 참조하는 데이터다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;...
- name: MYSQL_USER
        valueFrom:
          secretKeyRef:
            name: mysql-secret
            key: username
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 시크릿에 대한 문제인 것을 확인하였다.&lt;/li&gt;
&lt;li&gt;결론은 시크릿과 매니페스트 데이터 매칭을 제대로 설정하지 않아서 생긴 오류였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이슈 해결 후 secret 리소스만 따로 관리하는 것이 마음에 안 들기 시작했다..&lt;/li&gt;
&lt;li&gt;github repo에 secret 파일을 같이 올려서 argoCD를 통해 배포 후 관리하면 편하지 않을까?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;말도 안 되는 소리..&lt;/b&gt;&lt;/span&gt;❗️&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;github와 같은 public한 공간에는 절대 절대 절대로 secret 파일을 올리는 건 안된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;왜냐하면..&lt;/b&gt;&lt;/span&gt;❓&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공개가 되어선 매우 치명적인 데이터를 숨기고자 생성하고 사용하는 secret 파일을 모두가 볼 수 있는 공간에 업로드한다는 것은 secret의 의미가 퇴색되도록 만드는 것이기 때문이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;그럼 무슨 방법이..&lt;/b&gt;&lt;/span&gt;❓&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ArgoCD 자체에서 secret을 관리할 수 있는 방법은 없다.&lt;/li&gt;
&lt;li&gt;외부 Tools을 사용하는 등.. 다른 솔루션으로 해결해야 한다.&lt;/li&gt;
&lt;li&gt;ArgoCD 공식 Doc에서 소개하는 방법 중 제일 간편하고 따라 하기 쉬운 것을 소개하고자 한다.&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ ArgoCD로 Secret 관리하기&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그건 바로 바로..&lt;/li&gt;
&lt;li&gt;Beatnami의 sealed-secrets 오픈소스를 사용해서 secret을 한 번 더 암호화하는 방법을 소개해본다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1671091366680&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - bitnami-labs/sealed-secrets: A Kubernetes controller and tool for one-way encrypted Secrets&quot; data-og-description=&quot;A Kubernetes controller and tool for one-way encrypted Secrets - GitHub - bitnami-labs/sealed-secrets: A Kubernetes controller and tool for one-way encrypted Secrets&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/bitnami-labs/sealed-secrets&quot; data-og-url=&quot;https://github.com/bitnami-labs/sealed-secrets&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Jk2BP/hyQUWYHOv3/HK3eKk4SqwmqvVqfrLV4Y0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/bitnami-labs/sealed-secrets&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/bitnami-labs/sealed-secrets&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Jk2BP/hyQUWYHOv3/HK3eKk4SqwmqvVqfrLV4Y0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - bitnami-labs/sealed-secrets: A Kubernetes controller and tool for one-way encrypted Secrets&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A Kubernetes controller and tool for one-way encrypted Secrets - GitHub - bitnami-labs/sealed-secrets: A Kubernetes controller and tool for one-way encrypted Secrets&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;sealed-secrets은 두 가지 구조로 동작한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;cluster-side&lt;/b&gt;의 controller / operator
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;seal-secrets-controller&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;client-side&lt;/b&gt;의 tool
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kubeseal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;동작 프로세스&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;649&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbt3I0/btrTGZHH3ii/ILM964UVsBL227F9iiybeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbt3I0/btrTGZHH3ii/ILM964UVsBL227F9iiybeK/img.png&quot; data-alt=&quot;출처 : https://coffeewhale.com/sealedsecret&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbt3I0/btrTGZHH3ii/ILM964UVsBL227F9iiybeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbt3I0%2FbtrTGZHH3ii%2FILM964UVsBL227F9iiybeK%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;714&quot; height=&quot;371&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;649&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : https://coffeewhale.com/sealedsecret&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;client-side&lt;/b&gt;의 tool인 kubeseal은 &lt;span style=&quot;color: #ee2323;&quot;&gt;public key&lt;/span&gt;를 보유 중이며 &lt;u&gt;k8s secret&lt;/u&gt;을 &lt;b&gt;암호화&lt;/b&gt;한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;암호화&lt;/b&gt; : Secret &amp;rarr; SealedSecret&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;git repository에 업로드를 하더라도 그 누구도 복호화할 수 없다.&lt;/li&gt;
&lt;li&gt;GitOps Operator(e.g. ArgoCD)로 인해 k8s 클러스터로 배포한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;cluster-side&lt;/b&gt;의 controller / operator는 &lt;span style=&quot;color: #ee2323;&quot;&gt;private key&lt;/span&gt;를 보유중이며 암호화한 k8s secret을 &lt;b&gt;복호화&lt;/b&gt;한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;복호화&lt;/b&gt; : SealedSecret &amp;rarr; Secret&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ kubeseal 설치&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ brew install kubeseal&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEXWRi/btrTIsbMOOz/49jgxMQpVBWkL9AnnoaRp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEXWRi/btrTIsbMOOz/49jgxMQpVBWkL9AnnoaRp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEXWRi/btrTIsbMOOz/49jgxMQpVBWkL9AnnoaRp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEXWRi%2FbtrTIsbMOOz%2F49jgxMQpVBWkL9AnnoaRp1%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;662&quot; height=&quot;97&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;183&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ helm install sealed-secrets -n kube-system sealed-secrets/sealed-secrets&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt; &amp;nbsp;namespace는 kube-system에 지정하여 설치해줘야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1046&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yA2jX/btrTJM2bhlr/azyNi6G7gGLnmyBTv7v151/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yA2jX/btrTJM2bhlr/azyNi6G7gGLnmyBTv7v151/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yA2jX/btrTJM2bhlr/azyNi6G7gGLnmyBTv7v151/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyA2jX%2FbtrTJM2bhlr%2FazyNi6G7gGLnmyBTv7v151%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;647&quot; height=&quot;529&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1046&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;⚠️&amp;nbsp;주의사항&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;헬름 차트는 기본적으로 컨트롤러 이름을&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;sealed-secrets로&lt;/span&gt; 설치한다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;kubeseal&lt;/span&gt; CLI는 기본적으로 &lt;span style=&quot;color: #ee2323;&quot;&gt;sealed-secrets-controller&lt;/span&gt;의 이름을 가진 컨트롤러에 접근한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kubeseal에 controller 이름을 명시하지 않았을 경우
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음과 같은 에러 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDKA3A/btrTKKWPWDV/OjKsW750AQuPU7MLxtqumK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDKA3A/btrTKKWPWDV/OjKsW750AQuPU7MLxtqumK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDKA3A/btrTKKWPWDV/OjKsW750AQuPU7MLxtqumK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDKA3A%2FbtrTKKWPWDV%2FOjKsW750AQuPU7MLxtqumK%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;741&quot; height=&quot;31&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;54&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kubeseal에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;--controller-name&lt;/span&gt;옵션을 통해 CLI에 명시적으로 컨트롤러의 이름을 전달할 수 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;e.g.) $ kubeseal --controller-name sealed-secrets &amp;lt;args&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;kubeseal에 controller 이름을 명시해줬을 경우
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상적으로 kubeseal 명령 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ooWG8/btrTIsv8WQI/G9Ia80SdL7wgCQHsqUJRkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ooWG8/btrTIsv8WQI/G9Ia80SdL7wgCQHsqUJRkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ooWG8/btrTIsv8WQI/G9Ia80SdL7wgCQHsqUJRkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FooWG8%2FbtrTIsv8WQI%2FG9Ia80SdL7wgCQHsqUJRkk%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;711&quot; height=&quot;62&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;111&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;만약 CLI를 통해 kubeseal을 사용할 때 매번 위와 같은 옵션을 사용하지 않으려면?&lt;/li&gt;
&lt;li&gt;helm chart를 설치할 때 &lt;span style=&quot;color: #ee2323;&quot;&gt;fullnameOverride=**..&lt;/span&gt; 옵션으로 controller의 이름을 명시하여 설치할 수 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;e.g.)&lt;span style=&quot;color: #ee2323;&quot;&gt; $ helm install sealed-secrets -n kube-system --set-string fullnameOverride=sealed-secrets-controller sealed-secrets/sealed-secrets&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ kubeseal로 암호화&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kubeseal을 사용해서 여러 가지 방법으로 암호화가 가능하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 파일 형식 지원 (json, yaml)&lt;/li&gt;
&lt;li&gt;echo를 통해 데이터 하나씩 암호화&lt;/li&gt;
&lt;li&gt;cat을 통해 Secret 오브젝트를 SealedSecret으로 변환&lt;/li&gt;
&lt;li&gt;등..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lsquo;1234&amp;rsquo;를 암호화 해보자 !&lt;/li&gt;
&lt;li&gt;꼭 지정한 namespace에 해당 secret을 넣어주어야만 복호화가 가능하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;data : 1234&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;namespace&lt;/b&gt; &lt;/span&gt;: test-namespace&lt;/li&gt;
&lt;li&gt;secret name : test-secret&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;$ echo -n 1234 | kubeseal --controller-name sealed-secrets --raw --namespace test-namespace --name test-secret

AgBa27gCAJDNYXYy+0PRHhmm8hBocVbq5tGiojJhehv/eHA....
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lsquo;db-secret.yaml&amp;rsquo;를 &amp;lsquo;db-sealed-secret.yaml&amp;rsquo;로 암호화 해보자 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;object : Secret &amp;rarr; SealedSecret&lt;/li&gt;
&lt;li&gt;data file : db-secret.yaml &amp;rarr; db-sealed-secret.yaml&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;namespace&lt;/b&gt; &lt;/span&gt;: cucumovie-main&lt;/li&gt;
&lt;li&gt;secret name : mysql-secret&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;$ cat db-secret.yaml | kubeseal --controller-name sealed-secrets --namespace cucumovie-main -oyaml &amp;gt; db-sealed-secret.yaml

$ cat db-sealed-secret.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
  creationTimestamp: null
  name: mysql-secret
  namespace: cucumovie-main
spec:
  encryptedData:
    host: AgAOGqdmS5HUPkLD9+s6A...
    password: AgBpRqR6scdjQvAs4n...
    root-password: AgCmj/tE2nVK1...
    username: AgBZqHpSItYBRJwXjtM...
  template:
    metadata:
      creationTimestamp: null
      name: mysql-secret
      namespace: cucumovie-main
    type: Opaque
&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ SealedSecret Controller로 복호화&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Github에 업로드 !&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;elixir&quot;&gt;&lt;code&gt;$ git add .
$ git commit -m &quot;add sealed-secret&quot;
$ git push
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GitOps Operator(e.g. ArgoCD)로 배포 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;controller로 sealedsecret을 복호화한 secret을 확인할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZXUuU/btrTKtnvRYE/TG4E4QQxEwEyNOuGdgqOVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZXUuU/btrTKtnvRYE/TG4E4QQxEwEyNOuGdgqOVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZXUuU/btrTKtnvRYE/TG4E4QQxEwEyNOuGdgqOVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZXUuU%2FbtrTKtnvRYE%2FTG4E4QQxEwEyNOuGdgqOVk%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;676&quot; height=&quot;92&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;157&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 파드도 정상적으로 controller로 복호화한 secret을 통해 환경변수를 설정하는 것 확인 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9HtFa/btrTKj6xkou/b1cXPnaGyokSX8yrgDlRcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9HtFa/btrTKj6xkou/b1cXPnaGyokSX8yrgDlRcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9HtFa/btrTKj6xkou/b1cXPnaGyokSX8yrgDlRcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9HtFa%2FbtrTKj6xkou%2Fb1cXPnaGyokSX8yrgDlRcK%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;667&quot; height=&quot;100&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;159&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;h4 data-ke-size=&quot;size20&quot;&gt;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/secret-management/&quot;&gt;Secret Management - Argo CD - Declarative GitOps CD for Kubernetes&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=7tEc23-BS9I&quot;&gt;How to Use Secrets with GitOps and ArgoCD | Dev House 2021 | Kostis Kapelonis&lt;/a&gt;&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>argocd</category>
      <category>cicd</category>
      <category>gitops</category>
      <category>sealed-secrets</category>
      <category>secret</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/79</guid>
      <comments>https://code1212-uh.tistory.com/79#entry79comment</comments>
      <pubDate>Thu, 15 Dec 2022 17:14:16 +0900</pubDate>
    </item>
    <item>
      <title>DB Pod 생성하기</title>
      <link>https://code1212-uh.tistory.com/78</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt; &amp;nbsp;목표&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kubernetes Cluster에 DB Pod를 띄워보자 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MySQL을 사용하는..&lt;/li&gt;
&lt;li&gt;SpringBoot의 백엔드와 연결하기 위해..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;먼저 준비물 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;li&gt;Secret&lt;/li&gt;
&lt;li&gt;Persistent Volume (PV)&lt;/li&gt;
&lt;li&gt;Persistent Volume Claim (PVC)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;위 것들이 왜 필요한지는 직접 매니페스트 파일을 작성하면서 알아보자&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ DB Deployment.yaml&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: db-mysql
  labels:
    app: db-mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: db-mysql
  template:
    metadata:
      labels:
        app: db-mysql
    spec:
      nodeName: cnp-node-w-1vmd
      containers:
      - name: db-mysql
        image: mysql:8.0.31
        env:
        - name: MYSQL_USER
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: username
        - name: MYSQL_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: password
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: root-password
        ports:
        - containerPort: 3306
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: mysql-pvc
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;먼저 Deployment를 살펴보면 특별히 봐야 할 두 가지를 확인해 볼 수 있다.
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;spec.template.spec.containers.&lt;b&gt;env&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;spec.template.spec.&lt;b&gt;volumes&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. spec.template.spec.containers.&lt;b&gt;env (secret)&lt;/b&gt;&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;spec.template.spec.containers.&lt;b&gt;env&lt;/b&gt;에는 mysql의 비밀번호를 환경 변수로 넣어주는 부분이다.&lt;/li&gt;
&lt;li&gt;그러나 이를 github의 public repo에 push를 하게 된다면 치명적인 보안 이슈가 생길 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d78tH0/btrTIsP9EwE/0kqkn5oEKNlJ2qGhKVcaF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d78tH0/btrTIsP9EwE/0kqkn5oEKNlJ2qGhKVcaF0/img.png&quot; data-alt=&quot;참조 : https://www.padok.fr/en/blog/kubernetes-secrets&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d78tH0/btrTIsP9EwE/0kqkn5oEKNlJ2qGhKVcaF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd78tH0%2FbtrTIsP9EwE%2F0kqkn5oEKNlJ2qGhKVcaF0%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;681&quot; height=&quot;220&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;414&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;참조 : https://www.padok.fr/en/blog/kubernetes-secrets&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이러한 이슈를 방지하기 위해 k8s에는 secret을 지원한다.&lt;/li&gt;
&lt;li&gt;MYSQL_ROOT_PASSWORD에 대한 값을 mysql-password의 secret에서 password에 대한 key 값을 가져오며 보안을 향상한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. spec.template.spec.&lt;b&gt;volumes (PV / PVC)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성한 pod내에 저장소를 사용하며 데이터를 저장할 수 있다.&lt;/li&gt;
&lt;li&gt;그러나 언제든지 k8s내의 파드는 죽을 수 있다는 시스템 설계상 DB 파드가 종료된다면 관련 데이터는 모두 없어질 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;728&quot;&gt;&lt;a href=&quot;https://medium.com/devops-mojo/kubernetes-storage-options-overview-persistent-volumes-pv-claims-pvc-and-storageclass-sc-k8s-storage-df71ca0fccc3&quot; target=&quot;_blank&quot; title=&quot;참고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfHiwq/btrTFXJ8dHQ/QoATHgXHUrH10JlPaeRILK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfHiwq%2FbtrTFXJ8dHQ%2FQoATHgXHUrH10JlPaeRILK%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;704&quot; height=&quot;410&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;728&quot;/&gt;&lt;/a&gt;&lt;figcaption&gt;참조 : 이미지 클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;따라서 별개로 관리하는 &lt;b&gt;PV 스토리지&lt;/b&gt;를 두며 파드에 직접 연결하지 않고 파드와 PV 사이에 &lt;b&gt;PVC&lt;/b&gt;를 두어 요청을 중간에서 처리한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;▪︎ DB Secret.yaml&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
type: Opaque
data:
  username: *******
  password: *******
  root-password: *******
  host: *******
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그럼 위에서 열심히 얘기했던 1번에 대한 시크릿을 생성해보자&lt;/li&gt;
&lt;li&gt;여기서 중요하게 볼 것은 data.password !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;data 하위에 넣고 싶은 값을 key-value 쌍으로 넣어주면 된다 !&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그냥 우리가 사용할 비밀번호를 와다다 적으면 될 것이라고 생각하지만 no no..&lt;/li&gt;
&lt;li&gt;secret에는 value 값들을 &lt;b&gt;base64로 인코딩한 값&lt;/b&gt;으로 넣어줘야 한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그럼 어떻게 base64로 인코딩해요?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ echo -n password | base64의&lt;/span&gt; 명령어를 사용하면 된다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예를 들면 password를 base64로 인코딩하면 아래와 같은 결과값을 가진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdZo9u/btrTKp6fIKl/B6b0KoCIWHAQHsg1k1RuY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdZo9u/btrTKp6fIKl/B6b0KoCIWHAQHsg1k1RuY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdZo9u/btrTKp6fIKl/B6b0KoCIWHAQHsg1k1RuY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdZo9u%2FbtrTKp6fIKl%2FB6b0KoCIWHAQHsg1k1RuY0%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;344&quot; height=&quot;58&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;113&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;근데 잠깐.. -n 옵션은 뭐죠?&lt;/li&gt;
&lt;li&gt;만약 -n 옵션을 주지 않고 인코딩을 하게 된다면..&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ echo password | base64&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yYBRn/btrTGYIBdPz/sbsKENYLRx7oZuZoWiiFIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yYBRn/btrTGYIBdPz/sbsKENYLRx7oZuZoWiiFIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yYBRn/btrTGYIBdPz/sbsKENYLRx7oZuZoWiiFIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyYBRn%2FbtrTGYIBdPz%2FsbsKENYLRx7oZuZoWiiFIK%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;353&quot; height=&quot;49&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;93&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;조금 다른데..?&lt;/li&gt;
&lt;li&gt;echo 명령어를 수행하면 자동으로 &lt;b&gt;trailing newline을 삽입&lt;/b&gt;한다.&lt;/li&gt;
&lt;li&gt;위와 같은 이유로 &lt;span style=&quot;color: #ee2323;&quot;&gt;-n&lt;/span&gt; 옵션을 사용해서 &lt;b&gt;trailing newline&lt;/b&gt;을 없앤 후에 인코딩을 해야 secret에서 원하는 정상적인 인코딩된 문자열을 얻을 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-n 옵션 없이 인코딩한 값으로 키 값을 부여하면 &lt;b&gt;mysql: unknown option &amp;lsquo;&amp;ndash;&amp;rdquo;&amp;lsquo;&lt;/b&gt; 오류가 발생한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그럼 secret 생성!
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ kubectl apply -f db-secret.yaml -n cucumovie-main&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qYXfZ/btrTHPYW304/tq7sTtcN7zHz8KyaMBy0R0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qYXfZ/btrTHPYW304/tq7sTtcN7zHz8KyaMBy0R0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qYXfZ/btrTHPYW304/tq7sTtcN7zHz8KyaMBy0R0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqYXfZ%2FbtrTHPYW304%2Ftq7sTtcN7zHz8KyaMBy0R0%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;645&quot; height=&quot;36&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;71&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;▪︎ PV.yaml / PVC.yaml&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;PV&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pvc
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /volume/pv
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: name
              operator: In
              values:
              - node
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PV의 path를 노드의 &lt;span style=&quot;color: #ee2323;&quot;&gt;/volume/pv&lt;/span&gt;로 지정한 후 PV 생성 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mdV4t/btrTJNT4awf/X1Gt8nC3L5kHwU5d7bdjqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mdV4t/btrTJNT4awf/X1Gt8nC3L5kHwU5d7bdjqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mdV4t/btrTJNT4awf/X1Gt8nC3L5kHwU5d7bdjqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmdV4t%2FbtrTJNT4awf%2FX1Gt8nC3L5kHwU5d7bdjqK%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;632&quot; height=&quot;47&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;95&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;PVC&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  storageClassName: local-storage
  resources:
    requests:
      storage: 10Gi
  accessModes:
    - ReadWriteOnce
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PVC 생성 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsuQYF/btrTKJDm5pJ/w9JB2XxoDW4sk99OrBfk51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsuQYF/btrTKJDm5pJ/w9JB2XxoDW4sk99OrBfk51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsuQYF/btrTKJDm5pJ/w9JB2XxoDW4sk99OrBfk51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsuQYF%2FbtrTKJDm5pJ%2Fw9JB2XxoDW4sk99OrBfk51%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;678&quot; height=&quot;41&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;78&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이제 모든 준비를 다 마쳤으니..&lt;/li&gt;
&lt;li&gt;Deployment 생성 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zrbw4/btrTFYCjfZ4/AGqVHuZgIXUOfcR192KYOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zrbw4/btrTFYCjfZ4/AGqVHuZgIXUOfcR192KYOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zrbw4/btrTFYCjfZ4/AGqVHuZgIXUOfcR192KYOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZrbw4%2FbtrTFYCjfZ4%2FAGqVHuZgIXUOfcR192KYOk%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;717&quot; height=&quot;40&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;71&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성된 DB Pod에 접속&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4vhoe/btrTKJDnnRU/uKJNTkY1CpjmvWYXSwC6Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4vhoe/btrTKJDnnRU/uKJNTkY1CpjmvWYXSwC6Ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4vhoe/btrTKJDnnRU/uKJNTkY1CpjmvWYXSwC6Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4vhoe%2FbtrTKJDnnRU%2FuKJNTkY1CpjmvWYXSwC6Ok%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;776&quot; height=&quot;46&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;76&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;접속한 Pod에서 mysql에 로그인하고 현재 계정이 접근 가능한 데이터베이스 목록 확인&lt;/li&gt;
&lt;li&gt;정상적으로 DB Pod가 생성된 것을 확인할 수 있다 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;827&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dK7oaF/btrTFnoNi7C/IJEw5Yqkz7Nj362n1tFVr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dK7oaF/btrTFnoNi7C/IJEw5Yqkz7Nj362n1tFVr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dK7oaF/btrTFnoNi7C/IJEw5Yqkz7Nj362n1tFVr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdK7oaF%2FbtrTFnoNi7C%2FIJEw5Yqkz7Nj362n1tFVr0%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;592&quot; height=&quot;462&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;827&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;h4 data-ke-size=&quot;size20&quot;&gt;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://wjdqlsdlsp.github.io/kubernetes/2022-07-03-k8s_network/&quot;&gt;쿠버네티스 Web-DB pod 연결하기&lt;/a&gt;&lt;/p&gt;</description>
      <category>Kubernetes</category>
      <category>db</category>
      <category>kubernetes</category>
      <category>MSA</category>
      <category>pod</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/78</guid>
      <comments>https://code1212-uh.tistory.com/78#entry78comment</comments>
      <pubDate>Thu, 15 Dec 2022 15:51:40 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins Front-End Dockerizing</title>
      <link>https://code1212-uh.tistory.com/77</link>
      <description>&lt;h3 id=&quot;%F-%-F%--%--%--Epilogue&quot; data-ke-size=&quot;size23&quot;&gt;  Epilogue&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;앞선 Jenkins로 React 빌드를 진행하였다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;빌드 산출물을 배포하기 위해선 Docker Image로 패키징 해야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Dockerfile을 작성하고 Jenkins로 Dockerizing을 진행해보자!&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;h3 id=&quot;%E-%-A%A-%--Leggo&quot; data-ke-size=&quot;size23&quot;&gt;⚡ Leggo&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 id=&quot;%E-%--%AA%--React%--Build&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;▪&lt;span&gt;&amp;nbsp;&lt;/span&gt;Nginx 설정 파일&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;/conf/conf.d/default.conf&lt;/span&gt;에&amp;nbsp;Nginx 설정 파일 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;server {
    listen 80;

    location / {
        root   /usr/share/nginx/html;

        index  index.html index.htm;
        try_files $uri $uri/ /index.html;

    }

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;▪ Multi Stage Build&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예를 들어 빌드 환경 / 배포 환경을 나눠서 이미지 빌드&lt;/li&gt;
&lt;li&gt;필요 없는 환경을 제거하고 최종적으로 필요한 환경만 남는다.&lt;/li&gt;
&lt;li&gt;컨테이너 이미지 경량화 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;gradle&quot;&gt;&lt;code&gt;FROM node:12.16.2 as builder

...

FROM nginx:latest

...

COPY --from=builder /usr/src/app/build /usr/share/nginx/html
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;▪ React Application 배포&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;nginx의 기본 설정을 삭제하고 Application 소스에서 설정한 파일을 복사&lt;/li&gt;
&lt;li&gt;소스 코드에 /conf/conf.d 파일이 있어야 함&lt;/li&gt;
&lt;li&gt;Jenkins에서 생성한 Application의 빌드 산출물을 nginx의 기본 Sample Application이 사용하던 폴더로 이동&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dockerfile&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;dockerfile&quot;&gt;&lt;code&gt;FROM nginx:latest

RUN rm -rf /etc/nginx/conf.d
COPY conf /etc/nginx

COPY build /usr/share/nginx/html
EXPOSE 80

CMD [&quot;nginx&quot;, &quot;-g&quot;, &quot;daemon off;&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jenkinsfile&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1671063583410&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pipeline{
    agent {
        kubernetes{
            yamlFile 'KubernetesPod.yaml'
        }
    }

...
 
        stage('Docker Image Build'){
            steps{
                container('docker'){
                    dir('front'){
                        sh &quot;docker build . -t ${dockerHubRegistry}:${currentBuild.number}&quot;
                        sh &quot;docker build . -t ${dockerHubRegistry}:latest&quot;
                    }
                }
            }
            post{
                failure{
                    echo 'Docker image build failure!'
                }
                success{
                    echo 'Docker image build success!'
                }
            }
        }
...&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;▪&lt;span&gt; &lt;/span&gt;부록  &lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;e.g.) &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;--from=builder&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;앞에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;builder&lt;/span&gt;로 지정한 환경에서 파일을 가져와서 최종 이미지에 파일을 추가하는 의미&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;gradle&quot;&gt;&lt;code&gt;FROM node:12.16.2 as builder

...

FROM nginx:latest

...

COPY --from=builder /usr/src/app/build /usr/share/nginx/html
&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kim-dragon.tistory.com/128&quot;&gt;[Devops] React 프로젝트 Docker이미지 만들기(Dockerizing)&lt;/a&gt;&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>dockerfile</category>
      <category>Dockerizing</category>
      <category>Jenkins</category>
      <category>react</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/77</guid>
      <comments>https://code1212-uh.tistory.com/77#entry77comment</comments>
      <pubDate>Thu, 15 Dec 2022 09:22:37 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins Front-End React Build</title>
      <link>https://code1212-uh.tistory.com/76</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Epilogue&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Jenkins로 React 빌드를 해보자 !&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;%E-%-A%A-%--Leggo&quot; data-ke-size=&quot;size23&quot;&gt;⚡ Leggo&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;▪ React Build&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개발 모드로 프로그램 실행
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ npm start&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실제 배포 시 빌드 명령어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ npm run build&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;배포 환경에서 사용할 파일들 압축 형태로 제공&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;index.html&lt;/span&gt; 최적화하여 배포&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트용으로 serve라고 하는 간단한(한 번만 사용하는) 서버를 npm을 통해 설치하는 명령어&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;npm insatll -g serve
npx serve -s build // 한번만 실행
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 개발 단계에서 [ Front-End &amp;rarr; Back-End ] 요청 타겟팅 설정 파일 path check
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Movie-project/back/src/main/movie-project/src/setProxy.ts&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;webpack을 사용하지 않고 &lt;span style=&quot;color: #ee2323;&quot;&gt;$ npm run build&lt;/span&gt; 빌드시 나오는 산출물
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;./build&lt;/span&gt; 디렉토리 안에 있는 빌드 산출물 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1671062947529&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;+ ls -al build  
total 20  
drwxr-xr-x 3 node node 4096 Nov 23 14:26 .  
drwxr-xr-x 7 node node 4096 Nov 23 14:26 ..  
-rw-r--r-- 1 node node  218 Nov 23 14:26 asset-manifest.json  
-rw-r--r-- 1 node node  315 Nov 23 14:26 index.html  
drwxr-xr-x 3 node node 4096 Nov 23 14:26 static&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Build WorkFlow&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jenkins &amp;rarr; &lt;b&gt;build&lt;/b&gt; &amp;rarr; 빌드 산출물 &amp;rarr; &lt;u&gt;+ Nginx&lt;/u&gt; &amp;rarr; Dockerfile&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Jenkins&lt;/b&gt;에서 빌드?&lt;b&gt; ✅&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드시 Jenkins의 빌드 서버의 리소스 사용이 적합하다고 판단&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dockerfile&lt;/b&gt;에서 빌드? ❌
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 도커 이미지를 통해 매번 굳이 빌드를 행해야 할 필요가 있을까?&lt;/li&gt;
&lt;li&gt;서버 리소스를 빌드시 사용하는 것이 낭비라고 판단&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jenkinsfile&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1671062345073&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...

stage('React Build'){
            steps{
                dir('front'){
                    sh '''
                        npm install
                        npm run build
                    '''
                }
            }
            post{
                failure{
                    echo 'React build failure!'
                }
                success{
                    echo 'React build success!'
                }
            }
        }
           
...&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dev.classmethod.jp/articles/the-process-from-installing-react-to-distributing-it/&quot;&gt;[초보자] React 설치부터 배포까지의 과정을 정리 | DevelopersIO&lt;/a&gt;&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>build</category>
      <category>CI</category>
      <category>Jenkins</category>
      <category>react</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/76</guid>
      <comments>https://code1212-uh.tistory.com/76#entry76comment</comments>
      <pubDate>Thu, 15 Dec 2022 09:03:22 +0900</pubDate>
    </item>
    <item>
      <title>ArgoCD Application Create</title>
      <link>https://code1212-uh.tistory.com/75</link>
      <description>&lt;h3 id=&quot;%F-%-F%--%--%--Epilogue&quot; data-ke-size=&quot;size23&quot;&gt;  Epilogue&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CI 파이프라인에서 Kubernetes Deployment Manifest 파일의 도커 이미지 태그 수정을 완료하였다.&lt;/li&gt;
&lt;li&gt;이제는 수정된 버전의 도커 이미지를 가지고 새로 업그레이드나 배포를 해야할 차례..!&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위 과정에서 GitOps의 Operation 툴인 ArgoCD를 사용하고자 하는데..&lt;/li&gt;
&lt;li&gt;ArgoCD로 Kubernetes 클러스터 내의 리소스들을 관리하기 위해서는 사전에 Application을 만들어줘야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;콘솔로 세팅&lt;/li&gt;
&lt;li&gt;YAML 파일로 세팅&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 가지 세팅 방법이 있는데&lt;/li&gt;
&lt;li&gt;우리는 아무래도 선언적으로 설정하는게 편하다보니 &lt;s&gt;(맞죠?)&lt;/s&gt; ..&lt;/li&gt;
&lt;li&gt;YAML 파일 작성을 통해 Application을 만들어 보고자 한다 !&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;⚡ Leggo&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Edit as YAML&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: test-back
spec:
  project: default
  destination:
    namespace: back-end
    server: &amp;lt;https://kubernetes.default.svc&amp;gt;
  source:
    repoURL: &amp;lt;https://github.com/Cucumber-web/Test-Kubernetes&amp;gt;
    path: .
    targetRevision: main
  syncPolicy:
    syncOptions:
      - CreateNamespace=true
    automated:
      selfHeal: true
      prune: true
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Application Name&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배포할 애플리케이션 이름&lt;/li&gt;
&lt;li&gt;소문자, 숫자, . , -만 허용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Project&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ArgoCD 내 애플리케이션 그룹&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SYNC POLICY&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Git 변동사항을 자동으로 반영 (Automatic)&lt;/li&gt;
&lt;li&gt;Git 변동사항을 수동으로 반영 (Manual)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Repository URL&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Git or Helm 저장소 URL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Revision&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Git의 어떤 Revision을 보고 있는지&lt;/li&gt;
&lt;li&gt;e.g.) Head, master, main ..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Repo 내 변경 사항을 관리할 매니페스트 파일이 위치한 경로&lt;/li&gt;
&lt;li&gt;root일 경우 . 로 표기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cluster URL&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배포 대상 Cluster 지정&lt;/li&gt;
&lt;li&gt;https://kubernetes.default.svc&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Namespace&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Cluster 내 배포할 Namespace 지정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DIRECTORY RECURSE&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;path 하위 경로의 매니페스트 파일 변동 사항 체크 여부&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 application 정보 및 로그 상태 확인
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ argocd app get [application-name]&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn1nuZ/btrTAMm6XtX/AQbbDQs1nXMFNvehmO5WMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn1nuZ/btrTAMm6XtX/AQbbDQs1nXMFNvehmO5WMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn1nuZ/btrTAMm6XtX/AQbbDQs1nXMFNvehmO5WMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn1nuZ%2FbtrTAMm6XtX%2FAQbbDQs1nXMFNvehmO5WMk%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;687&quot; height=&quot;246&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;458&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;[ Back-End ]&lt;/b&gt; 배포 Test&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnCNAf/btrTzvl1NeD/BFirgkhOjX0RVIoedD8qM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnCNAf/btrTzvl1NeD/BFirgkhOjX0RVIoedD8qM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnCNAf/btrTzvl1NeD/BFirgkhOjX0RVIoedD8qM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnCNAf%2FbtrTzvl1NeD%2FBFirgkhOjX0RVIoedD8qM0%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;753&quot; height=&quot;302&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;513&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;[ Back-End + Front-End ]&lt;/b&gt; 배포 Test
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 사전에 없는 namespace 지정시 잘 생성하는 것도 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;649&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5lmbq/btrTvk6PC5A/cxqjYkKN2iRpyF8IwVslHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5lmbq/btrTvk6PC5A/cxqjYkKN2iRpyF8IwVslHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5lmbq/btrTvk6PC5A/cxqjYkKN2iRpyF8IwVslHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5lmbq%2FbtrTvk6PC5A%2FcxqjYkKN2iRpyF8IwVslHK%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;763&quot; height=&quot;387&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;649&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 3분간 Sync가 이뤄지는 것으로 보임
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최악의 경우 3분을 대기&lt;/li&gt;
&lt;li&gt;이를 위해 ArgoCD도 webhook을 사용 &amp;rarr; &lt;b&gt;나의 임무&lt;/b&gt;이로다..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdWKah/btrTzkEV0uJ/5K0PTpWOPWuEwXD7xREzHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdWKah/btrTzkEV0uJ/5K0PTpWOPWuEwXD7xREzHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdWKah/btrTzkEV0uJ/5K0PTpWOPWuEwXD7xREzHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdWKah%2FbtrTzkEV0uJ%2F5K0PTpWOPWuEwXD7xREzHK%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;638&quot; height=&quot;316&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;figure id=&quot;og_1670981389246&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;Git Webhook Configuration - Argo CD - Declarative GitOps CD for Kubernetes&quot; data-og-description=&quot;Git Webhook Configuration Overview Argo CD polls Git repositories every three minutes to detect changes to the manifests. To eliminate this delay from polling, the API server can be configured to receive webhook events. Argo CD supports Git webhook notific&quot; data-og-host=&quot;argo-cd.readthedocs.io&quot; data-og-source-url=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/&quot; data-og-url=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Git Webhook Configuration - Argo CD - Declarative GitOps CD for Kubernetes&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Git Webhook Configuration Overview Argo CD polls Git repositories every three minutes to detect changes to the manifests. To eliminate this delay from polling, the API server can be configured to receive webhook events. Argo CD supports Git webhook notific&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;argo-cd.readthedocs.io&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매번 이렇게 Application Create는 매우 귀찮음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전에는 &lt;b&gt;App of App&lt;/b&gt; 배포 전략이 존재
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대장 Application이 존재하여 하위 Application을 관리하는 전략&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;요즘은 &lt;b&gt;ApplicationSet&lt;/b&gt; 지원을 통해 해결한다고 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;ref.&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://umi0410.github.io/blog/devops/declarative-argocd-helm-app-of-app/&quot;&gt;ArgoCD 선언적으로 이용해나가기 - Helm, App of App&lt;/a&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;&lt;a href=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#quick-reference&quot;&gt;Declarative Setup - Argo CD - Declarative GitOps CD for Kubernetes&lt;/a&gt;&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>Application Create</category>
      <category>argocd</category>
      <category>cd</category>
      <category>YAML</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/75</guid>
      <comments>https://code1212-uh.tistory.com/75#entry75comment</comments>
      <pubDate>Wed, 14 Dec 2022 10:48:15 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins Kubernetes Manifest Deploy</title>
      <link>https://code1212-uh.tistory.com/74</link>
      <description>&lt;h3 id=&quot;%F-%-F%--%--%--Epilogue&quot; data-ke-size=&quot;size23&quot;&gt;  Epilogue&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 프로젝트에 적용할 CD 파이프라인 소개&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;도커 이미지 빌드&lt;/li&gt;
&lt;li&gt;도커 이미지 Docker Hub Registry에 Push&lt;/li&gt;
&lt;li&gt;Kubernetes Deployment Manifest 파일에 도커 이미지 태그 수정&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ArgoCD가 수정 사항을 감지하여 새로 Push 된 Docker Image를 가지고 배포를 진행한다.&lt;/li&gt;
&lt;li&gt;이로써 GitOps 환경이 구축이 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;진짜 역대급으로 힘들었고 시간 많이 잡아먹었던 파이프라인 Stage
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;왜냐고 물으신다면 이 빌드 숫자를 보아하니..^^&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;725&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ut4EF/btrTyDkvcT1/x2THjHiWHndhUXqnybWNLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ut4EF/btrTyDkvcT1/x2THjHiWHndhUXqnybWNLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ut4EF/btrTyDkvcT1/x2THjHiWHndhUXqnybWNLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fut4EF%2FbtrTyDkvcT1%2Fx2THjHiWHndhUXqnybWNLK%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;319&quot; height=&quot;399&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;725&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;h3 id=&quot;%E-%-A%A-%--Leggo&quot; data-ke-size=&quot;size23&quot;&gt;⚡ Leggo&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jenkinsfile&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;environment{
        ...
        gitToken = credentials('github-repo-access-token')
    }

...

stage('Kubernetes Manifest Update'){
            steps{
                git branch: 'main',
                    url: '&amp;lt;https://github.com/Cucumber-web/Test-Kubernetes.git&amp;gt;',
                    credentialsId: 'github-repo-access-token'
                
                sh '''
                    git config --global user.email &quot;uh9222959@gmail.com&quot;
                    git config --global user.name &quot;UhyeongJo&quot;
                '''

                sh &quot;sed -i 's/cucumber-back:.*\\$/cucumber-back:${currentBuild.number}/g' back_deployment.yaml&quot;
                sh &quot;git add back_deployment.yaml&quot;
                sh &quot;git commit -m '[Update] test-back ${currentBuild.number} image versioning'&quot;
                
                sshagent(credentials: ['****************']){
                    sh 'git remote set-url origin '
                    sh &quot;git push origin main&quot;
                }

                /*
                sh '''
                    git config --global user.email &quot;{e-mail-***}&quot;
                    git config --global user.name &quot;{username-***}&quot;
                '''
                sh &quot;sed -i 's/cucumber-back:.*\\$/cucumber-back:${currentBuild.number}/g' back_deployment.yaml&quot;
                sh &quot;git add back_deployment.yaml&quot;
                sh &quot;git commit -m '[Update] test-back ${currentBuild.number} image versioning'&quot;
                sh &quot;git remote set-url origin &quot;
                sh &quot;git push --set-upstream origin main&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;▪ 이건 또 하나의 삽질 경험기&lt;/b&gt;&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;젠킨스 컨테이너 접속&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;젠킨스 홈 디렉토리에 들어가서 공개-비밀키 쌍을 생성하고 Github의 Secret과 Jenkins의 Credentials로 등록을 해줘야 했다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ kubectl exec -it [jenkins-pod-name] /bin/bash -n [jenkins-namespace]&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;젠킨스 홈 디렉토리에 공개-비밀키 쌍 생성 과정&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;$ cd /var/jenkins-home&lt;/li&gt;
&lt;li&gt;$ mkdir .ssh&lt;/li&gt;
&lt;li&gt;$ cd .ssh&lt;/li&gt;
&lt;li&gt;$ ssh-keygen -t rsa -C [github e-mail]&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Enter +&lt;/b&gt; &lt;b&gt;&lt;b&gt;Enter&lt;/b&gt;&lt;/b&gt;&amp;nbsp;&lt;b&gt;+&lt;/b&gt; &lt;b&gt;&lt;b&gt;Enter &lt;/b&gt;&lt;/b&gt;,,&lt;/li&gt;
&lt;li&gt;id_rsa (private key) &amp;rarr; &lt;b&gt;COPY&lt;/b&gt;&amp;nbsp;&amp;rarr; jenkins credential&lt;/li&gt;
&lt;li&gt;id_rsa.pub (public key) &amp;rarr; &lt;b&gt;COPY&lt;/b&gt;&amp;nbsp;&amp;rarr; github secret&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;ssh agent&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위에서 등록한 Jenkins ssh private key를 가지고 사용 및 활용할 수 있는 agent&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;prolog&quot;&gt;&lt;code&gt;...
[ssh-agent] Using credentials ***-key
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine)
$ ssh-agent
...
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;credentials에 username이 아니라 ID를 입력해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1670978825334&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;SSH Agent&quot; data-og-description=&quot;This plugin allows you to provide SSH credentials to builds via a ssh-agent in Jenkins.&quot; data-og-host=&quot;plugins.jenkins.io&quot; data-og-source-url=&quot;https://plugins.jenkins.io/ssh-agent/&quot; data-og-url=&quot;https://plugins.jenkins.io/ssh-agent&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bA27Xp/hyQTzbKv19/sCck9yVx0yFrX1tNxabOW0/img.png?width=796&amp;amp;height=398&amp;amp;face=80_109_160_197,https://scrap.kakaocdn.net/dn/fCzcW/hyQRP1ACbx/P2eA935kESWNxwUZrGx281/img.png?width=796&amp;amp;height=398&amp;amp;face=80_109_160_197,https://scrap.kakaocdn.net/dn/njCR2/hyQRI9gDW6/oeWY8K8wvbLGbgHXFsRAk0/img.png?width=990&amp;amp;height=442&amp;amp;face=0_0_990_442&quot;&gt;&lt;a href=&quot;https://plugins.jenkins.io/ssh-agent/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://plugins.jenkins.io/ssh-agent/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bA27Xp/hyQTzbKv19/sCck9yVx0yFrX1tNxabOW0/img.png?width=796&amp;amp;height=398&amp;amp;face=80_109_160_197,https://scrap.kakaocdn.net/dn/fCzcW/hyQRP1ACbx/P2eA935kESWNxwUZrGx281/img.png?width=796&amp;amp;height=398&amp;amp;face=80_109_160_197,https://scrap.kakaocdn.net/dn/njCR2/hyQRI9gDW6/oeWY8K8wvbLGbgHXFsRAk0/img.png?width=990&amp;amp;height=442&amp;amp;face=0_0_990_442');&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;SSH Agent&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This plugin allows you to provide SSH credentials to builds via a ssh-agent in Jenkins.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;plugins.jenkins.io&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Environment Credential Secure&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;sh &quot;git remote set-url origin &amp;lt;https://${gitToken}@github.com/Cucumber-web/Test-Kubernetes.git&amp;gt;&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;현재 Jenkins에서 연결되어 있는 원격 Repository의 주소를 변경하기 위한 명령인데 자꾸 &lt;u&gt;자격 증명 에러&lt;/u&gt;가 발생..
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;fatal: could not read Username for '&amp;lt;&lt;a href=&quot;https://github.com&quot;&gt;https://github.com&lt;/a&gt;&amp;gt;': No such device or address&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Host key verification failed.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;hellip; 아주 다양..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;u&gt;Github Token&lt;/u&gt;을 통하여 이를 해결하였다.&lt;/li&gt;
&lt;li&gt;그러나 보안 상 Github Token이 환경 변수로 사용하지만 명령어로 유출될 가능성이 있다는 경고 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1671063910800&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Warning: A secret was passed to &quot;sh&quot; using Groovy String interpolation, which is insecure.
		 Affected argument(s) used the following variable(s): [gitToken, gitToken_PSW]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해결법은 간단하다.&lt;/li&gt;
&lt;li&gt;큰따옴표 &amp;rarr; 작은따옴표&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;ldquo;&lt;/b&gt;sh ~~~&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;ldquo;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&amp;lsquo;&lt;/b&gt;sh ~~~&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lsquo;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1670978904945&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Using a Jenkinsfile&quot; data-og-description=&quot;For more advanced usage with Scripted Pipeline, the example above node is a crucial first step as it allocates an executor and workspace for the Pipeline. In essence, without node, a Pipeline cannot do any work! From within node, the first order of busines&quot; data-og-host=&quot;www.jenkins.io&quot; data-og-source-url=&quot;https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#string-interpolation&quot; data-og-url=&quot;https://www.jenkins.io/doc/book/pipeline/jenkinsfile/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#string-interpolation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#string-interpolation&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Using a Jenkinsfile&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;For more advanced usage with Scripted Pipeline, the example above node is a crucial first step as it allocates an executor and workspace for the Pipeline. In essence, without node, a Pipeline cannot do any work! From within node, the first order of busines&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.jenkins.io&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 ~  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cG63oK/btrTxJkSFFi/iEfC0ajfCc0wUTw9ru6BY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cG63oK/btrTxJkSFFi/iEfC0ajfCc0wUTw9ru6BY1/img.png&quot; data-alt=&quot;빌드 성공 !&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cG63oK/btrTxJkSFFi/iEfC0ajfCc0wUTw9ru6BY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcG63oK%2FbtrTxJkSFFi%2FiEfC0ajfCc0wUTw9ru6BY1%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;324&quot; height=&quot;142&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;298&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;빌드 성공 !&lt;/figcaption&gt;
&lt;/figure&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;960&quot; data-origin-height=&quot;1268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CKQ5J/btrTA6Tiocp/REmYGKU5h6S5E8jfsxIVk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CKQ5J/btrTA6Tiocp/REmYGKU5h6S5E8jfsxIVk0/img.png&quot; data-alt=&quot;로그에서도 반가운 SUCCESS !&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CKQ5J/btrTA6Tiocp/REmYGKU5h6S5E8jfsxIVk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCKQ5J%2FbtrTA6Tiocp%2FREmYGKU5h6S5E8jfsxIVk0%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;463&quot; height=&quot;612&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1268&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;로그에서도 반가운 SUCCESS !&lt;/figcaption&gt;
&lt;/figure&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;1270&quot; data-origin-height=&quot;252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1aiBL/btrTzwrCnVm/JvqkMS7jURfB5lPQmfUvAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1aiBL/btrTzwrCnVm/JvqkMS7jURfB5lPQmfUvAK/img.png&quot; data-alt=&quot;새로운 도커 이미지 Push !&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1aiBL/btrTzwrCnVm/JvqkMS7jURfB5lPQmfUvAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1aiBL%2FbtrTzwrCnVm%2FJvqkMS7jURfB5lPQmfUvAK%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;619&quot; height=&quot;123&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;252&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;새로운 도커 이미지 Push !&lt;/figcaption&gt;
&lt;/figure&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;950&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdGJeD/btrTzDqFPtV/Yo5kkDokMNNEghOOcPskzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdGJeD/btrTzDqFPtV/Yo5kkDokMNNEghOOcPskzk/img.png&quot; data-alt=&quot;Kubernetes Deployment Manifest 파일의 새로운 도커 이미지 태그 수정 확인 !&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdGJeD/btrTzDqFPtV/Yo5kkDokMNNEghOOcPskzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdGJeD%2FbtrTzDqFPtV%2FYo5kkDokMNNEghOOcPskzk%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;576&quot; height=&quot;702&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Kubernetes Deployment Manifest 파일의 새로운 도커 이미지 태그 수정 확인 !&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>ci/cd</category>
      <category>docker</category>
      <category>Image Tag</category>
      <category>Jenkins</category>
      <category>kubernetes</category>
      <category>Manifest</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/74</guid>
      <comments>https://code1212-uh.tistory.com/74#entry74comment</comments>
      <pubDate>Wed, 14 Dec 2022 09:54:58 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins Docker Image Push</title>
      <link>https://code1212-uh.tistory.com/73</link>
      <description>&lt;h3 id=&quot;%F-%-F%--%--%--Epilogue&quot; data-ke-size=&quot;size23&quot;&gt;  Epilogue&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;험난한 과정을 거친 후 도커 이미지 빌드 파이프라인을&amp;nbsp;성공하였다 !&lt;/li&gt;
&lt;li&gt;이제는 빌드한 이미지를 가지고 도커 허브 레지스트리에 Push를 해보자 ~&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;⚡ Leggo&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jenkinsfile&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot;&gt;&lt;code&gt;...

stage('Docker Image Push'){
            steps{
                container('docker'){
                    withDockerRegistry([credentialsId: 'docker-access-key', url: &quot;&quot; ]){
                        sh &quot;docker push ${dockerHubRegistry}:${currentBuild.number}&quot;
                        sh &quot;docker push ${dockerHubRegistry}:latest&quot;
                        
                        /* Wait Uploading */
                        sleep 10

                        sh &quot;docker rmi ${dockerHubRegistry}:${currentBuild.number}&quot;
                        sh &quot;docker rmi ${dockerHubRegistry}:latest&quot;
                    }
                }
            }
            post{
                failure{
                    echo 'Docker Image Push failure!'
                }
                success{
                    echo 'Docker Image Push Success!'
                }
            }
        }

...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;credentialsId: 'docker-access-key'&lt;/span&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;도커 허브 레지스트리 계정 정보는 젠킨스 시크릿 인증 키로 설정하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;currentBuild.number&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 빌드 넘버를 표기해주는 변수&lt;/li&gt;
&lt;li&gt;Jenkins에서 제공&lt;/li&gt;
&lt;li&gt;배포 자동화 &amp;rarr; 매우 매우 중요한 요소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 ! ⭐️&lt;/li&gt;
&lt;/ul&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;786&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDl935/btrTDlCnDJj/aX4E9LaXugy24r5Z4xY0K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDl935/btrTDlCnDJj/aX4E9LaXugy24r5Z4xY0K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDl935/btrTDlCnDJj/aX4E9LaXugy24r5Z4xY0K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDl935%2FbtrTDlCnDJj%2FaX4E9LaXugy24r5Z4xY0K0%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;443&quot; height=&quot;452&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;786&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;허브에도 정상 push !✨&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwClZH/btrTzwypcWW/n8Fx8VNtCo2qGJnKjkMmf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwClZH/btrTzwypcWW/n8Fx8VNtCo2qGJnKjkMmf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwClZH/btrTzwypcWW/n8Fx8VNtCo2qGJnKjkMmf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwClZH%2FbtrTzwypcWW%2Fn8Fx8VNtCo2qGJnKjkMmf1%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;595&quot; height=&quot;198&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;426&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>CI</category>
      <category>docker</category>
      <category>dockerhub</category>
      <category>image</category>
      <category>Jenkins</category>
      <category>Push</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/73</guid>
      <comments>https://code1212-uh.tistory.com/73#entry73comment</comments>
      <pubDate>Wed, 14 Dec 2022 09:12:02 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins Back-End Dockerizing</title>
      <link>https://code1212-uh.tistory.com/72</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Epilogue&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;역시나 험난한 트러블 슈팅기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mZNTo/btrTtB7F5kO/bi9okShbaxHrqjNYvz5Al1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mZNTo/btrTtB7F5kO/bi9okShbaxHrqjNYvz5Al1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mZNTo/btrTtB7F5kO/bi9okShbaxHrqjNYvz5Al1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmZNTo%2FbtrTtB7F5kO%2Fbi9okShbaxHrqjNYvz5Al1%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;762&quot; height=&quot;155&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;261&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커가 없다고 하는 거 같아요..&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;⚡ Leggo&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;플러그인 설치
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Docker Pipeline&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;실패..&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;uname -a 를 통해 OS 정보 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;+ uname -a

Linux default-hp930 5.4.0-99-generic #112-Ubuntu SMP Thu Feb 3 13:50:55 UTC 2022 x86_64 GNU/Linux
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커 설치 스크립트 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install docker.io
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;agent pod에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;sudo: not found&lt;/b&gt;&lt;/span&gt; 문제로 실패&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해결책&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;apt-get update &amp;amp;&amp;amp; apt-get -y install sudo
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이지만 매번 agent pod가 띄워질 때마다 패키지를 업데이트하고 설치하는 것이 빌드 파이프라인에 시간이 많이 소비될 것이 우려됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 해결책을 찾다가 저번 Gradle Build에서 Custom Agent를 실패했던 것이 떠올랐다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 Agent pod에 도커가 없으니&lt;/li&gt;
&lt;li&gt;&amp;lsquo;Docker Container를 Custom해서 Agent에 넣어주면 Image Build가 되지 않을까&amp;rsquo;&lt;/li&gt;
&lt;li&gt;라고 생각하게 되었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Agent Docker Container&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;spec:
  containers:
  - name: docker
    image: docker:latest
    command:
    - cat
    tty: true
    volumeMounts:
    - mountPath: /var/run/docker.sock
      name: docker-sock
  volumes:
  - name: docker-sock
    hostPath:
      path: /var/run/docker.sock
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dockerfile&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1671063508953&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;FROM openjdk:11

ARG JAR_FILE_PATH=./*.jar
COPY ${JAR_FILE_PATH} ./app.jar

EXPOSE 8080
ENTRYPOINT [&quot;java&quot;,&quot;-jar&quot;,&quot;app.jar&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jenkinsfile&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;pipeline{
    agent {
        kubernetes{
            yamlFile 'KubernetesPod.yaml'
        }
    }

...

stage('Docker Image Build'){
            steps{
                container('docker'){
                    sh &quot;cp demo/build/libs/demo-0.0.1-SNAPSHOT.jar ./&quot;
                    sh &quot;cp demo/Dockerfile ./&quot;
                    sh &quot;docker build . -t ${dockerHubRegistry}:${currentBuild.number}&quot;
                    sh &quot;docker build . -t ${dockerHubRegistry}:latest&quot;
                }
            }

...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드 시작 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 !!!!!!!!!  &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;+ cp demo/build/libs/demo-0.0.1-SNAPSHOT.jar ./
[Pipeline] sh
+ cp demo/Dockerfile ./
[Pipeline] sh
+ docker build . -t uh2959/cucumber-back:51
Sending build context to Docker daemon  35.92MB

Step 1/5 : FROM openjdk:11
11: Pulling from library/openjdk
001c52e26ad5: Pulling fs layer
...
66223a710990: Pulling fs layer
db38d58ec8ab: Pulling fs layer
d85151f15b66: Waiting
...
9daef329d350: Waiting
d9d4b9b6e964: Verifying Checksum
d9d4b9b6e964: Download complete
2068746827ec: Verifying Checksum
...
db38d58ec8ab: Verifying Checksum
db38d58ec8ab: Download complete
001c52e26ad5: Pull complete
...
db38d58ec8ab: Pull complete
Digest: sha256:99bac5bf83633e3c7399aed725c8415e7b569b54e03e4599e580fc9cdb7c21ab
Status: Downloaded newer image for openjdk:11
 ---&amp;gt; 47a932d998b7
Step 2/5 : ARG JAR_FILE_PATH=./*.jar
 ---&amp;gt; Running in 208235ed04bf
...
Successfully built d9934a7196a4
Successfully tagged uh2959/cucumber-back:latest
[Pipeline] }
[Pipeline] // container
Post stage
[Pipeline] echo
Docker image build success!
[Pipeline] }
...
[Pipeline] End of Pipeline
Finished: SUCCESS
&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ZXaorni-icg&quot;&gt;How to Use Kubernetes Pods As Jenkins Agents&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.thecloudside.com/docker-in-docker-with-jenkins-pod-on-kubernetes-f2b9877936f2&quot;&gt;Docker in Docker with Jenkins Pod on Kubernetes&lt;/a&gt;&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>build</category>
      <category>CI</category>
      <category>docker</category>
      <category>image</category>
      <category>Jenkins</category>
      <category>Trouble Shooting</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/72</guid>
      <comments>https://code1212-uh.tistory.com/72#entry72comment</comments>
      <pubDate>Tue, 13 Dec 2022 10:29:11 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins Back-End Gradle Build</title>
      <link>https://code1212-uh.tistory.com/71</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Epilogue&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;백엔드 Gradle 빌드 시 매우 많은 트러블 이슈 발생
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Gradle 빌드 명령어 이슈..
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Test 제외 빌드 명령어&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;./gradlew build --exclude-task -test&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DYyeU/btrToDSNTX0/znNnIEkikj7cn7KpYPzGn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DYyeU/btrToDSNTX0/znNnIEkikj7cn7KpYPzGn0/img.png&quot; data-alt=&quot;Java Build 과정 -&amp;amp;gt; 여기서 Test 과정을 제외&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DYyeU/btrToDSNTX0/znNnIEkikj7cn7KpYPzGn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDYyeU%2FbtrToDSNTX0%2FznNnIEkikj7cn7KpYPzGn0%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;734&quot; height=&quot;193&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Java Build 과정 -&amp;gt; 여기서 Test 과정을 제외&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Gradle 빌드 세팅 파일 찾지 못하는 이슈..&lt;/li&gt;
&lt;li&gt;Gradle 권한 오류..&lt;/li&gt;
&lt;li&gt;etc..&lt;/li&gt;
&lt;li&gt;그중에서 제일 애를 먹었던 이슈를 해결했던 과정을 소개하고자 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;⚡ Leggo&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jenkinsfile&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1671062272830&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...

stage('Gradle Jar Build'){
            steps{
                dir('back'){
                    sh '''
                        chmod +x gradlew
                        ./gradlew build --exclude-task test
                    '''
                }
            }
            post{
                failure{
                    echo 'Gradle jar build failure!'
                }
                success{
                    echo 'Gradle jar build success!'
                }
            }
        }
        
...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;'Gradle build daemon disappeard unexpectedly (it may have been killed or may have crashed)'&lt;/span&gt; 에러 문구 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;1015&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0DkLl/btrTxIEqSJU/nNG1f8OTaWyZBh9HEWkh5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0DkLl/btrTxIEqSJU/nNG1f8OTaWyZBh9HEWkh5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0DkLl/btrTxIEqSJU/nNG1f8OTaWyZBh9HEWkh5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0DkLl%2FbtrTxIEqSJU%2FnNG1f8OTaWyZBh9HEWkh5K%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;654&quot; height=&quot;531&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;1015&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;figure id=&quot;og_1670892343838&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;PyeongHo Factory&quot; data-og-description=&quot;즐거운 공장&quot; data-og-host=&quot;pyeongho.github.io&quot; data-og-source-url=&quot;https://pyeongho.github.io/gradle_action&quot; data-og-url=&quot;https://pyeongho.github.io/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/k32nd/hyQTNUOioU/17KdPXqo2ytsCpwu159qk1/img.jpg?width=1600&amp;amp;height=1067&amp;amp;face=0_0_1600_1067,https://scrap.kakaocdn.net/dn/xJ1FJ/hyQTz954k4/xKwVzM0v3Mcu56KkKA0jh1/img.png?width=502&amp;amp;height=503&amp;amp;face=0_0_502_503,https://scrap.kakaocdn.net/dn/cJ5c0A/hyQTNmYlL4/gnTQXlALl2CZwRZlw5Zrbk/img.png?width=502&amp;amp;height=503&amp;amp;face=0_0_502_503&quot;&gt;&lt;a href=&quot;https://pyeongho.github.io/gradle_action&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pyeongho.github.io/gradle_action&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/k32nd/hyQTNUOioU/17KdPXqo2ytsCpwu159qk1/img.jpg?width=1600&amp;amp;height=1067&amp;amp;face=0_0_1600_1067,https://scrap.kakaocdn.net/dn/xJ1FJ/hyQTz954k4/xKwVzM0v3Mcu56KkKA0jh1/img.png?width=502&amp;amp;height=503&amp;amp;face=0_0_502_503,https://scrap.kakaocdn.net/dn/cJ5c0A/hyQTNmYlL4/gnTQXlALl2CZwRZlw5Zrbk/img.png?width=502&amp;amp;height=503&amp;amp;face=0_0_502_503');&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;PyeongHo Factory&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;즐거운 공장&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;pyeongho.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위 블로그 글처럼 Gradle 옵션에 &lt;span style=&quot;color: #ee2323;&quot;&gt;no-daemon&lt;/span&gt; 추가하여도 똑같은 에러 발생으로 Agent Pod의 스펙이 부족한가 의심됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 Agent pod의 스펙은 다음과 같이 로그에 나타난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;1243&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XECIh/btrTvXV8Hk0/Yo2OYfJgh9rNP9Y7DN5QwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XECIh/btrTvXV8Hk0/Yo2OYfJgh9rNP9Y7DN5QwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XECIh/btrTvXV8Hk0/Yo2OYfJgh9rNP9Y7DN5QwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXECIh%2FbtrTvXV8Hk0%2FYo2OYfJgh9rNP9Y7DN5QwK%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;464&quot; height=&quot;671&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;1243&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드 로그에서 빌드 데몬이 메모리가 494.9 MiB를 사용한다는 것(?)으로 유추할 수 있는 로그를 확인하였다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이를 통해 Agent Pod의 &lt;u&gt;&lt;b&gt;스펙이 부족함으로 나타나는 에러 발생&lt;/b&gt;&lt;/u&gt;으로 생각이 굳혀져 갔다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlJScZ/btrTuzuAwOZ/9AP8llGpEjM3UVejni6Txk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlJScZ/btrTuzuAwOZ/9AP8llGpEjM3UVejni6Txk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlJScZ/btrTuzuAwOZ/9AP8llGpEjM3UVejni6Txk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlJScZ%2FbtrTuzuAwOZ%2F9AP8llGpEjM3UVejni6Txk%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;729&quot; height=&quot;123&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;216&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 젠킨스를 Helm으로 Kubernetes에 구축한 환경이라 Jenkins 내 시스템 설정에서 Agent 파드를 설정하는 파트가 존재하지 않았다..&lt;/li&gt;
&lt;li&gt;방법을 강구하던 도중 Jenkins Helm Chart Value 파일을 살펴보았다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[agent.resources] 필드가 존재하였다 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;바로 메모리 두 배 스펙업 고고링&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;helm upgrade jenkins jenkins/jenkins -f jenkins-values.yaml -n jenkins&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;agent:
  enabled: true
  defaultsProviderTemplate: &quot;&quot;
  # URL for connecting to the Jenkins contoller
  jenkinsUrl:
  # connect to the specified host and port, instead of connecting directly to the Jenkins controller
  jenkinsTunnel:
  kubernetesConnectTimeout: 5
  kubernetesReadTimeout: 15
  maxRequestsPerHostStr: &quot;32&quot;
  namespace:
  image: &quot;jenkins/inbound-agent&quot;
  tag: &quot;4.11.2-4&quot;
  workingDir: &quot;/home/jenkins/agent&quot;
  nodeUsageMode: &quot;NORMAL&quot;
  customJenkinsLabels: []
  # name of the secret to be used for image pulling
  imagePullSecretName:
  componentName: &quot;jenkins-agent&quot;
  websocket: false
  privileged: false
  runAsUser:
  runAsGroup:
  hostNetworking: false
  resources:
    requests:
      cpu: &quot;512m&quot;
      memory: &quot;1024Mi&quot;
    limits:
      cpu: &quot;512m&quot;
      memory: &quot;1024Mi&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정의한 스펙이 적용된 것을 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;1336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yQjIB/btrTqDZkPUj/m1T8zpijFEs4cYCAgJBrfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yQjIB/btrTqDZkPUj/m1T8zpijFEs4cYCAgJBrfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yQjIB/btrTqDZkPUj/m1T8zpijFEs4cYCAgJBrfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyQjIB%2FbtrTqDZkPUj%2Fm1T8zpijFEs4cYCAgJBrfk%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;618&quot; height=&quot;960&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;1336&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아시죠 ?
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;뭔가 감이 오잖아요&lt;/li&gt;
&lt;li&gt;될 것 같은 이 기분..&lt;/li&gt;
&lt;li&gt;에러 로그랑 그냥 시작부터 다르다는 것을..&lt;/li&gt;
&lt;li&gt;&lt;b&gt;성공 !!!!!!!  &lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b96jjS/btrTqfEfZO4/NEoD1t9orvMtqnQk8HAawK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b96jjS/btrTqfEfZO4/NEoD1t9orvMtqnQk8HAawK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b96jjS/btrTqfEfZO4/NEoD1t9orvMtqnQk8HAawK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb96jjS%2FbtrTqfEfZO4%2FNEoD1t9orvMtqnQk8HAawK%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;676&quot; height=&quot;627&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1187&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;참고&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Back-End JAR file PATH
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;/home/jenkins/agent/workspace/test-backend/demo/build/libs/demo-0.0.1-SNAPSHOT.jar&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;java -jar &lt;span style=&quot;color: #ee2323;&quot;&gt;demo-0.0.1-SNAPSHOT.jar&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>CI／CD</category>
      <category>Agent</category>
      <category>build</category>
      <category>CI</category>
      <category>gradle</category>
      <category>Jenkins</category>
      <category>springboot</category>
      <category>Trouble Shooting</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/71</guid>
      <comments>https://code1212-uh.tistory.com/71#entry71comment</comments>
      <pubDate>Tue, 13 Dec 2022 09:54:43 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins Webhook 연동</title>
      <link>https://code1212-uh.tistory.com/70</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;  목표&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Github의 Webhook을 구성하고 Jenkins와 연동 후에 Push Event 발생 시 자동으로 빌드가 진행되도록 해보자 !&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ Github Webhook 구성&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Github Access Token 생성&lt;/li&gt;
&lt;/ul&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;1079&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/91H2c/btrTsmOXBqc/uoHQZYFUQQ6iW8yAJKtwI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/91H2c/btrTsmOXBqc/uoHQZYFUQQ6iW8yAJKtwI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/91H2c/btrTsmOXBqc/uoHQZYFUQQ6iW8yAJKtwI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F91H2c%2FbtrTsmOXBqc%2FuoHQZYFUQQ6iW8yAJKtwI0%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;699&quot; height=&quot;656&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;1079&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Github Repository - Setting - Webhooks - Add Webhook&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1YNmj/btrTmuUArfr/Fk4UItk7GOa6vRKaCHBbd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1YNmj/btrTmuUArfr/Fk4UItk7GOa6vRKaCHBbd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1YNmj/btrTmuUArfr/Fk4UItk7GOa6vRKaCHBbd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1YNmj%2FbtrTmuUArfr%2FFk4UItk7GOa6vRKaCHBbd1%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;746&quot; height=&quot;354&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;608&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Payload URL&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;젠킨스 URL + /github-webhook/&lt;/li&gt;
&lt;li&gt;외부에서 접근 가능한 도메인으로만 동작 가능 &amp;rarr; ngrok 서비스 이용&lt;/li&gt;
&lt;li&gt;e.g.) http://jenkins.com&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;/github-webhook/&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Content Type&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;application/json&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;827&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deBnB4/btrTsmuEKh7/kXPdRHOSPKJ4LNdPhxxyKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deBnB4/btrTsmuEKh7/kXPdRHOSPKJ4LNdPhxxyKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deBnB4/btrTsmuEKh7/kXPdRHOSPKJ4LNdPhxxyKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeBnB4%2FbtrTsmuEKh7%2FkXPdRHOSPKJ4LNdPhxxyKk%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;763&quot; height=&quot;493&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;827&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;1280&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6bmF4/btrTig32ic0/a0qEAk2m2kGNHnagbiV9G1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6bmF4/btrTig32ic0/a0qEAk2m2kGNHnagbiV9G1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6bmF4/btrTig32ic0/a0qEAk2m2kGNHnagbiV9G1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6bmF4%2FbtrTig32ic0%2Fa0qEAk2m2kGNHnagbiV9G1%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;767&quot; height=&quot;238&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;398&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ Jenkins Credential 등록 및 관리&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jenkins - Manage Credentials&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;942&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cibhOk/btrTkhBoVfS/AM2NGkqq7lzwvZdBnFBic0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cibhOk/btrTkhBoVfS/AM2NGkqq7lzwvZdBnFBic0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cibhOk/btrTkhBoVfS/AM2NGkqq7lzwvZdBnFBic0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcibhOk%2FbtrTkhBoVfS%2FAM2NGkqq7lzwvZdBnFBic0%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;749&quot; height=&quot;551&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;942&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Credential 등록&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dd0nVy/btrTk3pn2wM/Ag9KaiKxsxGkzkKnYiR1IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dd0nVy/btrTk3pn2wM/Ag9KaiKxsxGkzkKnYiR1IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dd0nVy/btrTk3pn2wM/Ag9KaiKxsxGkzkKnYiR1IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdd0nVy%2FbtrTk3pn2wM%2FAg9KaiKxsxGkzkKnYiR1IK%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;458&quot; height=&quot;403&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;756&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;1280&quot; data-origin-height=&quot;408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qrQ9v/btrThIfsElB/SUt5luKXY8Bl9aMYg1oGJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qrQ9v/btrThIfsElB/SUt5luKXY8Bl9aMYg1oGJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qrQ9v/btrThIfsElB/SUt5luKXY8Bl9aMYg1oGJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqrQ9v%2FbtrThIfsElB%2FSUt5luKXY8Bl9aMYg1oGJK%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;703&quot; height=&quot;224&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;408&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Username&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Github Username 입력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Password&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Github Access Token 입력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqmOmD/btrTkgWNRWm/GphPHKkroWkOJjKcrS0uP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqmOmD/btrTkgWNRWm/GphPHKkroWkOJjKcrS0uP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqmOmD/btrTkgWNRWm/GphPHKkroWkOJjKcrS0uP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqmOmD%2FbtrTkgWNRWm%2FGphPHKkroWkOJjKcrS0uP0%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;661&quot; height=&quot;741&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1435&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성 완료 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;419&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FpT84/btrTmuG0LB5/wwrb6l22bBuSdbtTtd3Nvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FpT84/btrTmuG0LB5/wwrb6l22bBuSdbtTtd3Nvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FpT84/btrTmuG0LB5/wwrb6l22bBuSdbtTtd3Nvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFpT84%2FbtrTmuG0LB5%2Fwwrb6l22bBuSdbtTtd3Nvk%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;747&quot; height=&quot;245&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;419&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ Jenkins Pipeline 프로젝트 구성&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Pipeline 프로젝트 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SGFhW/btrTmvlFX9d/BmtVog1Bn1u6gBxbRSfwZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SGFhW/btrTmvlFX9d/BmtVog1Bn1u6gBxbRSfwZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SGFhW/btrTmvlFX9d/BmtVog1Bn1u6gBxbRSfwZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSGFhW%2FbtrTmvlFX9d%2FBmtVog1Bn1u6gBxbRSfwZ0%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;603&quot; height=&quot;529&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1123&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Push Event를 감지할 깃허브 레포 정보 입력
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Github project 체크&lt;/li&gt;
&lt;li&gt;GitHub hook trigger for GITScm polling 체크&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt7NXp/btrTkhamo7d/Mn3S32zElxE0yppSFsiQ2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt7NXp/btrTkhamo7d/Mn3S32zElxE0yppSFsiQ2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt7NXp/btrTkhamo7d/Mn3S32zElxE0yppSFsiQ2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt7NXp%2FbtrTkhamo7d%2FMn3S32zElxE0yppSFsiQ2k%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;713&quot; height=&quot;651&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1168&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Declarative&lt;/span&gt; 방식으로 파이프라인 작성&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;agent&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pipeline 최상단에 위치하며 특정 job들을 수행할 agent&lt;/li&gt;
&lt;li&gt;대표적으로 node, docker, kubernetes를 parameter로 포함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;stages&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 pipeline이 동작할 때, 실행되는 단계를 의미&lt;/li&gt;
&lt;li&gt;하나 이상의 stage를 정의&lt;/li&gt;
&lt;li&gt;stage 내부적으로 steps를 정의&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;environment&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pipeline 내부에서 key-value 형태로 사용할 수 있는 환경 변수&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;parameters&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pipeline 내부에서 특정 노드, 컨테이너를 실행시킬 때 변수를 제공해야 할 경우 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;pipeline {
    agent ansy
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main',
                    credentialsId: 'github-repo-access-token',
                    url: '&amp;lt;https://github.com/Cucumber-web/Test-Webhook.git&amp;gt;'
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ka2Ni/btrToDjqjvP/JtXufP7TMRNMwCZsgSdN60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ka2Ni/btrToDjqjvP/JtXufP7TMRNMwCZsgSdN60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ka2Ni/btrToDjqjvP/JtXufP7TMRNMwCZsgSdN60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKa2Ni%2FbtrToDjqjvP%2FJtXufP7TMRNMwCZsgSdN60%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;695&quot; height=&quot;370&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;682&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Webhook 트리거를 통해 빌드 작업을 자동화하기 위해서는 최초 빌드를 실행시켜줘야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;961&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIQrRX/btrThk0gJWy/kOkKZ2FPwnWetETjzQk57k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIQrRX/btrThk0gJWy/kOkKZ2FPwnWetETjzQk57k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIQrRX/btrThk0gJWy/kOkKZ2FPwnWetETjzQk57k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIQrRX%2FbtrThk0gJWy%2FkOkKZ2FPwnWetETjzQk57k%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;658&quot; height=&quot;506&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;961&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최초 빌드 성공 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTvd6P/btrTsmOYwah/SkBkwEGU31znB3pIBSWdGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTvd6P/btrTsmOYwah/SkBkwEGU31znB3pIBSWdGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTvd6P/btrTsmOYwah/SkBkwEGU31znB3pIBSWdGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTvd6P%2FbtrTsmOYwah%2FSkBkwEGU31znB3pIBSWdGk%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;689&quot; height=&quot;394&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;732&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ Github Webhook Trigger 발생 후 빌드 자동화 작업&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;앞서 설정한 레포에 간단하게 push event를 발생시켜보자&lt;/li&gt;
&lt;/ul&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;1043&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bssPwG/btrTh5VL8II/oPixyZIxc3dJxb0kYTF0d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bssPwG/btrTh5VL8II/oPixyZIxc3dJxb0kYTF0d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bssPwG/btrTh5VL8II/oPixyZIxc3dJxb0kYTF0d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbssPwG%2FbtrTh5VL8II%2FoPixyZIxc3dJxb0kYTF0d1%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;689&quot; height=&quot;625&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;1043&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자동으로 빌드가 시작된다 !!!!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;925&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WQXPd/btrTsnmOO93/PK0XmxMkPAPkoACdXSWoak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WQXPd/btrTsnmOO93/PK0XmxMkPAPkoACdXSWoak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WQXPd/btrTsnmOO93/PK0XmxMkPAPkoACdXSWoak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWQXPd%2FbtrTsnmOO93%2FPK0XmxMkPAPkoACdXSWoak%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;723&quot; height=&quot;522&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;925&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파드 로그를 살펴보면 Github Repo에서 PushEvent를 받아온 후
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드 agent 파드를 생성 !&lt;/li&gt;
&lt;li&gt;빌드 작업을 마치고 !&lt;/li&gt;
&lt;li&gt;빌드 agent 파드를 종료하고 삭제 !&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcX61Y/btrTobgaCpS/KeGIqhOnBco8MpyHbhrnf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcX61Y/btrTobgaCpS/KeGIqhOnBco8MpyHbhrnf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcX61Y/btrTobgaCpS/KeGIqhOnBco8MpyHbhrnf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcX61Y%2FbtrTobgaCpS%2FKeGIqhOnBco8MpyHbhrnf0%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;766&quot; height=&quot;146&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;244&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;h3 data-ke-size=&quot;size23&quot;&gt;ref.&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://junhyunny.github.io/information/jenkins/github/jenkins-github-webhook/&quot;&gt;젠킨스(Jenkins) GitHub Webhooks 연동&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.jenkins.io/doc/book/pipeline/syntax/#triggers&quot;&gt;Pipeline Syntax&lt;/a&gt;&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>build</category>
      <category>CI</category>
      <category>Jenkins</category>
      <category>webhook</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/70</guid>
      <comments>https://code1212-uh.tistory.com/70#entry70comment</comments>
      <pubDate>Mon, 12 Dec 2022 09:41:16 +0900</pubDate>
    </item>
    <item>
      <title>ArgoCD Helm 설치 &amp;amp; 테스트</title>
      <link>https://code1212-uh.tistory.com/69</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ ArgoCD 설치&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;helm repo 받기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;$ k create namespace argocd

$ helm repo add argo &amp;lt;https://argoproj.github.io/argo-helm&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Vn7Cl/btrTgCzFGEA/Il6lk219mfVfixu9GkDIk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Vn7Cl/btrTgCzFGEA/Il6lk219mfVfixu9GkDIk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Vn7Cl/btrTgCzFGEA/Il6lk219mfVfixu9GkDIk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVn7Cl%2FbtrTgCzFGEA%2FIl6lk219mfVfixu9GkDIk0%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;631&quot; height=&quot;69&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;219&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;argocd 설정 파일 받기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;$ helm show values argo/argo-cd &amp;gt; argocd-values.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crLf33/btrTgc85dkF/j4S3n82mjtDewQxEm2YGU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crLf33/btrTgc85dkF/j4S3n82mjtDewQxEm2YGU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crLf33/btrTgc85dkF/j4S3n82mjtDewQxEm2YGU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrLf33%2FbtrTgc85dkF%2Fj4S3n82mjtDewQxEm2YGU0%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;648&quot; height=&quot;52&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;161&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;helm으로 argocd 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;cmake&quot;&gt;&lt;code&gt;$ helm install argocd argo/argo-cd -n argocd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d06h0V/btrTgBAJ61f/kocfXjLjtZWrAxvpNUV4Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d06h0V/btrTgBAJ61f/kocfXjLjtZWrAxvpNUV4Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d06h0V/btrTgBAJ61f/kocfXjLjtZWrAxvpNUV4Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd06h0V%2FbtrTgBAJ61f%2FkocfXjLjtZWrAxvpNUV4Kk%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;573&quot; height=&quot;416&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1452&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그런데 만들고 보니깐 service도 로드밸런서 타입으로 만들고 싶고.. 리소스도 조정하고 싶은데..&lt;/li&gt;
&lt;li&gt;다시 갈아 엎어보자..!&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;그리고 계속 argo-server pod이 CrashLoopBack 에러로 다운되는 것을 확인&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ helm uninstall argocd -n argocd
These resources were kept due to the resource policy:
[CustomResourceDefinition] applications.argoproj.io
[CustomResourceDefinition] applicationsets.argoproj.io
[CustomResourceDefinition] appprojects.argoproj.io

release &quot;argocd&quot; uninstalled
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;$ helm install argocd argo/argo-cd -n argocd \\
&amp;gt; --set server.service.type=LoadBalancer

NAME: argocd
LAST DEPLOYED: Sat Nov  5 15:52:55 2022
NAMESPACE: argocd
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
In order to access the server UI you have the following options:

1. kubectl port-forward service/argocd-server -n argocd 8080:443

    and then open the browser on  and accept the certificate

2. enable ingress in the values file `server.ingress.enabled` and either
      - Add the annotation for ssl passthrough: &amp;lt;https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#option-1-ssl-passthrough&amp;gt;
      - Set the `configs.params.&quot;server.insecure&quot;` in the values file and terminate SSL at your ingress: &amp;lt;https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#option-2-multiple-ingress-objects-and-hosts&amp;gt;

After reaching the UI the first time you can login with username: admin and the random password generated during the installation. You can find the password by running:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath=&quot;{.data.password}&quot; | base64 -d

(You should delete the initial secret afterwards as suggested by the Getting Started Guide: &amp;lt;https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 완료 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1493&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9iksu/btrThkLQufV/ReC9pfdXNPcuk1tdWBUruk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9iksu/btrThkLQufV/ReC9pfdXNPcuk1tdWBUruk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9iksu/btrThkLQufV/ReC9pfdXNPcuk1tdWBUruk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9iksu%2FbtrThkLQufV%2FReC9pfdXNPcuk1tdWBUruk%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;591&quot; height=&quot;441&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1493&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;근데 보이시나요 ? 불편해 보이는 것이..
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;argocd-repo-server-*** &amp;rarr; &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;CrashLoopBackOff&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  트러블 슈팅&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;figure id=&quot;og_1670653315605&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;argo-repo-server issue: gpg ... --gen-key failed exit status 2 &amp;middot; Issue #9809 &amp;middot; argoproj/argo-cd&quot; data-og-description=&quot;Checklist: I've searched in the docs and FAQ for my answer: https://bit.ly/argocd-faq. I've included steps to reproduce the bug. I've pasted the output of argocd version. Describe the b...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/argoproj/argo-cd/issues/9809#issuecomment-1243415495&quot; data-og-url=&quot;https://github.com/argoproj/argo-cd/issues/9809&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b71Mub/hyQQn4bHDh/3fdKnTwbjaLC6z7OQHlqwk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/argoproj/argo-cd/issues/9809#issuecomment-1243415495&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/argoproj/argo-cd/issues/9809#issuecomment-1243415495&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b71Mub/hyQQn4bHDh/3fdKnTwbjaLC6z7OQHlqwk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;argo-repo-server issue: gpg ... --gen-key failed exit status 2 &amp;middot; Issue #9809 &amp;middot; argoproj/argo-cd&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Checklist: I've searched in the docs and FAQ for my answer: https://bit.ly/argocd-faq. I've included steps to reproduce the bug. I've pasted the output of argocd version. Describe the b...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&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;figure id=&quot;og_1670653323084&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;argocd-repo-server fails to start &amp;middot; Issue #1471 &amp;middot; argoproj/argo-helm&quot; data-og-description=&quot;Describe the bug argocd-repo-server-c784cd67c-qkv5x 0/1 CrashLoopBackOff $ kubectl logs -n argocd argocd-repo-server-c784cd67c-qkv5x time=&amp;quot;2022-09-21T07:44:34Z&amp;quot; level=info msg=&amp;quot;Gener...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/argoproj/argo-helm/issues/1471#issue-1380479655&quot; data-og-url=&quot;https://github.com/argoproj/argo-helm/issues/1471&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iYL91/hyQQBuz30v/TQcya94lCwQ9d1ta2zgzJ1/img.png?width=1200&amp;amp;height=600&amp;amp;face=976_131_1026_187&quot;&gt;&lt;a href=&quot;https://github.com/argoproj/argo-helm/issues/1471#issue-1380479655&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/argoproj/argo-helm/issues/1471#issue-1380479655&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iYL91/hyQQBuz30v/TQcya94lCwQ9d1ta2zgzJ1/img.png?width=1200&amp;amp;height=600&amp;amp;face=976_131_1026_187');&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;argocd-repo-server fails to start &amp;middot; Issue #1471 &amp;middot; argoproj/argo-helm&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Describe the bug argocd-repo-server-c784cd67c-qkv5x 0/1 CrashLoopBackOff $ kubectl logs -n argocd argocd-repo-server-c784cd67c-qkv5x time=&quot;2022-09-21T07:44:34Z&quot; level=info msg=&quot;Gener...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&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;figure id=&quot;og_1670653323107&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;GnuPG verification - Argo CD - Declarative GitOps CD for Kubernetes&quot; data-og-description=&quot;GnuPG signature verification Overview As of v1.7 it is possible to configure ArgoCD to only sync against commits that are signed in Git using GnuPG. Signature verification is configured on project level. If a project is configured to enforce signature veri&quot; data-og-host=&quot;argo-cd.readthedocs.io&quot; data-og-source-url=&quot;https://argo-cd.readthedocs.io/en/stable/user-guide/gpg-verification/&quot; data-og-url=&quot;https://argo-cd.readthedocs.io/en/stable/user-guide/gpg-verification/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://argo-cd.readthedocs.io/en/stable/user-guide/gpg-verification/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://argo-cd.readthedocs.io/en/stable/user-guide/gpg-verification/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;GnuPG verification - Argo CD - Declarative GitOps CD for Kubernetes&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GnuPG signature verification Overview As of v1.7 it is possible to configure ArgoCD to only sync against commits that are signed in Git using GnuPG. Signature verification is configured on project level. If a project is configured to enforce signature veri&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;argo-cd.readthedocs.io&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 버전에 나타나는 비슷한 이슈가 있었다.&lt;/li&gt;
&lt;li&gt;configs.gpgKeys를 통해 &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;잘못된&lt;/b&gt;&lt;/span&gt;&lt;/u&gt; 사용자 지정 GPG 키를 키링으로 가져오는 것에 대한 이슈라고 나온다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;솔직히 정확하게 관련 이슈를 분석하진 못했지만 해결법을 참고하는 데는 도움이 되었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;argocd-repo-server Deployment 매니페스트 수정 및 적용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;spec.template.spec.seccomProfile.type&lt;/span&gt; 부분을 삭제하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: argocd-repo-server
spec:
  template:
    spec:
      securityContext:
      ############삭제##########
        seccompProfile:
          type: RuntimeDefault
      #########################&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상 동작 확인 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZHoOa/btrTixKqelG/bB3PiAwswIlS6irxLN7Bnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZHoOa/btrTixKqelG/bB3PiAwswIlS6irxLN7Bnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZHoOa/btrTixKqelG/bB3PiAwswIlS6irxLN7Bnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZHoOa%2FbtrTixKqelG%2FbB3PiAwswIlS6irxLN7Bnk%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;649&quot; height=&quot;175&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;540&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ ArgoCD 실행&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;check admin passwd&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath=&quot;{.data.password}&quot; | base64 -d
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;console login&lt;/li&gt;
&lt;/ul&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;719&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdFSQA/btrTheruJaw/0nqNCL0CcRCR1odWpLdrx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdFSQA/btrTheruJaw/0nqNCL0CcRCR1odWpLdrx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdFSQA/btrTheruJaw/0nqNCL0CcRCR1odWpLdrx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdFSQA%2FbtrTheruJaw%2F0nqNCL0CcRCR1odWpLdrx1%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;619&quot; height=&quot;387&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;719&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 !&lt;/li&gt;
&lt;/ul&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;719&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bswBW8/btrTheLLNdh/le1s0AbmcHzp3ZMkDpR5o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bswBW8/btrTheLLNdh/le1s0AbmcHzp3ZMkDpR5o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bswBW8/btrTheLLNdh/le1s0AbmcHzp3ZMkDpR5o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbswBW8%2FbtrTheLLNdh%2Fle1s0AbmcHzp3ZMkDpR5o1%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;618&quot; height=&quot;386&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;719&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;argocd cli 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;$ brew install argocd

$ argocd version

argocd: v2.5.1+504da42.dirty
  BuildDate: 2022-11-01T23:23:38Z
  GitCommit: 504da424c2c9bb91d7fb2ebf3ae72162e7a5a5be
  GitTreeState: dirty
  GoVersion: go1.19.3
  Compiler: gc
  Platform: darwin/arm64
FATA[0000] Argo CD server address unspecified&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;argocd login
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;login을 안 하고 argocd CLI 명령어 입력 시 다음과 같은 에러 발생&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;FATA[0000] rpc error: code = Unauthenticated desc = invalid session: Token is expired&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;asciidoc&quot;&gt;&lt;code&gt;$ argocd login argocd-argocd-server-81f92-13865802-c00c18872b20.kr.lb.naverncp.com

WARNING: server certificate had error: x509: &amp;ldquo;Argo CD&amp;rdquo; certificate is not trusted. Proceed insecurely (y/n)? y
Username: admin
Password:
'admin:login' logged in successfully
Context 'argocd-argocd-server-81f92-13865802-c00c18872b20.kr.lb.naverncp.com' updated
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;$ argocd version

argocd: v2.5.1+504da42.dirty
  BuildDate: 2022-11-01T23:23:38Z
  GitCommit: 504da424c2c9bb91d7fb2ebf3ae72162e7a5a5be
  GitTreeState: dirty
  GoVersion: go1.19.3
  Compiler: gc
  Platform: darwin/arm64
argocd-server: v2.5.1+504da42
  BuildDate: 2022-11-01T21:14:30Z
  GitCommit: 504da424c2c9bb91d7fb2ebf3ae72162e7a5a5be
  GitTreeState: clean
  GoVersion: go1.18.8
  Compiler: gc
  Platform: linux/amd64
  Kustomize Version: v4.5.7 2022-08-02T16:35:54Z
  Helm Version: v3.10.1+g9f88ccb
  Kubectl Version: v0.24.2
  Jsonnet Version: v0.18.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;password 바꾸기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ argocd account update-password

*** Enter password of currently logged in user (admin):
*** Enter new password for user admin:
*** Confirm new password for user admin:
Password updated
Context 'argocd-argocd-server-81f92-13865802-c00c18872b20.kr.lb.naverncp.com' updated
&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ Sample Application으로 ArgoCD 동작 확인&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Helm으로 Sample Application 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;$ argocd app create helm-guestbook --repo &amp;lt;https://github.com/UhyeongJo/argocd-example-apps.git&amp;gt; --path helm-guestbook --dest-server &amp;lt;https://kubernetes.default.svc&amp;gt; --dest-namespace argocd

application 'helm-guestbook' created
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아직 Github에서 애플리케이션의 helm 차트를 검색하고 생성하였지만 Kubernetes 리소스랑 동기화를 하지 않았으므로 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;OutOfSync&lt;/span&gt;&lt;/b&gt; 상태 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;739&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCflHM/btrTgRiXR5M/EEAzNwKjLtuLiIiIm4gQO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCflHM/btrTgRiXR5M/EEAzNwKjLtuLiIiIm4gQO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCflHM/btrTgRiXR5M/EEAzNwKjLtuLiIiIm4gQO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCflHM%2FbtrTgRiXR5M%2FEEAzNwKjLtuLiIiIm4gQO0%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;590&quot; height=&quot;218&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;739&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;860&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/busauz/btrTg3wLiid/OKv61cXdFqNKDD88rm5IvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/busauz/btrTg3wLiid/OKv61cXdFqNKDD88rm5IvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/busauz/btrTg3wLiid/OKv61cXdFqNKDD88rm5IvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbusauz%2FbtrTg3wLiid%2FOKv61cXdFqNKDD88rm5IvK%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;408&quot; height=&quot;333&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;702&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Argocd CLI를 사용해서 동기화하는 법도 있지만 콘솔 창을 활용해서 동기화를 시도해보겠다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;$ argocd app sync helm-guestbook&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Synchronize !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFkIzK/btrThza6z3Y/KIgaiSfAW47rxjxiFMfQPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFkIzK/btrThza6z3Y/KIgaiSfAW47rxjxiFMfQPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFkIzK/btrThza6z3Y/KIgaiSfAW47rxjxiFMfQPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFkIzK%2FbtrThza6z3Y%2FKIgaiSfAW47rxjxiFMfQPk%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;532&quot; height=&quot;295&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1109&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동기화 성공 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GgOSx/btrTjFOZd2Z/w7ENlX9Vu8HX8nN93T2UK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GgOSx/btrTjFOZd2Z/w7ENlX9Vu8HX8nN93T2UK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GgOSx/btrTjFOZd2Z/w7ENlX9Vu8HX8nN93T2UK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGgOSx%2FbtrTjFOZd2Z%2Fw7ENlX9Vu8HX8nN93T2UK0%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;409&quot; height=&quot;340&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;715&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;2000&quot; data-origin-height=&quot;621&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oo9t7/btrTk2wouVY/AkKXd3iVbbAnlohCirKI90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oo9t7/btrTk2wouVY/AkKXd3iVbbAnlohCirKI90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oo9t7/btrTk2wouVY/AkKXd3iVbbAnlohCirKI90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foo9t7%2FbtrTk2wouVY%2FAkKXd3iVbbAnlohCirKI90%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;638&quot; height=&quot;198&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;621&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;포트 포워딩을 통해 guestbook 서비스에 접속 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;8080은 젠킨스가 쓰고 있어서..ㅎㅎ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;$ kubectl port-forward svc/helm-guestbook 9090:80
&lt;/code&gt;&lt;/pre&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;1060&quot; data-origin-height=&quot;505&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVFQ7n/btrTk3aZwoF/kZxTyxMl0gJyKxLgCv0oxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVFQ7n/btrTk3aZwoF/kZxTyxMl0gJyKxLgCv0oxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVFQ7n/btrTk3aZwoF/kZxTyxMl0gJyKxLgCv0oxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVFQ7n%2FbtrTk3aZwoF%2FkZxTyxMl0gJyKxLgCv0oxk%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;581&quot; height=&quot;277&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;505&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 버전의 이미지를 선언하여 GitOps를 활용한 Application 업데이트를 해보자
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 지원하는 이미지 버전은 &lt;a href=&quot;https://console.cloud.google.com/gcr/images/heptio-images/global/ks-guestbook-demo&quot;&gt;해당 GCR&lt;/a&gt;에서 확인 가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;827&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnT43v/btrTh4V06QN/AavBUv0C4Uby1bxNGWLik1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnT43v/btrTh4V06QN/AavBUv0C4Uby1bxNGWLik1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnT43v/btrTh4V06QN/AavBUv0C4Uby1bxNGWLik1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnT43v%2FbtrTh4V06QN%2FAavBUv0C4Uby1bxNGWLik1%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;606&quot; height=&quot;251&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;827&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지 버전 태그 변경 후 Push&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOz6g4/btrTjGtA3x2/G3AJsALQMXTY1i9knfGEFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOz6g4/btrTjGtA3x2/G3AJsALQMXTY1i9knfGEFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOz6g4/btrTjGtA3x2/G3AJsALQMXTY1i9knfGEFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOz6g4%2FbtrTjGtA3x2%2FG3AJsALQMXTY1i9knfGEFk%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;348&quot; height=&quot;154&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;296&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;1250&quot; data-origin-height=&quot;148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcANLo/btrTh5gkkVk/vbzDmKjpBxUpSj97Kebsck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcANLo/btrTh5gkkVk/vbzDmKjpBxUpSj97Kebsck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcANLo/btrTh5gkkVk/vbzDmKjpBxUpSj97Kebsck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcANLo%2FbtrTh5gkkVk%2FvbzDmKjpBxUpSj97Kebsck%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;514&quot; height=&quot;61&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;148&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;960&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNYvvp/btrTlsofqda/txIK3COgCVUOXawf543iPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNYvvp/btrTlsofqda/txIK3COgCVUOXawf543iPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNYvvp/btrTlsofqda/txIK3COgCVUOXawf543iPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNYvvp%2FbtrTlsofqda%2FtxIK3COgCVUOXawf543iPK%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;503&quot; height=&quot;131&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;250&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동기화를 해야겠죠 ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;815&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LXYc6/btrTgqTzjaf/oaTnkRXiPqtIO033W023d0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LXYc6/btrTgqTzjaf/oaTnkRXiPqtIO033W023d0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LXYc6/btrTgqTzjaf/oaTnkRXiPqtIO033W023d0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLXYc6%2FbtrTgqTzjaf%2FoaTnkRXiPqtIO033W023d0%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;664&quot; height=&quot;271&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;815&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: #ee2323; background-color: #dddddd;&quot;&gt;&lt;b&gt;&amp;rarr; Sync in progress&amp;hellip;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;991&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I1nac/btrThOsiGDC/s5Hns584Il7OqmKhtOc8N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I1nac/btrThOsiGDC/s5Hns584Il7OqmKhtOc8N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I1nac/btrThOsiGDC/s5Hns584Il7OqmKhtOc8N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI1nac%2FbtrThOsiGDC%2Fs5Hns584Il7OqmKhtOc8N1%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;624&quot; height=&quot;309&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;991&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: #ee2323; background-color: #dddddd;&quot;&gt;&lt;b&gt;&amp;rarr; Sync Done !&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;938&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XbEig/btrTh5Hoes6/zeB8dlPK7LRf85Z95FCbc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XbEig/btrTh5Hoes6/zeB8dlPK7LRf85Z95FCbc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XbEig/btrTh5Hoes6/zeB8dlPK7LRf85Z95FCbc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXbEig%2FbtrTh5Hoes6%2FzeB8dlPK7LRf85Z95FCbc1%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;608&quot; height=&quot;285&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;938&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;잘 적용이 되었는지 확인해야겠죠?
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;빤&lt;/span&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;딱&lt;/span&gt; &lt;span style=&quot;color: #409d00;&quot;&gt;빤&lt;/span&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;딱&lt;/span&gt; &lt;span style=&quot;color: #953b34;&quot;&gt;빛&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;나&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;는&lt;/span&gt; &lt;span style=&quot;color: #f89009;&quot;&gt;로&lt;/span&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;고&lt;/span&gt;&lt;/b&gt;로 바뀐 버전이 잘 적용된 것을 확인 !&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;949&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XNbbk/btrTk3hLg4O/zFWtjCjRpJZRQdm2q4kK0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XNbbk/btrTk3hLg4O/zFWtjCjRpJZRQdm2q4kK0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XNbbk/btrTk3hLg4O/zFWtjCjRpJZRQdm2q4kK0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXNbbk%2FbtrTk3hLg4O%2FzFWtjCjRpJZRQdm2q4kK0K%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;622&quot; height=&quot;295&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;949&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;ref.&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-deploy-to-kubernetes-using-argo-cd-and-gitops&quot;&gt;How to Deploy to Kubernetes using Argo CD and GitOps | DigitalOcean&lt;/a&gt;&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>argocd</category>
      <category>cd</category>
      <category>helm</category>
      <category>Sample Application</category>
      <category>troubleshooting</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/69</guid>
      <comments>https://code1212-uh.tistory.com/69#entry69comment</comments>
      <pubDate>Sat, 10 Dec 2022 15:40:49 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins 환경 설정 및 빌드 테스트</title>
      <link>https://code1212-uh.tistory.com/68</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;  목표&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;젠킨스를 설치했으니 필요한 환경설정 구성 및 빌드 테스트를 진행해보고자 한다 !&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;⚡ Leggo&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필요한 플러그인 설치 및 확인
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kubernetes, GitLab, Webhook..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;721&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q9F59/btrTdHlMNnK/AdpuxnFcIrAKMLl4Cus4Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q9F59/btrTdHlMNnK/AdpuxnFcIrAKMLl4Cus4Ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q9F59/btrTdHlMNnK/AdpuxnFcIrAKMLl4Cus4Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq9F59%2FbtrTdHlMNnK%2FAdpuxnFcIrAKMLl4Cus4Ik%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;746&quot; height=&quot;420&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;721&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웬만한 사전 설정은 Helm 파일을 통해 미리 구성이 된 상태인 것 같아 딱히 만질 것은 보이지 않았다.&lt;/li&gt;
&lt;li&gt;일단 하나는 기억하면 좋을 것이 있어 가져와 보았다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;# of executors&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;u&gt;동시에 배포 가능한 스레드 수&lt;/u&gt;를 의미하며 &amp;lsquo;0&amp;rsquo;은 동시에 여러 배포가 진행되지 않도록 하는 설정이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIrDBZ/btrTa4vHnZa/MKRq0EpNP53rIKS6sKVctK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIrDBZ/btrTa4vHnZa/MKRq0EpNP53rIKS6sKVctK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIrDBZ/btrTa4vHnZa/MKRq0EpNP53rIKS6sKVctK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIrDBZ%2FbtrTa4vHnZa%2FMKRq0EpNP53rIKS6sKVctK%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;518&quot; height=&quot;487&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;902&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트 빌드 스크립트를 작성하여 빌드 잡을 만들어보자&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;701&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ICF11/btrTbuOgS6V/RGYxce40BXE3Kaqyu05js1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ICF11/btrTbuOgS6V/RGYxce40BXE3Kaqyu05js1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ICF11/btrTbuOgS6V/RGYxce40BXE3Kaqyu05js1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FICF11%2FbtrTbuOgS6V%2FRGYxce40BXE3Kaqyu05js1%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;645&quot; height=&quot;427&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;701&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Pipeline을 선택해준다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;FreeStyle&lt;/b&gt; : Jenkins 자체 GUI를 활용해서 Flow 정의
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장점 : 쉽게 접근 가능&lt;/li&gt;
&lt;li&gt;단점 : 제한적인 커스터마이징&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pipeline&lt;/b&gt; : 코드를 통해 연속적인 이벤트 혹은 Job의 그룹 정의
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장점 : 폭이 넓은 커스터마이징 / 병렬적인 처리 가능&lt;/li&gt;
&lt;li&gt;단점 : 어려움&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;898&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y1S4i/btrTeMf5gQQ/c4SR5fZO6SoJXOuvgFs4tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y1S4i/btrTeMf5gQQ/c4SR5fZO6SoJXOuvgFs4tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y1S4i/btrTeMf5gQQ/c4SR5fZO6SoJXOuvgFs4tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy1S4i%2FbtrTeMf5gQQ%2Fc4SR5fZO6SoJXOuvgFs4tk%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;657&quot; height=&quot;557&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;898&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드 테스트 스크립트&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;podTemplate(label: 'builder',
            containers: [
                containerTemplate(name: 'gradle', image: 'gradle:5.6-jdk8', command: 'cat', ttyEnabled: true),
            ]) {
    node('builder') {
        stage('Build') {
            container('gradle') {
                sh &quot;echo pipeline test&quot;
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드 스크립트 작성 및 설정&lt;/li&gt;
&lt;/ul&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;1056&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LbhKl/btrS7JlxeLj/DPD8A7NzSOPzLxLM53Chz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LbhKl/btrS7JlxeLj/DPD8A7NzSOPzLxLM53Chz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LbhKl/btrS7JlxeLj/DPD8A7NzSOPzLxLM53Chz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLbhKl%2FbtrS7JlxeLj%2FDPD8A7NzSOPzLxLM53Chz1%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;744&quot; height=&quot;683&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;1056&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;999&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bclNNK/btrTaCGo2hY/cFlK9eiFN3fr0yJPGmwgkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bclNNK/btrTaCGo2hY/cFlK9eiFN3fr0yJPGmwgkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bclNNK/btrTaCGo2hY/cFlK9eiFN3fr0yJPGmwgkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbclNNK%2FbtrTaCGo2hY%2FcFlK9eiFN3fr0yJPGmwgkK%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;683&quot; height=&quot;644&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;999&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌드 잡 성공 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1OkE8/btrTbvTT0Ns/J52UXoez8FaPsU8EEdqvtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1OkE8/btrTbvTT0Ns/J52UXoez8FaPsU8EEdqvtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1OkE8/btrTbvTT0Ns/J52UXoez8FaPsU8EEdqvtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1OkE8%2FbtrTbvTT0Ns%2FJ52UXoez8FaPsU8EEdqvtk%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;549&quot; height=&quot;288&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;콘솔을 통해 성공 확인&lt;/li&gt;
&lt;/ul&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;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBTvPz/btrTa4oSoKl/kkBup4ucriR6afSoA4Y340/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBTvPz/btrTa4oSoKl/kkBup4ucriR6afSoA4Y340/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBTvPz/btrTa4oSoKl/kkBup4ucriR6afSoA4Y340/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBTvPz%2FbtrTa4oSoKl%2FkkBup4ucriR6afSoA4Y340%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;643&quot; height=&quot;399&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;714&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;1060&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nbgBB/btrTb1rvxFR/yx7f4NU9Shqu3a2xWC4REK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nbgBB/btrTb1rvxFR/yx7f4NU9Shqu3a2xWC4REK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nbgBB/btrTb1rvxFR/yx7f4NU9Shqu3a2xWC4REK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnbgBB%2FbtrTb1rvxFR%2Fyx7f4NU9Shqu3a2xWC4REK%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;658&quot; height=&quot;392&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;631&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;K8s Pod 이벤트 로그를 확인해보니 정상적으로 빌드 Agent 파드가 생성되었다가 종료되는 것을 확인 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v84tz/btrTcF2NvLE/HdMs6pzX2sgUKvHFmWxb71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v84tz/btrTcF2NvLE/HdMs6pzX2sgUKvHFmWxb71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v84tz/btrTcF2NvLE/HdMs6pzX2sgUKvHFmWxb71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv84tz%2FbtrTcF2NvLE%2FHdMs6pzX2sgUKvHFmWxb71%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;712&quot; height=&quot;197&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;294&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;h3 data-ke-size=&quot;size23&quot;&gt;ref.&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://bryan.wiki/295&quot;&gt;[Kubernetes - CI/CD] Customized Jenkins 제작과 활용 - 1/2&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://twofootdog.tistory.com/11&quot;&gt;쿠버네티스 시작하기(7) - CI/CD 파이프라인 만들기(1/3) - 쿠버네티스 클러스터에 jenkins 설치 및 설정&lt;/a&gt;&lt;/p&gt;</description>
      <category>CI／CD</category>
      <category>Jenkins</category>
      <category>kubernetes</category>
      <category>Setting</category>
      <category>TestBuild</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/68</guid>
      <comments>https://code1212-uh.tistory.com/68#entry68comment</comments>
      <pubDate>Fri, 9 Dec 2022 09:35:26 +0900</pubDate>
    </item>
    <item>
      <title>Jenkins Helm 설치</title>
      <link>https://code1212-uh.tistory.com/67</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;  목표&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Helm을 사용해서 Jenkins를 Kubernetes 클러스터 환경에 구축해보자 !&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;⚡ Leggo&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Helm 설치 for Mac OS&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;$ brew install helm
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;helm repo 추가하기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;gams&quot;&gt;&lt;code&gt;$ helm repo add jenkins &amp;lt;https://charts.jenkins.io&amp;gt;
$ helm repo update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u6ey7/btrTbjMRATp/skkScSstCEBPjo0yW0CI61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u6ey7/btrTbjMRATp/skkScSstCEBPjo0yW0CI61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u6ey7/btrTbjMRATp/skkScSstCEBPjo0yW0CI61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu6ey7%2FbtrTbjMRATp%2FskkScSstCEBPjo0yW0CI61%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;768&quot; height=&quot;117&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;195&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;jenkins 설정 파일인 values.yaml 받기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;$ helm show values jenkins/jenkins &amp;gt; jenkins-values.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lKvmG/btrTa76Ok5r/geoWly2ssZjtGqJM3DWFvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lKvmG/btrTa76Ok5r/geoWly2ssZjtGqJM3DWFvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lKvmG/btrTa76Ok5r/geoWly2ssZjtGqJM3DWFvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlKvmG%2FbtrTa76Ok5r%2FgeoWly2ssZjtGqJM3DWFvK%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;759&quot; height=&quot;60&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;101&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;jenkins namespace 생성 후 jenkins chart 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;# Helm 3
$ helm install [RELEASE_NAME] jenkins/jenkins [flags]

$ kubectl create namespace jenkins
$ helm install jenkins jenkins/jenkins -f jenkins-values.yaml -n jenkins
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blfdk8/btrS9qlM1lS/jRkX4Yw9dHP4c2xETfiki1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blfdk8/btrS9qlM1lS/jRkX4Yw9dHP4c2xETfiki1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blfdk8/btrS9qlM1lS/jRkX4Yw9dHP4c2xETfiki1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblfdk8%2FbtrS9qlM1lS%2FjRkX4Yw9dHP4c2xETfiki1%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;790&quot; height=&quot;328&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;532&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비밀 번호 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;$ helm status jenkins -n jenkins

...

$ kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password &amp;amp;&amp;amp; echo

...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부에서 jenkins dashboard에 접근하기 위해 kubenetes service에 포트 포워딩을 사용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ k port-forward svc/jenkins 8080:8080 -n jenkins

Forwarding from 127.0.0.1:8080 -&amp;gt; 8080
Forwarding from [::1]:8080 -&amp;gt; 8080
Handling connection for 8080
Handling connection for 8080
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;접속
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;127.0.0.1:8080&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;683&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m13xX/btrTaNOpm1l/mvEkYL5Pi9PHuw3UlNMBjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m13xX/btrTaNOpm1l/mvEkYL5Pi9PHuw3UlNMBjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m13xX/btrTaNOpm1l/mvEkYL5Pi9PHuw3UlNMBjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm13xX%2FbtrTaNOpm1l%2FmvEkYL5Pi9PHuw3UlNMBjk%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;710&quot; height=&quot;505&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;683&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Account
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;id : admin&lt;/li&gt;
&lt;li&gt;&lt;s&gt;pwd : ********&lt;/s&gt; &amp;rarr; 변경 완료&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;로그인 성공&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;860&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PG4cd/btrTaz3Q1hj/viJKyrENyo7zLRYFCO8sNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PG4cd/btrTaz3Q1hj/viJKyrENyo7zLRYFCO8sNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PG4cd/btrTaz3Q1hj/viJKyrENyo7zLRYFCO8sNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPG4cd%2FbtrTaz3Q1hj%2FviJKyrENyo7zLRYFCO8sNk%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;716&quot; height=&quot;481&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;860&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지금은 클러스터가 private 환경이어서 로컬에서만 접속 가능하다.&lt;/li&gt;
&lt;li&gt;외부에서 jenkins에 접근을 위해 service 타입을 모두 &lt;span style=&quot;color: #ee2323;&quot;&gt;loadbalancer&lt;/span&gt;로 변경해주었다 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;먼저 values.yaml 파일 변경 !&lt;/li&gt;
&lt;li&gt;serviceType: &lt;span style=&quot;color: #ee2323;&quot;&gt;ClusterIP&lt;/span&gt; &amp;rarr; &lt;span style=&quot;color: #ee2323;&quot;&gt;LoadBalancer&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변경 사항 적용 !&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ helm upgrade jenkins jenkins/jenkins -f jenkins-values.yaml -n jenkins
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;REVISION = Release 횟수&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EwQcQ/btrTaMB0aH9/kkJ4k7eHXVkvXxf093jkC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EwQcQ/btrTaMB0aH9/kkJ4k7eHXVkvXxf093jkC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EwQcQ/btrTaMB0aH9/kkJ4k7eHXVkvXxf093jkC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEwQcQ%2FbtrTaMB0aH9%2FkkJ4k7eHXVkvXxf093jkC0%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;763&quot; height=&quot;157&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;264&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EXTERNAL-IP 발급 성공 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;228&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ARsI1/btrTaNVdJEb/UboSqL1deXdJJUAqMpxhsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ARsI1/btrTaNVdJEb/UboSqL1deXdJJUAqMpxhsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ARsI1/btrTaNVdJEb/UboSqL1deXdJJUAqMpxhsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FARsI1%2FbtrTaNVdJEb%2FUboSqL1deXdJJUAqMpxhsK%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;759&quot; height=&quot;135&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;228&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;접속도 좋구만요 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IEjob/btrTaOGD6Z8/EMLwkpukkNAfjnbr95jEmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IEjob/btrTaOGD6Z8/EMLwkpukkNAfjnbr95jEmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IEjob/btrTaOGD6Z8/EMLwkpukkNAfjnbr95jEmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIEjob%2FbtrTaOGD6Z8%2FEMLwkpukkNAfjnbr95jEmk%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;776&quot; height=&quot;655&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1080&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;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/jenkinsci/helm-charts/tree/main/charts/jenkins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/jenkinsci/helm-charts/tree/main/charts/jenkins&lt;/a&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>CI／CD</category>
      <category>helm</category>
      <category>Jenkins</category>
      <category>kubernetes</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/67</guid>
      <comments>https://code1212-uh.tistory.com/67#entry67comment</comments>
      <pubDate>Fri, 9 Dec 2022 09:25:50 +0900</pubDate>
    </item>
    <item>
      <title>Vi vs. Vim</title>
      <link>https://code1212-uh.tistory.com/66</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪ Vi ?&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt; &lt;b&gt; Vi (Visual Editor)&lt;/b&gt; : 유닉스(UNIX) 계열 운영체제의 오픈소스 문서 편집기&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한 줄씩 편집하는 줄 단위 편집기(line editor)가 아닌 한 화면을 편집하는 &lt;b&gt;비주얼 에디터(visual editor)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;515&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwn2kW/btrSwDr8Mg6/fjXIfrcRyr6xbhaAKej5w1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwn2kW/btrSwDr8Mg6/fjXIfrcRyr6xbhaAKej5w1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwn2kW/btrSwDr8Mg6/fjXIfrcRyr6xbhaAKej5w1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwn2kW%2FbtrSwDr8Mg6%2FfjXIfrcRyr6xbhaAKej5w1%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;509&quot; height=&quot;273&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;515&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;모드&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;일반 모드&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위, 아래, 왼쪽, 오른쪽 &amp;rarr; &lt;span style=&quot;color: #ee2323;&quot;&gt;K&lt;/span&gt;,&lt;span style=&quot;color: #ee2323;&quot;&gt; J&lt;/span&gt;, &lt;span style=&quot;color: #ee2323;&quot;&gt;H&lt;/span&gt;, &lt;span style=&quot;color: #ee2323;&quot;&gt;L&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;입력 모드&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;i&lt;/span&gt; (현재 커서 위치)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;a&lt;/span&gt; (현재 커서 한 칸 뒤)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;o&lt;/span&gt; (한 줄 추가 후)&lt;/li&gt;
&lt;li&gt;위, 아래, 왼쪽, 오른쪽 &amp;rarr; &lt;span style=&quot;color: #ee2323;&quot;&gt;Alt &lt;/span&gt;+ ( &lt;span style=&quot;color: #ee2323;&quot;&gt;K&lt;/span&gt;, &lt;span style=&quot;color: #ee2323;&quot;&gt;J&lt;/span&gt;, &lt;span style=&quot;color: #ee2323;&quot;&gt;H&lt;/span&gt;, &lt;span style=&quot;color: #ee2323;&quot;&gt;L &lt;/span&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;명령 모드&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;:w&lt;/span&gt; (파일 저장)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;:q&lt;/span&gt; (vi 종료 / &lt;span style=&quot;color: #ee2323;&quot;&gt;:q!&lt;/span&gt; 강제 종료)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;:wq&lt;/span&gt; (저장 후 종료)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ Vi vs. Vim&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;Vim (vi imitation)&lt;/b&gt; &amp;rarr; &lt;b&gt;Vim (vi improved)&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vi와 높은 호환성을 가지며 &lt;b&gt;다양한 기능 + 플러그인 지원&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;다양한 기능&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일의&amp;nbsp;완성,&amp;nbsp;비교,&amp;nbsp;병합(vimdiff), 통합된 도움말 시스템, 확장된&amp;nbsp;정규 표현식, 플러그인 지원을 포함한&amp;nbsp;스크립트 언어,&amp;nbsp;그래픽 사용자 인터페이스(gvim),&amp;nbsp;마우스&amp;nbsp;상호작용(GUI와 함께/GUI 없이), 세션 상태 보존,&amp;nbsp;맞춤법 검사, 수직/수평 탭 창,&amp;nbsp;유니코드&amp;nbsp;및 기타 다언어 지원,&amp;nbsp;문법 강조, 세션 경유 명령, 검색 및 커서 위치 History, 시각 모드 ~~~~~ &amp;hellip;&lt;/li&gt;
&lt;li&gt;암튼 엄청 많이 확장됨&lt;/li&gt;
&lt;li&gt;출처 - &lt;a href=&quot;https://ko.wikipedia.org/wiki/Vim&quot;&gt;위키피디아&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ Why Vi ?&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커서 이동을 비롯하여 대부분의 편집 명령어가 키보드 중심에 몰려있음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마우스를 이용하지 않겠다는 포부&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;타 편집기에 비해 손동작이나 타수가 크게 줄어든다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 매크로 키 조합으로 다양한 작업 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버 관리 작업을 수행할 경우 따로 에디터 사용보다는 터미널 상에서 작업이 용이&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;초기 모드가 편집 모드로 '편집' 하면서 시작하는 것을 전제하고 만들어져 있는 강력한 편집기의 기능 수행
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장점이자 단점..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;ref.&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://namu.wiki/w/vi&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://namu.wiki/w/vi&lt;/a&gt;&lt;/p&gt;</description>
      <category>OS/Linux</category>
      <category>Editor</category>
      <category>Linux</category>
      <category>vi</category>
      <category>VIM</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/66</guid>
      <comments>https://code1212-uh.tistory.com/66#entry66comment</comments>
      <pubDate>Thu, 1 Dec 2022 11:13:51 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 패키지 시스템</title>
      <link>https://code1212-uh.tistory.com/65</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ 리눅스 패키지&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;리눅스 패키지 (Linux Package)&lt;/b&gt; : 소프트웨어를 실행하는데 필요한 파일들이 담겨 있는 설치 파일&lt;/blockquote&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;1600&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WB3O1/btrSxkZWJ7F/DeQIHxbpKS4VF1wXs8gCZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WB3O1/btrSxkZWJ7F/DeQIHxbpKS4VF1wXs8gCZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WB3O1/btrSxkZWJ7F/DeQIHxbpKS4VF1wXs8gCZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWB3O1%2FbtrSxkZWJ7F%2FDeQIHxbpKS4VF1wXs8gCZ0%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;752&quot; height=&quot;251&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;소스 패키지 (Source Package)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;. tgz (source code archives)&lt;/li&gt;
&lt;li&gt;소스 코드가 들어있는 패키지&lt;/li&gt;
&lt;li&gt;컴파일을 통해 바이너리 파일로 만들어야 실행 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;소스 코드 수정을 통해 소프트웨어 커스텀 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;컴파일 작업으로 인한 설치 소요 시간 증가 / 컴파일 과정에서 에러 발생 가능성 존재&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;바이너리 패키지 (Binary Package)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;*. deb (Debian) / *. rpm (Red Hat)&lt;/li&gt;
&lt;li&gt;이미 성공적으로 컴파일이 끝나 응용 프로그램, 라이브러리 등이 들어있는 바이너리 파일 패키지&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;이미 컴파일된 패키지이므로 설치 소요 시간 단축 / 에러 발생 가능성 감소&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;컴파일 된 환경과 설치를 진행할 로컬 컴퓨터상 환경이 다름으로써 이슈 발생 가능성 존재&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ deb vs. rpm&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;deb&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Debian 계열에서 사용하는 패키지 도구&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;rpm&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Red Hat 계열에서 사용하는 패키지 도구&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ rpm vs. yum&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;852&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LihbK/btrSAx42B4Y/kaL20c3Yk4Ey6vJo9KTboK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LihbK/btrSAx42B4Y/kaL20c3Yk4Ey6vJo9KTboK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LihbK/btrSAx42B4Y/kaL20c3Yk4Ey6vJo9KTboK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLihbK%2FbtrSAx42B4Y%2FkaL20c3Yk4Ey6vJo9KTboK%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;608&quot; height=&quot;450&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;852&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;저수준 패키지 도구&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;패키지 파일을 설치하거나 제거할 때 사용하는 도구&lt;/li&gt;
&lt;li&gt;Red Hat 계열 &amp;rarr; &lt;b&gt;rpm&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고수준 패키지 도구&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;패키지 파일을 설치하고 제거하며 다운 가능한 패키지를 검색하고 &lt;u&gt;패키지 의존성을 해결&lt;/u&gt;하는 도구&lt;/li&gt;
&lt;li&gt;Red Hat 계열 &amp;rarr; &lt;b&gt;yum&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;ref.&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://bradbury.tistory.com/227&quot;&gt;리눅스 패키지(Linux Package)에 대한 이해&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://devopedia.org/package-manager&quot;&gt;Package Manager&lt;/a&gt;&lt;/p&gt;</description>
      <category>OS/Linux</category>
      <category>deb</category>
      <category>Linux</category>
      <category>Package</category>
      <category>rpm</category>
      <category>yum</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/65</guid>
      <comments>https://code1212-uh.tistory.com/65#entry65comment</comments>
      <pubDate>Thu, 1 Dec 2022 11:03:51 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 배포판</title>
      <link>https://code1212-uh.tistory.com/64</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪ Linux ?&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;Linux is an operating system.&amp;rsquo;&lt;br /&gt;리눅스는 운영체제다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;In a GNU/Linux system, Linux is the kernel component.&amp;rsquo;&lt;br /&gt;GNU/Linux 시스템에서 리눅스는 커널 구성 요소이다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;GNU &lt;/b&gt;: 자유 소프트웨어 재단에서 진행하며 유지 중인 OS 프로젝트&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스가 무엇인지 찾아보면 다음과 같이 다르게 표현된 정의를 볼 수 있다.&lt;/li&gt;
&lt;li&gt;여기서 무엇이 맞는 말일까?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;솔직히 둘 다 맞는 말이다.&lt;/li&gt;
&lt;li&gt;리눅스는 &lt;u&gt;리눅스 커널을 의미&lt;/u&gt;하기도 하고 &lt;u&gt;리눅스 커널을 사용하는 운영체제를 의미&lt;/u&gt;하기도 하기 때문이다.&lt;/li&gt;
&lt;li&gt;리눅스가 두 가지의 의미를 가지게 된 계기는 리눅스가 탄생한 흥미진진한 역사를 보면 잘 이해가 되지만 이번 포스팅은 리눅스의 역사가 중점이 아니라서.. &lt;a href=&quot;https://namu.wiki/w/Linux&quot;&gt;링크만 첨부&lt;/a&gt; !&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여담으로..&lt;br /&gt;&lt;br /&gt;GNU 쪽 사람들은 리눅스는 커널일 뿐이고, &lt;br /&gt;이 커널을 가져다가 GNU 프로그램들을 올려 만든 운영체제는 GNU/Linux라고 얘기한다.&lt;br /&gt;&amp;nbsp;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://namu.wiki/w/Linux&quot;&gt;-namu wiki 출처-&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ 리눅스의 배포판과 탄생&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;먼저 다음과 같은 운영체제의 이름과 아이콘을 많이 보았을 것이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;우분투 (Ubuntu)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qK1en/btrSwL4AIiP/DL4012PYpKe37jwWRKYLsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qK1en/btrSwL4AIiP/DL4012PYpKe37jwWRKYLsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qK1en/btrSwL4AIiP/DL4012PYpKe37jwWRKYLsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqK1en%2FbtrSwL4AIiP%2FDL4012PYpKe37jwWRKYLsk%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;304&quot; height=&quot;107&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;176&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;센트 OS (CentOS)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDrhjO/btrSy7S4XZC/P9HOqj2W5IJWmtuKO3ZQTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDrhjO/btrSy7S4XZC/P9HOqj2W5IJWmtuKO3ZQTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDrhjO/btrSy7S4XZC/P9HOqj2W5IJWmtuKO3ZQTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDrhjO%2FbtrSy7S4XZC%2FP9HOqj2W5IJWmtuKO3ZQTk%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;294&quot; height=&quot;99&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;202&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;등..&lt;/li&gt;
&lt;li&gt;보통 이것을 리눅스 계열로 알고는 있는데.. 뭐가 다른 거지?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 주로 말하는 리눅스(커널)로만은 원하는 목적의 기능과 편의성을 제공해주지 못한다.&lt;/li&gt;
&lt;li&gt;그래서 리눅스 커널과 함께 해당 목적에 맞는 여러 기능들을 포함하여 패키징 해서 제공하는 운영체제가 탄생하였다.&lt;/li&gt;
&lt;li&gt;이를 &lt;b&gt;리눅스 배포판&lt;/b&gt;이라고 말한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;따라서 배포판에 따라 서버 운영, IoT, 모바일, 일반 사용자 등.. 다양한 목적으로 나눠져 다른 기능과 프로그램을 제공한다는 걸 알 수 있다.&lt;/li&gt;
&lt;/ul&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;1250&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q6St4/btrSwajDWyK/6syT9OxKK3LHaq5UERUle0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q6St4/btrSwajDWyK/6syT9OxKK3LHaq5UERUle0/img.png&quot; data-alt=&quot;출처 : 위키피디아 (https://ko.wikipedia.org/wiki/리눅스_배포판)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q6St4/btrSwajDWyK/6syT9OxKK3LHaq5UERUle0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ6St4%2FbtrSwajDWyK%2F6syT9OxKK3LHaq5UERUle0%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;673&quot; height=&quot;245&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : 위키피디아 (https://ko.wikipedia.org/wiki/리눅스_배포판)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 조사해보니 어마 무시하게 많은 리눅스 배포판이 존재하는 것을 확인할 수 있었다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소리 소문 없이 생겼다가 사라진 것도..&lt;/li&gt;
&lt;li&gt;좀 더 자세하게 알고 싶으면 &lt;a href=&quot;https://distrowatch.com/&quot;&gt;사이트 링크&lt;/a&gt; 참고 !&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;ref.&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.debian.org/releases/buster/amd64/ch01s02.en.html&quot;&gt;1.2. What is GNU/Linux?&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://tecoble.techcourse.co.kr/post/2021-09-13-linux-distribution/&quot;&gt;리눅스 배포판이란?&lt;/a&gt;&lt;/p&gt;</description>
      <category>OS/Linux</category>
      <category>distro</category>
      <category>GNU</category>
      <category>kernel</category>
      <category>Linux</category>
      <category>Linux Distribution</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/64</guid>
      <comments>https://code1212-uh.tistory.com/64#entry64comment</comments>
      <pubDate>Thu, 1 Dec 2022 10:53:41 +0900</pubDate>
    </item>
    <item>
      <title>init vs. systemd</title>
      <link>https://code1212-uh.tistory.com/63</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪ PID가 1인 프로세스&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dieUhR/btrSAwE2Onz/L1a1l9lOIMPmpffJ7tqwL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dieUhR/btrSAwE2Onz/L1a1l9lOIMPmpffJ7tqwL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dieUhR/btrSAwE2Onz/L1a1l9lOIMPmpffJ7tqwL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdieUhR%2FbtrSAwE2Onz%2FL1a1l9lOIMPmpffJ7tqwL0%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;693&quot; height=&quot;166&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;299&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;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;init Process&lt;/b&gt; : PID가 1인 프로세스&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;리눅스 부팅 과정&lt;/b&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 전원 공급&lt;/li&gt;
&lt;li&gt;BIOS (&lt;b&gt;B&lt;/b&gt;asic &lt;b&gt;I&lt;/b&gt;nput / &lt;b&gt;O&lt;/b&gt;utput &lt;b&gt;S&lt;/b&gt;ystem)&lt;/li&gt;
&lt;li&gt;Boot Loader&lt;/li&gt;
&lt;li&gt;Kernel&lt;/li&gt;
&lt;li&gt;&lt;u&gt;&lt;b&gt;init&lt;/b&gt;&lt;/u&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커널 부팅이 완료된 후 &lt;b&gt;첫 번째로 생성&lt;/b&gt;한 프로세스&lt;/li&gt;
&lt;li&gt;&lt;b&gt;커널이 직접 실행&lt;/b&gt;하는 유일한 프로세스&lt;/li&gt;
&lt;li&gt;부모 프로세스가 없음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PPID &amp;rarr; 0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 &lt;b&gt;프로세스&lt;/b&gt;는 &lt;b&gt;init(PID : 1)&lt;/b&gt;을 부모 프로세스(PPID)로 가진다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 &lt;span style=&quot;color: #ee2323;&quot;&gt;프로세스&lt;/span&gt;의 조상님&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;모든 &lt;b&gt;스레드&lt;/b&gt;는 &lt;b&gt;kthreadd(PID : 2)&lt;/b&gt;를 부모 프로세스(PPID)로 가진다
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 &lt;span style=&quot;color: #ee2323;&quot;&gt;스레드&lt;/span&gt;의 조상님&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ systemd 란?&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;init 프로세스의 한 종류&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;init 프로세스의 변천사
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;SysV init&lt;/span&gt;&lt;/b&gt; &amp;rarr; &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;systemd&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;SysV init&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;u&gt;직렬 처리&lt;/u&gt; 방식의 부팅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;순서대로 프로세스 실행 &amp;rarr; 느림&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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: #dddddd; color: #ef5369;&quot;&gt;&lt;b&gt;&amp;harr;&amp;nbsp;호환 가능&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;systemd&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;u&gt;병렬 처리&lt;/u&gt; 방식의 부팅
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빠름&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;다양해진 Unit
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;sshd.service&lt;/li&gt;
&lt;li&gt;sshd.socket&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;cgroup 제어&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;시스템 상태 저장 후 사용 snapshot 기능 지원&lt;/li&gt;
&lt;li&gt;journald 이벤트 로깅 데몬과 같은 여러 다양한 API 지원&lt;/li&gt;
&lt;li&gt;등..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ systemd 기능&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;systemd 상태 모니터링&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;systemctl status&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행 중인 유닛의 상태 정보를 출력&lt;/li&gt;
&lt;li&gt;유닛들을 cgroup으로 묶어서 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;1195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cO6cxx/btrSvzKBko2/ZfvBedQG3QcNaAiPkK7bc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cO6cxx/btrSvzKBko2/ZfvBedQG3QcNaAiPkK7bc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cO6cxx/btrSvzKBko2/ZfvBedQG3QcNaAiPkK7bc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcO6cxx%2FbtrSvzKBko2%2FZfvBedQG3QcNaAiPkK7bc0%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;657&quot; height=&quot;683&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;1195&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #eb5757;&quot; data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;systemctl --failed&lt;/span&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;오작동 유닛 확인&lt;/li&gt;
&lt;li&gt;흠.. 현재는 모두 멀쩡한가 봅니다..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ucHKL/btrSwsxrBn3/a83lf6W3KQQnfvaXZrdLTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ucHKL/btrSwsxrBn3/a83lf6W3KQQnfvaXZrdLTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ucHKL/btrSwsxrBn3/a83lf6W3KQQnfvaXZrdLTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FucHKL%2FbtrSwsxrBn3%2Fa83lf6W3KQQnfvaXZrdLTk%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;670&quot; height=&quot;74&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;221&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;systemctl (= systemctl list-units)&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로딩된 유닛들 출력&lt;/li&gt;
&lt;li&gt;유닛 파일 이름 / 활성화 상태 / 상세 설명 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;243&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMZT7p/btrSwDr68x1/Qj67jLdSKPys78a3MkWsK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMZT7p/btrSwDr68x1/Qj67jLdSKPys78a3MkWsK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMZT7p/btrSwDr68x1/Qj67jLdSKPys78a3MkWsK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMZT7p%2FbtrSwDr68x1%2FQj67jLdSKPys78a3MkWsK0%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;744&quot; height=&quot;90&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;243&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;systemctl list-unit-files&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치된 파일 출력&lt;/li&gt;
&lt;li&gt;로딩되지 않았더라도 유닛 파일(.service, .device, ..)의 모든 서비스 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;911&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBn6kt/btrSw6N7LVP/w0uaxFFF9w8KKUG8lu6BR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBn6kt/btrSw6N7LVP/w0uaxFFF9w8KKUG8lu6BR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBn6kt/btrSw6N7LVP/w0uaxFFF9w8KKUG8lu6BR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBn6kt%2FbtrSw6N7LVP%2Fw0uaxFFF9w8KKUG8lu6BR0%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;598&quot; height=&quot;708&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;911&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;systemd 유닛 / 서비스 컨트롤 명령어&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 94.4149%; height: 60px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 19.5349%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 27.7907%; height: 20px;&quot;&gt;&lt;b&gt;영구히 적용 (재부팅 시 유지)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 27.093%; height: 20px;&quot;&gt;&lt;b&gt;일회성 적용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 21.1556%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 19.5349%; height: 20px;&quot;&gt;&lt;b&gt;시작 / 등록&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 27.7907%; height: 20px;&quot;&gt;enable&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 27.093%; height: 20px;&quot;&gt;start&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 21.1556%; height: 20px;&quot;&gt;restart&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 19.5349%; height: 20px;&quot;&gt;&lt;b&gt;종료 / 해제&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 27.7907%; height: 20px;&quot;&gt;disable&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 27.093%; height: 20px;&quot;&gt;stop&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 21.1556%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;유틸리티 제공&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로그램
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;journalctl&lt;/span&gt; &amp;rarr; 시스템의 서비스와 커널 로그 확인&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #eb5757;&quot; data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;networkctl&lt;/span&gt; &amp;rarr; 네트워크 상태 정보 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKlFVX/btrSy8La22t/o8Y2vaQhZyk1w4lY36uEl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKlFVX/btrSy8La22t/o8Y2vaQhZyk1w4lY36uEl0/img.png&quot; data-alt=&quot;journalctl 명령어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKlFVX/btrSy8La22t/o8Y2vaQhZyk1w4lY36uEl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKlFVX%2FbtrSy8La22t%2Fo8Y2vaQhZyk1w4lY36uEl0%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;669&quot; height=&quot;182&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;journalctl 명령어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu6W8e/btrSwbQtWZw/DP3P9dZjBZoqhcFszbSvoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu6W8e/btrSwbQtWZw/DP3P9dZjBZoqhcFszbSvoK/img.png&quot; data-alt=&quot;networkctl 명렁어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu6W8e/btrSwbQtWZw/DP3P9dZjBZoqhcFszbSvoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu6W8e%2FbtrSwbQtWZw%2FDP3P9dZjBZoqhcFszbSvoK%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;503&quot; height=&quot;121&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;207&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;networkctl 명렁어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>OS/Linux</category>
      <category>init</category>
      <category>Linux</category>
      <category>pid1</category>
      <category>process</category>
      <category>systemctl</category>
      <category>systemd</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/63</guid>
      <comments>https://code1212-uh.tistory.com/63#entry63comment</comments>
      <pubDate>Thu, 1 Dec 2022 10:45:43 +0900</pubDate>
    </item>
    <item>
      <title>프로세스와 스레드</title>
      <link>https://code1212-uh.tistory.com/62</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪ 프로세스 (Process)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;프로세스 (Process)&lt;/b&gt; : 운영체제(OS)에서 할당 받은 &lt;u&gt;시스템 자원&lt;/u&gt;을 사용한 독립적인 작업&lt;/blockquote&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;960&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q9gng/btrSwLQ1OfA/GWIJBgsKMKyLEuK6EH6pfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q9gng/btrSwLQ1OfA/GWIJBgsKMKyLEuK6EH6pfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q9gng/btrSwLQ1OfA/GWIJBgsKMKyLEuK6EH6pfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq9gng%2FbtrSwLQ1OfA%2FGWIJBgsKMKyLEuK6EH6pfK%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;587&quot; height=&quot;312&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;510&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;시스템 자원&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CPU 시간&lt;/li&gt;
&lt;li&gt;주소 공간&lt;/li&gt;
&lt;li&gt;Code, Data, Stack, Heap 구조의 메모리 영역&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;각 프로세스는 다른 프로세스의 자원에 간섭이 불가능하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단, IPC(Inter Proceses Communication)를 통하여 서로 간에 통신 및 접근이 가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;IPC(Inter Proceses Communication)&lt;/b&gt; : 프로세스 간 통신 &amp;rarr; &lt;span style=&quot;color: #ee2323;&quot;&gt;e.g.) 파이프, 소켓, 파일 ..&lt;/span&gt;&lt;/blockquote&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ 스레드 (Thread)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;스레드 (Thread)&lt;/b&gt; : 프로세스 내부에서 &lt;u&gt;프로세스 상의 공용의 자원&lt;/u&gt;을 사용하는 &lt;u&gt;작업의 흐름&lt;/u&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b41Uz0/btrSwq0QGs4/zkgp64p5jmmXWBzRYbGRNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b41Uz0/btrSwq0QGs4/zkgp64p5jmmXWBzRYbGRNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b41Uz0/btrSwq0QGs4/zkgp64p5jmmXWBzRYbGRNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb41Uz0%2FbtrSwq0QGs4%2Fzkgp64p5jmmXWBzRYbGRNK%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;609&quot; height=&quot;158&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;324&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;프로세스 자원&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Code, Data, Heap - 공용 사용&lt;/li&gt;
&lt;li&gt;Stack - 각각 따로 할당하여 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;프로세스 내 스레드들은 주소 공간과 자원 공유(Code, Data, Heap)가 가능하다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단, 서로 다른 프로세스 간 스레드들은 간섭 및 접근 불가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ 멀티 프로세스 (Multi Process)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;장점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;독립적이라 서로에게 영향을 미치지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;u&gt;문맥 교환 (Context Switching)&lt;/u&gt;으로 인한 오버헤드가 발생한다.&lt;/li&gt;
&lt;li&gt;복잡한 IPC 구현을 통해야만 자원 공유 및 접근이 가능하다.&lt;/li&gt;
&lt;li&gt;프로세스를 여러 개 생성 시 새로 시스템 자원 할당이 오버헤드..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;&lt;u&gt;문맥&lt;/u&gt; 교환 (&lt;u&gt;Context&lt;/u&gt; Switching)&lt;/b&gt; :&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;하나의 프로세스가 CPU를 사용 중일 때 다른 프로세스가 CPU를 사용하기 위해&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이전 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 올리는 작업&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Context ?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스 정보&lt;/li&gt;
&lt;li&gt;다음 실행할 명령어&lt;/li&gt;
&lt;li&gt;PID&lt;/li&gt;
&lt;li&gt;레지스트리&lt;/li&gt;
&lt;li&gt;등..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ 멀티 스레드 (Multi Thread)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;장점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스를 생성할 때 발생하는 시스템 콜이 줄어들어 자원의 효율성 상승&lt;/li&gt;
&lt;li&gt;자원을 공유하는 간단한 통신 방법으로 프로그램 응답 시간 감소&lt;/li&gt;
&lt;li&gt;Stack 영역만 처리하는 스레드의 Context Switching으로 전환 속도 빠름&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단점&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자원을 동기화 함으로써 발생하는 관리 복잡성&lt;/li&gt;
&lt;li&gt;단일 실패 지점에 대한 위험 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;ref.&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html&quot;&gt;[OS] 프로세스와 스레드의 차이 - Heee's Development Blog&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%AC%B8%EB%A7%A5_%EA%B5%90%ED%99%98&quot;&gt;문맥 교환 - 위키백과, 우리 모두의 백과사전&lt;/a&gt;&lt;/p&gt;</description>
      <category>OS/Concepts</category>
      <category>context switching</category>
      <category>OS</category>
      <category>멀티스레드</category>
      <category>멀티프로세스</category>
      <category>스레드</category>
      <category>프로세스</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/62</guid>
      <comments>https://code1212-uh.tistory.com/62#entry62comment</comments>
      <pubDate>Thu, 1 Dec 2022 10:29:10 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 권한 체계</title>
      <link>https://code1212-uh.tistory.com/61</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪ 리눅스 권한&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정한 사용자에게 파일이나 디렉토리에 대하여 읽기 / 쓰기 / 실행을 수행할 수 있는 자격을 부여해주는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NXCGR/btrSlDyzc26/ZFp8Z7BLOwrjbk8K7SvRw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NXCGR/btrSlDyzc26/ZFp8Z7BLOwrjbk8K7SvRw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NXCGR/btrSlDyzc26/ZFp8Z7BLOwrjbk8K7SvRw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNXCGR%2FbtrSlDyzc26%2FZFp8Z7BLOwrjbk8K7SvRw1%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;576&quot; height=&quot;217&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;350&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;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;리눅스 권한 : &lt;span style=&quot;color: #ee2323;&quot;&gt;허가권&lt;/span&gt; + &lt;span style=&quot;color: #006dd7;&quot;&gt;소유권&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ 허가권&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beGcvj/btrSlj1tdb5/38K0msZHiwVF5zbsmKOQX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beGcvj/btrSlj1tdb5/38K0msZHiwVF5zbsmKOQX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beGcvj/btrSlj1tdb5/38K0msZHiwVF5zbsmKOQX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeGcvj%2FbtrSlj1tdb5%2F38K0msZHiwVF5zbsmKOQX0%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;232&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 78.8372%; height: 56px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;height: 18px; width: 14.129%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 18px; width: 27.7448%; text-align: center;&quot;&gt;파일을 의미&lt;/td&gt;
&lt;td style=&quot;height: 18px; width: 18.6623%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;r (read)&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 18px; width: 7.48133%; text-align: center;&quot;&gt;&lt;b&gt;[4]&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 18px; width: 31.8454%; text-align: center;&quot;&gt;파일을 읽을 수 있는 권한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 14.129%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;d&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 27.7448%; text-align: center;&quot;&gt;디렉토리를 의미&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 18.6623%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;w (write)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 7.48133%; text-align: center;&quot;&gt;&lt;b&gt;[2]&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.8454%; text-align: center;&quot;&gt;파일을 읽을 수 있는 권한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 14.129%; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 27.7448%; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 18.6623%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;x (execute)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 7.48133%; text-align: center;&quot;&gt;&lt;b&gt;[1]&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.8454%; text-align: center;&quot;&gt;파일을 읽을 수 있는 권한&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ 문자로 권한 변경하기&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1870&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lirb8/btrSmYPznNl/7KZKRGOfxs5XVUJ2Rgpgl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lirb8/btrSmYPznNl/7KZKRGOfxs5XVUJ2Rgpgl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lirb8/btrSmYPznNl/7KZKRGOfxs5XVUJ2Rgpgl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLirb8%2FbtrSmYPznNl%2F7KZKRGOfxs5XVUJ2Rgpgl1%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;786&quot; height=&quot;64&quot; data-origin-width=&quot;1870&quot; data-origin-height=&quot;152&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;table style=&quot;border-collapse: collapse; width: 87.2093%; height: 57px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;&lt;span&gt;u&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;사용자&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;+&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;권한 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;g&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;그룹&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;-&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;권한 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;o&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;다른 사용자&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chmod u+x file&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자에게 실행 권한 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chmod g-r file&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그룹에게 읽기 권한 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chmod a+rwx file&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모두에게 읽기, 쓰기, 실행 권한 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chmod ug-rx file&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자와 그룹에게 읽기, 실행 권한 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ 숫자로 권한 변경하기&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1870&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KxU72/btrSkELBehN/eQeTwSkheNP72qUvzSKmTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KxU72/btrSkELBehN/eQeTwSkheNP72qUvzSKmTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KxU72/btrSkELBehN/eQeTwSkheNP72qUvzSKmTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKxU72%2FbtrSkELBehN%2FeQeTwSkheNP72qUvzSKmTk%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;737&quot; height=&quot;60&quot; data-origin-width=&quot;1870&quot; data-origin-height=&quot;152&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;-rwxrwxrwx
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;(4+2+1) x 100&lt;/b&gt; + &lt;b&gt;(4+2+1) x 10&lt;/b&gt; + &lt;b&gt;(4+2+1) x 1 = 777&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chmod 777 file&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자, 그룹, 다른 사용자에게 모든 권한을 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;-rw-r--r--
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;(4+2+0) x 100&lt;/b&gt; + &lt;b&gt;(4+0+0) x 10&lt;/b&gt; + &lt;b&gt;(4+0+0) x 1 = 644&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chmod 644 abc.txt&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자에게는 읽기와 쓰기, 그룹에게는 읽기, 다른 사용자에게는 읽기 권한 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;drwxr-xr-x
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;(4+2+1) x 100&lt;/b&gt; + &lt;b&gt;(4+0+1) x 10&lt;/b&gt; + &lt;b&gt;(4+0+1) x 1 = 755&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chmod 755 helloworld&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자에게는 모든 권한, 그룹에게는 읽기와 실행, 다른 사용자에게는 읽기와 실행 권한 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ 소유권&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chown [OPTIONS] USER[:GROUP] FILE(s)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;1050&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TPVla/btrSjo3ifpt/FiNAavHmBZxLPUvjiRGspk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TPVla/btrSjo3ifpt/FiNAavHmBZxLPUvjiRGspk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TPVla/btrSjo3ifpt/FiNAavHmBZxLPUvjiRGspk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTPVla%2FbtrSjo3ifpt%2FFiNAavHmBZxLPUvjiRGspk%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;555&quot; height=&quot;109&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;206&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;730&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dK9uVH/btrSlV6NceV/56fQsizNDdAcLOLxQABKBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dK9uVH/btrSlV6NceV/56fQsizNDdAcLOLxQABKBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dK9uVH/btrSlV6NceV/56fQsizNDdAcLOLxQABKBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdK9uVH%2FbtrSlV6NceV%2F56fQsizNDdAcLOLxQABKBk%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;436&quot; height=&quot;144&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;241&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;abc.txt &lt;b&gt;파일 소유자&lt;/b&gt;를 tom으로 변경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chown tom abc.txt&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P1KIF/btrSmsDj8Oo/ibuJE2Ukk0K9ZM931D4NB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P1KIF/btrSmsDj8Oo/ibuJE2Ukk0K9ZM931D4NB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P1KIF/btrSmsDj8Oo/ibuJE2Ukk0K9ZM931D4NB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP1KIF%2FbtrSmsDj8Oo%2FibuJE2Ukk0K9ZM931D4NB0%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;627&quot; height=&quot;164&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;275&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;abc.txt &lt;b&gt;파일 소유 그룹&lt;/b&gt;을 student로 변경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chown :student abc.txt&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwYoqN/btrSlFpCXfP/2YUigPKdwghsM1P1GvVxC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwYoqN/btrSlFpCXfP/2YUigPKdwghsM1P1GvVxC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwYoqN/btrSlFpCXfP/2YUigPKdwghsM1P1GvVxC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwYoqN%2FbtrSlFpCXfP%2F2YUigPKdwghsM1P1GvVxC0%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;614&quot; height=&quot;137&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;234&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;abc.txt &lt;b&gt;파일 소유자&lt;/b&gt;를 andy로 &lt;b&gt;소유 그룹&lt;/b&gt;을 adult로 변경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chown andy:adult abc.txt&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eulUv5/btrSlEdasXv/vWLgBxzWuhlJkkSGG3itU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eulUv5/btrSlEdasXv/vWLgBxzWuhlJkkSGG3itU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eulUv5/btrSlEdasXv/vWLgBxzWuhlJkkSGG3itU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeulUv5%2FbtrSlEdasXv%2FvWLgBxzWuhlJkkSGG3itU0%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;612&quot; height=&quot;143&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;241&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;helloworld 디렉토리와 해당 폴더 &lt;b&gt;모든 하위 파일들&lt;/b&gt;의 소유자 및 그룹 변경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chown &lt;b&gt;-R&lt;/b&gt; andy:adult helloworld&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJt8Yn/btrSkBVyyDd/lgph3WrsYnjr15WeaPitDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJt8Yn/btrSkBVyyDd/lgph3WrsYnjr15WeaPitDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJt8Yn/btrSkBVyyDd/lgph3WrsYnjr15WeaPitDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJt8Yn%2FbtrSkBVyyDd%2Flgph3WrsYnjr15WeaPitDk%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;574&quot; height=&quot;342&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;572&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위와 같이 문자열인 유저 이름 대신 &lt;b&gt;숫자형인 유저 ID&lt;/b&gt; 입력 가능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;chown 1500:1503 abc.txt&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sCuX5/btrSljUI4AV/jCgq304Dv9B4q9sq8wkRv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sCuX5/btrSljUI4AV/jCgq304Dv9B4q9sq8wkRv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sCuX5/btrSljUI4AV/jCgq304Dv9B4q9sq8wkRv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsCuX5%2FbtrSljUI4AV%2FjCgq304Dv9B4q9sq8wkRv0%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;243&quot; height=&quot;94&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;143&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;1060&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLgzlk/btrSnDYGSR2/5wyq6zuUIJjfA2V1ygTYs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLgzlk/btrSnDYGSR2/5wyq6zuUIJjfA2V1ygTYs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLgzlk/btrSnDYGSR2/5wyq6zuUIJjfA2V1ygTYs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLgzlk%2FbtrSnDYGSR2%2F5wyq6zuUIJjfA2V1ygTYs0%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;560&quot; height=&quot;127&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;240&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;id&lt;/span&gt; / &lt;span style=&quot;color: #ee2323;&quot;&gt;getent group&lt;/span&gt;을 통해 &lt;b&gt;유저 이름&lt;/b&gt;과 &lt;b&gt;ID&lt;/b&gt; 확인 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNxh3e/btrSlVMxWtQ/47bPL8uJBtNk5rMDXECT1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNxh3e/btrSlVMxWtQ/47bPL8uJBtNk5rMDXECT1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNxh3e/btrSlVMxWtQ/47bPL8uJBtNk5rMDXECT1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNxh3e%2FbtrSlVMxWtQ%2F47bPL8uJBtNk5rMDXECT1k%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;424&quot; height=&quot;43&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;76&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;790&quot; data-origin-height=&quot;243&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DLQUh/btrSlpUOGQS/UXV3sSifvBMQX5XrOoiKWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DLQUh/btrSlpUOGQS/UXV3sSifvBMQX5XrOoiKWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DLQUh/btrSlpUOGQS/UXV3sSifvBMQX5XrOoiKWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDLQUh%2FbtrSlpUOGQS%2FUXV3sSifvBMQX5XrOoiKWK%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;445&quot; height=&quot;137&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;243&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>OS/Linux</category>
      <category>chmod</category>
      <category>chown</category>
      <category>Linux</category>
      <category>permission</category>
      <category>rwx</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/61</guid>
      <comments>https://code1212-uh.tistory.com/61#entry61comment</comments>
      <pubDate>Tue, 29 Nov 2022 01:34:51 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 Shell</title>
      <link>https://code1212-uh.tistory.com/60</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪ 쉘 (Shell)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;쉘(Shell)&lt;/b&gt; : 사용자와 OS의 내부 커널 사이의 인터페이스를 감싸는 층&lt;/blockquote&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;960&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0Ydds/btrSlohfGiC/9icood3MH2VumKKbFKMomk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0Ydds/btrSlohfGiC/9icood3MH2VumKKbFKMomk/img.png&quot; data-alt=&quot;출처 : https://wogh8732.tistory.com/75&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0Ydds/btrSlohfGiC/9icood3MH2VumKKbFKMomk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0Ydds%2FbtrSlohfGiC%2F9icood3MH2VumKKbFKMomk%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;613&quot; height=&quot;302&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : https://wogh8732.tistory.com/75&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;명령어 처리기 (Command Processor)&lt;/li&gt;
&lt;li&gt;&lt;u&gt;사용자와 OS간 다리 역할&lt;/u&gt;을 수행&lt;/li&gt;
&lt;li&gt;사용자의 &lt;u&gt;명령&lt;/u&gt;을 받아 &lt;u&gt;해석&lt;/u&gt;해서 &lt;u&gt;전달&lt;/u&gt; 후 &lt;u&gt;실행&lt;/u&gt;&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ Bash vs. Zsh&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Bash (Bash shell)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현 시대에 가장 많이 쓰이는 리눅스의 표준 Shell&lt;/li&gt;
&lt;li&gt;GNU 프로젝트를 위해 개발된 Shell&lt;/li&gt;
&lt;li&gt;/bin/bash&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;GNU 프로젝트 &lt;/b&gt;: 자유로운 소프트웨어를 희망하는 프로젝트&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Zsh (Z shell)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;높은 호환성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지금까지 대부분 Shell의 기능을 포함한 확장형 Shell&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;플러그인 생태계
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다양한 플러그인 지원 (Oh My Zsh)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;자동 완성 기능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;/u/l/b&lt;/b&gt;&lt;/span&gt; + &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;tab&lt;/b&gt;&lt;/span&gt; &amp;rarr; &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;/usr/local/bin&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/bin/zsh&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>OS/Linux</category>
      <category>bash</category>
      <category>Linux</category>
      <category>shell</category>
      <category>zsh</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/60</guid>
      <comments>https://code1212-uh.tistory.com/60#entry60comment</comments>
      <pubDate>Tue, 29 Nov 2022 00:09:54 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 Pipe</title>
      <link>https://code1212-uh.tistory.com/59</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ 파이프 (Pipe)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;파이프 (Pipe)&lt;/b&gt; : |&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스의 여러 명령어들을 &lt;b&gt;조합&lt;/b&gt;하여 강력한 활용도를 보여줄 수 있는 기능&lt;/li&gt;
&lt;li&gt;like a 조미료 (후추 팍팍! 소금 팍팍! 설탕 팍팍! &amp;rarr; 짜자잔 맛있는 음식 ~)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;명령어_1&amp;nbsp;&lt;/b&gt; |&amp;nbsp; &lt;b&gt;명령어_2&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 &lt;b&gt;명령어_1&lt;/b&gt;와 &lt;b&gt;명령어_2&lt;/b&gt;는 다음의 과정을 거친다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;입력(stdin) &amp;rarr; 수행 &amp;rarr; 결과(stdout / stderr)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;명령어_1&lt;/b&gt;의 결과는 | 파이프를 통해 &lt;b&gt;명령어_2&lt;/b&gt;의 입력으로 전달되어 들어간다.&lt;/li&gt;
&lt;li&gt;위 과정을 거치면 &lt;b&gt;명령어_1&lt;/b&gt;의 결과가 입력된 &lt;b&gt;명령어_2&lt;/b&gt;의 결과가 수행된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;526&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhr2A3/btrSa6HYDlO/n77ar27ay1J2kGBry23kxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhr2A3/btrSa6HYDlO/n77ar27ay1J2kGBry23kxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhr2A3/btrSa6HYDlO/n77ar27ay1J2kGBry23kxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdhr2A3%2FbtrSa6HYDlO%2Fn77ar27ay1J2kGBry23kxk%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;753&quot; height=&quot;198&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;526&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;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;명령어_1&lt;/b&gt;은 &lt;u&gt;부모 프로세스&lt;/u&gt;로써 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;fork()&lt;/b&gt;&lt;/span&gt;를 통해 &lt;b&gt;명령어_2&lt;/b&gt;의 &lt;u&gt;자식 프로세스&lt;/u&gt;를 생성한다.&lt;/p&gt;
&lt;/blockquote&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ e.g.&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 문자열의 파일명을 가진 파일을 검색하고 싶은 경우
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;project를 포함한 파일명을 가진 파일 검색
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;ls -al&amp;nbsp; |&amp;nbsp; grep &amp;ldquo;project&amp;rdquo;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;353&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXafyW/btrSas5AeCe/ou3Riwm4KQ3hit3k4Vo3Bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXafyW/btrSas5AeCe/ou3Riwm4KQ3hit3k4Vo3Bk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXafyW/btrSas5AeCe/ou3Riwm4KQ3hit3k4Vo3Bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXafyW%2FbtrSas5AeCe%2Fou3Riwm4KQ3hit3k4Vo3Bk%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;702&quot; height=&quot;288&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;353&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;860&quot; data-origin-height=&quot;105&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTjxRn/btrSeh28iBj/xBmCeXzGkrwY9EHe1L2uK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTjxRn/btrSeh28iBj/xBmCeXzGkrwY9EHe1L2uK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTjxRn/btrSeh28iBj/xBmCeXzGkrwY9EHe1L2uK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTjxRn%2FbtrSeh28iBj%2FxBmCeXzGkrwY9EHe1L2uK0%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;680&quot; height=&quot;83&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;105&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;젠킨스 파드 스펙의 cpu 리소스를 수정(helm upgrade) 하고자 value 파일을 확인하는데..
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;너무 많아 ㅜ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKBXIX/btrShGH4NSL/iscvXh76YF3fkXxCJh5kR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKBXIX/btrShGH4NSL/iscvXh76YF3fkXxCJh5kR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKBXIX/btrShGH4NSL/iscvXh76YF3fkXxCJh5kR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKBXIX%2FbtrShGH4NSL%2FiscvXh76YF3fkXxCJh5kR1%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;686&quot; height=&quot;410&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;633&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cpu 부분만 보여줘 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;cat jenkins-value.yaml&amp;nbsp; |&amp;nbsp; grep cpu&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kHxDV/btrShHAcwxf/AvFdPPrtoB0eOCvBlyfUl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kHxDV/btrShHAcwxf/AvFdPPrtoB0eOCvBlyfUl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kHxDV/btrShHAcwxf/AvFdPPrtoB0eOCvBlyfUl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkHxDV%2FbtrShHAcwxf%2FAvFdPPrtoB0eOCvBlyfUl1%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;668&quot; height=&quot;324&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;514&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주석 부분은 필요 없어 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;cat jenkins-values.yaml&amp;nbsp; |&amp;nbsp; grep cpu&amp;nbsp; |&amp;nbsp; grep -v &amp;ldquo;#&amp;rdquo;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;212&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhdbR4/btrSa7NEU4W/Pj1nay74WJBp9Yxa227he1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhdbR4/btrSa7NEU4W/Pj1nay74WJBp9Yxa227he1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhdbR4/btrSa7NEU4W/Pj1nay74WJBp9Yxa227he1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhdbR4%2FbtrSa7NEU4W%2FPj1nay74WJBp9Yxa227he1%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;630&quot; height=&quot;126&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;212&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;h4 data-ke-size=&quot;size20&quot;&gt;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://architectophile.tistory.com/9&quot;&gt;[리눅스] 명령 실행 원리 2 : 파이프&lt;/a&gt;&lt;/p&gt;</description>
      <category>OS/Linux</category>
      <category>Linux</category>
      <category>pipe</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/59</guid>
      <comments>https://code1212-uh.tistory.com/59#entry59comment</comments>
      <pubDate>Mon, 28 Nov 2022 02:28:07 +0900</pubDate>
    </item>
    <item>
      <title>NAT Gateway : NAT의 기본 개념과 AWS NGW 동작방식과 아키텍처 예시</title>
      <link>https://code1212-uh.tistory.com/58</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ NAT (Network Address Translation)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크 주소 변환&lt;/li&gt;
&lt;li&gt;정의&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  IP 주소를 다른 IP 주소로 변환해 라우팅을 원활히 해주는 기술&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예시
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사설 IP &amp;rarr; 공인 IP&lt;/li&gt;
&lt;li&gt;공인 IP &amp;rarr; 사설 IP&lt;/li&gt;
&lt;li&gt;사설 IP &amp;rarr; 사설 IP&lt;/li&gt;
&lt;li&gt;공인 IP &amp;rarr; 공인 IP&lt;/li&gt;
&lt;li&gt;IPv4 &amp;rarr; IPv6 / IPv6 &amp;rarr; IPv4 (AFT : Address Family Traslation)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ Why?&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IPv4 주소 고갈 문제 솔루션
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단기 전략 - Subnetting (서브네팅)&lt;/li&gt;
&lt;li&gt;중기 전략 - &lt;b&gt;NAT&lt;/b&gt; &lt;b&gt;&amp;amp;&lt;/b&gt; &lt;b&gt;사설 IP 체계&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;장기 전략 - IPv6 전환&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;보안 강화
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내부 &amp;rarr; 외부 통신할 때 IP 변환으로 내부 네트워크 보안 강화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;IP 주소 체계가 같은 두 개의 네트워크 간 통신 가능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;더블 NAT로 구현&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;불필요한 설정 변경 감소
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공인 IP를 빌려쓰는 경우&lt;/li&gt;
&lt;li&gt;회선과 IDC(Internet Data Center) 사업자 이전 해야하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kNQKW/btrQ4bP8r8u/1RC7cKZkmNvy7gFaMG8bjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kNQKW/btrQ4bP8r8u/1RC7cKZkmNvy7gFaMG8bjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kNQKW/btrQ4bP8r8u/1RC7cKZkmNvy7gFaMG8bjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkNQKW%2FbtrQ4bP8r8u%2F1RC7cKZkmNvy7gFaMG8bjk%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;637&quot; height=&quot;480&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;941&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실습 환경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;VM IP : 10.0.2.15&lt;/li&gt;
&lt;li&gt;Host IP : 210.115.xxx.xxx&lt;/li&gt;
&lt;li&gt;External Server IP : 210.115.225.11 (naver)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;결론
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;VM 내에서는 사설 IP를 달고 나가지만 외부 네트워크로 나갈 때는 Host를 통해 Host IP로 바꿔 나가는 것을 확인할 수 있어 Host의 NAT 기능을 확인.&lt;/li&gt;
&lt;li&gt;Host가 외부 네트워크랑 통신할때는 Host 내부 VM에서는 패킷이 잡히지 않는 것으로 보아 내부 네트워크랑 연관이 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ PAT(Port Address Translation)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NAT 기기는 PAT로 동작&lt;/li&gt;
&lt;li&gt;Host &amp;rarr; Server (Request O / Reply O)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;986&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cals7u/btrQ3UnnJdu/IIyqTGrpn1nsr4ZJu0zqNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cals7u/btrQ3UnnJdu/IIyqTGrpn1nsr4ZJu0zqNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cals7u/btrQ3UnnJdu/IIyqTGrpn1nsr4ZJu0zqNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcals7u%2FbtrQ3UnnJdu%2FIIyqTGrpn1nsr4ZJu0zqNk%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;589&quot; height=&quot;605&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;986&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Server &amp;rarr; Host (Request X)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1093&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ppI6p/btrQ2Schefj/AfGbVUjImMliByZfNWscC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ppI6p/btrQ2Schefj/AfGbVUjImMliByZfNWscC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ppI6p/btrQ2Schefj/AfGbVUjImMliByZfNWscC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FppI6p%2FbtrQ2Schefj%2FAfGbVUjImMliByZfNWscC1%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;579&quot; height=&quot;659&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1093&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ AWS NGW&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lsquo;외부 네트워크에서는 Private Subnet에 접근 불가&amp;rsquo;를 원할 경우&lt;/li&gt;
&lt;li&gt;&amp;lsquo;Private Subnet을 외부 네트워크 or 기타 AWS 서비스에 연결&amp;rsquo;을 원할 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기본 원리 아키텍쳐 예시&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHIgJM/btrQZ2AoCUB/EcyTuBNQJ1JRC1ysJ8DbY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHIgJM/btrQZ2AoCUB/EcyTuBNQJ1JRC1ysJ8DbY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHIgJM/btrQZ2AoCUB/EcyTuBNQJ1JRC1ysJ8DbY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHIgJM%2FbtrQZ2AoCUB%2FEcyTuBNQJ1JRC1ysJ8DbY0%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;541&quot; height=&quot;383&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;458&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;조오금 더 응용&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vl6i2/btrQ1J0XXpS/7LlqL3VMWvFKDxkw4YkAKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vl6i2/btrQ1J0XXpS/7LlqL3VMWvFKDxkw4YkAKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vl6i2/btrQ1J0XXpS/7LlqL3VMWvFKDxkw4YkAKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvl6i2%2FbtrQ1J0XXpS%2F7LlqL3VMWvFKDxkw4YkAKK%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;555&quot; height=&quot;467&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;657&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;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.freeccnastudyguide.com/study-guides/ccna/ch10/10-4-nat-overloading-aka-port-address-translation-pat/&quot;&gt;10-4 NAT Overloading aka Port Address Translation (PAT)&lt;/a&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;a href=&quot;https://bluese05.tistory.com/48&quot;&gt;AWS VPC를 디자인해보자(3) - NAT Gateway 와 Bastion host&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS NGW&lt;/p&gt;</description>
      <category>Network</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/58</guid>
      <comments>https://code1212-uh.tistory.com/58#entry58comment</comments>
      <pubDate>Sun, 13 Nov 2022 03:15:11 +0900</pubDate>
    </item>
    <item>
      <title>⚠️ 2022/11/08 - 11/13 블로그 이관 작업 완료</title>
      <link>https://code1212-uh.tistory.com/notice/57</link>
      <description>&lt;div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Plan &lt;/b&gt;: &lt;s&gt;2022/11/08 - 11/13&lt;/s&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;  &lt;/span&gt;&lt;/b&gt;Done !&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;From&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Notion&lt;/li&gt;
&lt;li&gt;&lt;b&gt;To&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Tistory ❗️&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;</description>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/notice/57</guid>
      <pubDate>Sun, 13 Nov 2022 02:27:06 +0900</pubDate>
    </item>
    <item>
      <title>[NKS] Ingress 생성</title>
      <link>https://code1212-uh.tistory.com/56</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠️&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;NKS(Naver Kubernetes Service) 환경에서 진행하였습니다.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;⚠️&lt;/b&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ Ingress&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Service&lt;/b&gt; vs. &lt;b&gt;Ingress&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Service&lt;/b&gt;는 트래픽을 &lt;b&gt;Pod&lt;/b&gt;에 여러 타입으로 전달 (L4)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ClusterIP, NodePort, LoadBalancer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ingress&lt;/b&gt;는 외부의 HTTP/HTTPS 트래픽 요청을 규칙에 따라 &lt;b&gt;Service&lt;/b&gt;에 전달 (L7)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Kubernetes에서 Ingress 생성 시 ALB Ingress Controller을 통해 LoadBalancer 인스턴스 생성 후 연동&lt;/li&gt;
&lt;li&gt;Ingress Rule에서 설정한 Service의 NodePort를 포트 값으로 Target 그룹을 생성하고 LoadBalancer 인스턴스에 등록한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GHyGp/btrQ1flvLG6/iky5w8VqizalKWAnJF2ji0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GHyGp/btrQ1flvLG6/iky5w8VqizalKWAnJF2ji0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GHyGp/btrQ1flvLG6/iky5w8VqizalKWAnJF2ji0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGHyGp%2FbtrQ1flvLG6%2Fiky5w8VqizalKWAnJF2ji0%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;667&quot; height=&quot;280&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;788&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ ALB Ingress Controller&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 NCP의 NKS를 사용하고 있는 관계로 NCP ALB Ingress Controller 매니페스트 파일로 설치를 진행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;$ k apply -f &amp;lt;https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/main/docs/install/pub/install.yaml&amp;gt;

serviceaccount/alb-ingress-controller created
clusterrole.rbac.authorization.k8s.io/alb-ingress-controller created
clusterrolebinding.rbac.authorization.k8s.io/alb-ingress-controller created
ingressclass.networking.k8s.io/alb created
deployment.apps/alb-ingress-controller created
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ALB Ingress Controller가 생성된 것을 확인 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위 컨트롤러가 생성되는데 필요한 IngressClass나 ServiceAccount, ClusterRole, ClusterRoleBinding.. 등이 생성된 것도 확인 !&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xlCsc/btrQ39Y43Hx/PpIC9B0g6RH4RzWNBY4qBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xlCsc/btrQ39Y43Hx/PpIC9B0g6RH4RzWNBY4qBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xlCsc/btrQ39Y43Hx/PpIC9B0g6RH4RzWNBY4qBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxlCsc%2FbtrQ39Y43Hx%2FPpIC9B0g6RH4RzWNBY4qBk%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;706&quot; height=&quot;165&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;290&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ingress Controller의 기본 설정값
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Service Type
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;NodePort&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Default Rule
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매칭 되는 Rule이 없을 경우&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;spec.defaultBackend&lt;/span&gt;에 설정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;80 포트로&lt;/b&gt; 설정된 기본 &lt;b&gt;Target Group&lt;/b&gt;이 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Rule Priority
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ingress에서 정의한 Rule 순서에 따라 우선순위 결정&lt;/li&gt;
&lt;li&gt;가장 위부터 Rule 우선 순위 1로 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ Ingress 생성&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Ingress&lt;/b&gt;와 &lt;b&gt;Service&lt;/b&gt;에 &lt;span style=&quot;color: #ee2323;&quot;&gt;어노테이션(Annotation)&lt;/span&gt;을 사용하여 ALB Ingress Controller의 설정을 변경할 수 있다.&lt;/li&gt;
&lt;li&gt;ALB Ingress Controller의 어노테이션은 &lt;span style=&quot;color: #ee2323;&quot;&gt;alb.ingress.kubernetes.io/&lt;/span&gt; 로 시작 !&lt;/li&gt;
&lt;li&gt;여러 가지 종류의 어노테이션들이 있으니 관련 공식 문서 참고 !&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cn-ingress
  labels:
    name: cn-ingress
  annotations:
    kubernetes.io/ingres.class: alb
spec:
  rules:
  - host: cc-cnproject.com
    http:
      paths:
      - pathType: Prefix
        path: &quot;/&quot;
        backend:
          service:
            name: cn-app-svc-n
            port: 
              number: 8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Host Domain : cc-cnproject.com&lt;/li&gt;
&lt;li&gt;cn-app-svc-n의 이름의 NodePort Type의 서비스로 트래픽 라우팅&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 매니페스트 파일로 ingress를 생성해보자&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1738&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFJJsu/btrQ4WL0SMN/JYp5NDe2rZ38QX32uTh1xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFJJsu/btrQ4WL0SMN/JYp5NDe2rZ38QX32uTh1xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFJJsu/btrQ4WL0SMN/JYp5NDe2rZ38QX32uTh1xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFJJsu%2FbtrQ4WL0SMN%2FJYp5NDe2rZ38QX32uTh1xK%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;688&quot; height=&quot;44&quot; data-origin-width=&quot;1738&quot; data-origin-height=&quot;112&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ingress Class도 alb로 설정된 것을 확인 !&lt;/li&gt;
&lt;li&gt;Host Domain도 cc-cnproject.com으로 설정 확인 !&lt;/li&gt;
&lt;li&gt;로드밸런서의 주소도 할당된 것을 확인 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그럼 이제 남은 건 접속을 해봐야죠 :)&lt;/li&gt;
&lt;li&gt;현재 위에서 설정한 호스트 도메인은 실제로 존재하지 않는 도메인이므로 위 도메인을 사용하여 요청을 보내기 위해서는 curl 명령에&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;-H host&lt;/span&gt;&amp;nbsp;옵션과 함께 사용해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상적으로 요청에 대한 응답 확인 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/56Zha/btrQ5lkGlUE/K230gLqt7qqkcp7D3GXnN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/56Zha/btrQ5lkGlUE/K230gLqt7qqkcp7D3GXnN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/56Zha/btrQ5lkGlUE/K230gLqt7qqkcp7D3GXnN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F56Zha%2FbtrQ5lkGlUE%2FK230gLqt7qqkcp7D3GXnN1%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;678&quot; height=&quot;26&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;76&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;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ALB Ingress Controller 외에 Nginx Ingress Controller 등 여러 종류가 존재한다.&lt;/li&gt;
&lt;li&gt;Ingress는 로드밸런서의 확장된 버전이라고 생각하면 된다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;LoadBalancer Service&lt;/b&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;vs.&lt;/span&gt; &lt;b&gt;Ingress&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로드밸런서 서비스는 해당 서비스의 Public IP 주소를 가진 로드밸런서가 필요하지만&lt;/li&gt;
&lt;li&gt;인그레스는 하나의 IP 주소로 여러 개의 서비스를 라우팅하며 접근이 가능하도록 지원해준다 !&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://three-beans.tistory.com/entry/AWSEKS-%EC%BD%98%EC%86%94%EB%A1%9C-%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94-EKS-%E2%91%A3-ingress-AWS-LoadBalancer-Controller-%EA%B5%AC%EC%84%B1?category=1000531&quot;&gt;[AWS/EKS] 콘솔로 생성하는 EKS - ④ ingress로 서비스 외부 노출 시키기 (AWS LoadBalancer Controller 설치)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://guide.ncloud-docs.com/docs/k8s-k8suse-albingress&quot;&gt;ALB Ingress Controller 설정&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://guide.ncloud-docs.com/docs/k8s-k8sexamples-albingress&quot;&gt;ALB Ingress Controller 활용 예제&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://guide.ncloud-docs.com/docs/k8s-k8sexamples-ingress&quot;&gt;Ingress 활용 예제&lt;/a&gt;&lt;/p&gt;</description>
      <category>Kubernetes</category>
      <category>ALB</category>
      <category>ingress</category>
      <category>kubernetes</category>
      <category>NKS</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/56</guid>
      <comments>https://code1212-uh.tistory.com/56#entry56comment</comments>
      <pubDate>Sun, 13 Nov 2022 02:25:54 +0900</pubDate>
    </item>
    <item>
      <title>[NKS] NodePort / LoadBalancer 서비스 생성</title>
      <link>https://code1212-uh.tistory.com/55</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠️&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;NKS(Naver Kubernetes Service) 환경에서 진행하였습니다.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;⚠️&lt;/b&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ NodePort 타입으로 서비스 생성 및 접속&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NodePort 타입으로 서비스를 생성해보자 !&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: cn-app-svc-n
spec:
  selector:
    app: cn-app
  ports:
    - port: 8080
      targetPort: 8080
  type: NodePort
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스 생성 확인 후 할당된 &lt;span style=&quot;color: #ee2323;&quot;&gt;NodePort(31374)&lt;/span&gt; 확인 !&lt;/li&gt;
&lt;/ul&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;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciU4oG/btrQ0voMtUh/JGMbK1PdBBvhsZ6mI2kDc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciU4oG/btrQ0voMtUh/JGMbK1PdBBvhsZ6mI2kDc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciU4oG/btrQ0voMtUh/JGMbK1PdBBvhsZ6mI2kDc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciU4oG%2FbtrQ0voMtUh%2FJGMbK1PdBBvhsZ6mI2kDc1%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;783&quot; height=&quot;192&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;282&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;노드의 IP 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJobKx/btrQ4acB3GL/NbliEjyFaClfvnZRFRvCs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJobKx/btrQ4acB3GL/NbliEjyFaClfvnZRFRvCs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJobKx/btrQ4acB3GL/NbliEjyFaClfvnZRFRvCs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJobKx%2FbtrQ4acB3GL%2FNbliEjyFaClfvnZRFRvCs0%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;808&quot; height=&quot;62&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;152&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;음.. Node IP + NodePort로 접속을 시도했는데.. 과묵하구먼..&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgdBI5/btrQ3UgAE3j/kq3EmewkrIKBrd1ycK5N1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgdBI5/btrQ3UgAE3j/kq3EmewkrIKBrd1ycK5N1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgdBI5/btrQ3UgAE3j/kq3EmewkrIKBrd1ycK5N1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgdBI5%2FbtrQ3UgAE3j%2Fkq3EmewkrIKBrd1ycK5N1K%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;543&quot; height=&quot;89&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;141&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;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 포트 지정 문제 ?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;처음에는 &amp;lsquo;파드에 포트를 잘못 지정해주고 타겟 포트랑 일치가 안돼서 그런가..&amp;rsquo; 라는 의문점으로 시작하게 되었다.&lt;/li&gt;
&lt;li&gt;하지만 파드 매니페스트 작성 시 포트와 타겟 포트를 동일하게 지정해도 똑같이 NodePort 서비스에 접속이 되지 않았다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;트래픽&lt;/span&gt; &amp;rarr; 노드 포트 &amp;rarr; 파드 포트 &amp;rarr; 타겟 포트 &amp;rarr; &lt;span style=&quot;color: #ee2323;&quot;&gt;컨테이너&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;u&gt;여기서 포트 지정과는 현재 이슈와 아무런 관계가 없다고 판단하였다.&lt;/u&gt;&lt;/li&gt;
&lt;/ul&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. &lt;span data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;&lt;b&gt;Private Cluster&lt;/b&gt; or &lt;b&gt;Public Cluster&lt;/b&gt; 문제 ?&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;많이 헤매고 여러 레퍼런스를 찾던 도중에 관련 문서에서 힌트를 찾을 수 있게 되었다 !&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1668271774678&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;company&quot; data-og-title=&quot;Amazon EKS 클러스터에서 실행되는 Kubernetes 서비스 공개&quot; data-og-description=&quot;Amazon EKS 클러스터에서 실행 중인 Kubernetes 서비스를 공개하려면 어떻게 해야 합니까? 최종 업데이트 날짜: 2022년 09월 16일 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에서 실행 중인 Kubernetes 서비&quot; data-og-host=&quot;aws.amazon.com&quot; data-og-source-url=&quot;https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-kubernetes-services-cluster/&quot; data-og-url=&quot;https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-kubernetes-services-cluster/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bOm1bm/hyQza3TiLo/rHPgJRIeYgEU8D69j4bmX1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/nlLe4/hyQxDmk4oH/4olAMezKkTXwCGOTW22LrK/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109,https://scrap.kakaocdn.net/dn/zdC56/hyQzkFq0uo/Uurr8qCkoPMVk8Zgp8lj5K/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=1305_396_1668_792&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-kubernetes-services-cluster/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-kubernetes-services-cluster/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bOm1bm/hyQza3TiLo/rHPgJRIeYgEU8D69j4bmX1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/nlLe4/hyQxDmk4oH/4olAMezKkTXwCGOTW22LrK/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109,https://scrap.kakaocdn.net/dn/zdC56/hyQzkFq0uo/Uurr8qCkoPMVk8Zgp8lj5K/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=1305_396_1668_792');&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;Amazon EKS 클러스터에서 실행되는 Kubernetes 서비스 공개&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Amazon EKS 클러스터에서 실행 중인 Kubernetes 서비스를 공개하려면 어떻게 해야 합니까? 최종 업데이트 날짜: 2022년 09월 16일 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에서 실행 중인 Kubernetes 서비&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;노드가 프라이빗 서브넷에 있고 VPC 내부 또는 VPC를 통해서만 연결할 수 있는 경우 노드의 프라이빗 IP 주소를 확인합니다.&amp;rsquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 사용하고 있는 클러스터는 Private Subnet에서 생성한 Private Cluster이다.&lt;/li&gt;
&lt;li&gt;여기서 반짝✨&amp;nbsp;빛이 났다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부에서 Node IP:NodePort로 접속 시도&lt;/li&gt;
&lt;li&gt;현재 Private Subnet에 있는 노드에 외부에서 Inbound로 들어갈 수 있는 문이 없음&lt;/li&gt;
&lt;li&gt;들어갈 수도 없고 알 수 없는 목적지를 향한 트래픽은 헤매다가 Time Out..!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그럼 여기서 두 가지 방법을 생각하였다.
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Public Subnet에 Public Type으로 Kubernetes Cluster 새로 생성하기&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;같은 VPC 내 Public Subnet에 Bastion Host Server를 생성하고 Private Type 클러스터에 생성된 NodePort 서비스 접속하기&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 보안 그룹 문제 ?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;외부 트래픽을 수신할 수 있도록 워커 노드의 보안 그룹(ACG : Access control Group)을 설정해보고 서비스에 접속해보기&lt;/b&gt;&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;2-1. &lt;b&gt;Public Subnet에 Public Type Kubernetes Cluster 새로 생성 후 서비스 접속&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;public 타입으로 cluster를 구축해 보았다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bddlhe/btrQ0kHM9gb/EcTxLK7kXXldGHxzTNLbM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bddlhe/btrQ0kHM9gb/EcTxLK7kXXldGHxzTNLbM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bddlhe/btrQ0kHM9gb/EcTxLK7kXXldGHxzTNLbM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbddlhe%2FbtrQ0kHM9gb%2FEcTxLK7kXXldGHxzTNLbM1%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;652&quot; height=&quot;383&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;564&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성 완료 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 워커 노드들에 public IP가 할당되어 있는 모습을 볼 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EDOc8/btrQ0SD3bIk/p7Mnq9LKgKxvcrC6QCPCtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EDOc8/btrQ0SD3bIk/p7Mnq9LKgKxvcrC6QCPCtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EDOc8/btrQ0SD3bIk/p7Mnq9LKgKxvcrC6QCPCtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEDOc8%2FbtrQ0SD3bIk%2Fp7Mnq9LKgKxvcrC6QCPCtK%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;764&quot; height=&quot;56&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;147&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NodePort Type 서비스를 생성해보고 서비스에 접속을 시도해 보았다.&lt;/li&gt;
&lt;/ul&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;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uefus/btrQ0Rd4ula/Z8EbEW5GMHpzq8LmB8LcJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uefus/btrQ0Rd4ula/Z8EbEW5GMHpzq8LmB8LcJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uefus/btrQ0Rd4ula/Z8EbEW5GMHpzq8LmB8LcJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuefus%2FbtrQ0Rd4ula%2FZ8EbEW5GMHpzq8LmB8LcJK%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;735&quot; height=&quot;177&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;277&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;또 과묵하구먼..&lt;/li&gt;
&lt;/ul&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;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHJDmY/btrQ1Lkb6Ix/QBO8fEblF7KY4KYPEtJID0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHJDmY/btrQ1Lkb6Ix/QBO8fEblF7KY4KYPEtJID0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHJDmY/btrQ1Lkb6Ix/QBO8fEblF7KY4KYPEtJID0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHJDmY%2FbtrQ1Lkb6Ix%2FQBO8fEblF7KY4KYPEtJID0%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;714&quot; height=&quot;83&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;134&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;&lt;b&gt;실패..&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;였지만.. 원인 분석 후 3번에서 해결 !&lt;/b&gt;&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;2-2. &lt;b&gt;Bastion Host Server 생성하고 Private Type 클러스터 서비스 접속하기&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Node 풀이 속해있는 VPC내의 Public Subnet에 Bastion Server를 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZJm3l/btrQ3TPxeYl/UVQ1bxTJZVHS5txyOcZdm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZJm3l/btrQ3TPxeYl/UVQ1bxTJZVHS5txyOcZdm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZJm3l/btrQ3TPxeYl/UVQ1bxTJZVHS5txyOcZdm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZJm3l%2FbtrQ3TPxeYl%2FUVQ1bxTJZVHS5txyOcZdm1%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;2000&quot; height=&quot;144&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;144&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;접속 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;1236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bevwM8/btrQ2es10eJ/57NpOqVgH205yNprl26F8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bevwM8/btrQ2es10eJ/57NpOqVgH205yNprl26F8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bevwM8/btrQ2es10eJ/57NpOqVgH205yNprl26F8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbevwM8%2FbtrQ2es10eJ%2F57NpOqVgH205yNprl26F8k%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;620&quot; height=&quot;723&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;1236&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;NodePort Service에 접속 성공 !&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpVdii/btrQZzemz0y/R65Q9KKMOnKGkhMNzJKM61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpVdii/btrQZzemz0y/R65Q9KKMOnKGkhMNzJKM61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpVdii/btrQZzemz0y/R65Q9KKMOnKGkhMNzJKM61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpVdii%2FbtrQZzemz0y%2FR65Q9KKMOnKGkhMNzJKM61%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;472&quot; height=&quot;77&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;118&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;h3 data-ke-size=&quot;size23&quot;&gt;3. 특정 NodePort에 관한 &lt;b&gt;보안 그룹&lt;/b&gt;(ACG : Access control Group) &lt;b&gt;설정&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2-1의 실패 원인을 분석해 보았다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NodePort는 해당 서비스를 외부에 워커 노드에 대한 특정 포트를 공개하는 것이다.&lt;/li&gt;
&lt;li&gt;그렇다면 외부에서 특정 포트를 통해 노드에 접근하기 위해서는 외부 트래픽을 수신할 수 있도록 워커 노드의 보안 그룹(ACG : Access Controll Group)을 설정해줘야 하지 않을까 ?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 특정 NodePort에 대한 Inbound 규칙 추가 및 노드에 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hrt7W/btrQ2eft3A6/nFRihTgqMgxMfWpR7pLJI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hrt7W/btrQ2eft3A6/nFRihTgqMgxMfWpR7pLJI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hrt7W/btrQ2eft3A6/nFRihTgqMgxMfWpR7pLJI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHrt7W%2FbtrQ2eft3A6%2FnFRihTgqMgxMfWpR7pLJI1%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;752&quot; height=&quot;189&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;478&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czkPaA/btrQ4bCBhDa/li5V5vOlHy8PBpG3U029MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czkPaA/btrQ4bCBhDa/li5V5vOlHy8PBpG3U029MK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czkPaA/btrQ4bCBhDa/li5V5vOlHy8PBpG3U029MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczkPaA%2FbtrQ4bCBhDa%2Fli5V5vOlHy8PBpG3U029MK%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;679&quot; height=&quot;286&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;404&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스에 접속 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5ynLs/btrQ0lfCodm/Bfg4hULGdEzvS9FLLJzkj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5ynLs/btrQ0lfCodm/Bfg4hULGdEzvS9FLLJzkj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5ynLs/btrQ0lfCodm/Bfg4hULGdEzvS9FLLJzkj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5ynLs%2FbtrQ0lfCodm%2FBfg4hULGdEzvS9FLLJzkj0%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;640&quot; height=&quot;90&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;149&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;성공 ㅎㅎㅎㅎ&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ LoadBalancer 타입으로 서비스 생성 및 접속&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LoadBalancer 타입으로 서비스를 생성 !&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: cn-app-svc-l
spec:
  selector:
    app: cn-app
  ports:
  - port: 8080
    targetPort: 8080
  type: LoadBalancer
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스 생성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;and &lt;span style=&quot;color: #ee2323;&quot;&gt;pending&lt;/span&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cK491T/btrQ4aXZUg9/iuStzoFSo63YkKw6eH3TZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cK491T/btrQ4aXZUg9/iuStzoFSo63YkKw6eH3TZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cK491T/btrQ4aXZUg9/iuStzoFSo63YkKw6eH3TZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcK491T%2FbtrQ4aXZUg9%2FiuStzoFSo63YkKw6eH3TZ0%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;601&quot; height=&quot;276&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;441&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;loadbalancer 주소 할당 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1d2ET/btrQ0HW4iDE/cjkxjXD1Qp8gmtWz9L6Eek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1d2ET/btrQ0HW4iDE/cjkxjXD1Qp8gmtWz9L6Eek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1d2ET/btrQ0HW4iDE/cjkxjXD1Qp8gmtWz9L6Eek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1d2ET%2FbtrQ0HW4iDE%2FcjkxjXD1Qp8gmtWz9L6Eek%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;764&quot; height=&quot;119&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;195&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위 주소로 서비스에 접근 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1770&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doOa7r/btrQ1gxUSTr/w9VfQdmUQh8oiCiz3e8sw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doOa7r/btrQ1gxUSTr/w9VfQdmUQh8oiCiz3e8sw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doOa7r/btrQ1gxUSTr/w9VfQdmUQh8oiCiz3e8sw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoOa7r%2FbtrQ1gxUSTr%2Fw9VfQdmUQh8oiCiz3e8sw0%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;790&quot; height=&quot;34&quot; data-origin-width=&quot;1770&quot; data-origin-height=&quot;76&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;성공❗️❗️&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Kubernetes</category>
      <category>kubernetes</category>
      <category>LoadBalancer</category>
      <category>NKS</category>
      <category>NodePort</category>
      <category>service</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/55</guid>
      <comments>https://code1212-uh.tistory.com/55#entry55comment</comments>
      <pubDate>Sun, 13 Nov 2022 01:47:27 +0900</pubDate>
    </item>
    <item>
      <title>[NKS] Deployment 생성</title>
      <link>https://code1212-uh.tistory.com/54</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠️&lt;span style=&quot;color: #ee2323;&quot;&gt; NKS(Naver Kubernetes Service) 환경에서 진행하였습니다.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;⚠️&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ Deployment 생성&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나에게 할당된 네임스페이스가 잘 있는지 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1ofa3/btrQZWUG4sl/utt4bz9PyS3zXxgKaNqxu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1ofa3/btrQZWUG4sl/utt4bz9PyS3zXxgKaNqxu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1ofa3/btrQZWUG4sl/utt4bz9PyS3zXxgKaNqxu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1ofa3%2FbtrQZWUG4sl%2Futt4bz9PyS3zXxgKaNqxu0%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;383&quot; height=&quot;189&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;189&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네임스페이스에 deployment 생성 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;73&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A3moP/btrQ0Q7i3fR/4OitKujweUKx8k7k0i5NB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A3moP/btrQ0Q7i3fR/4OitKujweUKx8k7k0i5NB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A3moP/btrQ0Q7i3fR/4OitKujweUKx8k7k0i5NB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA3moP%2FbtrQ0Q7i3fR%2F4OitKujweUKx8k7k0i5NB1%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;729&quot; height=&quot;50&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;73&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: cn-app-dpy
  labels:
    app: cn-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: cn-app
  template:
    metadata:
      labels:
        app: cn-app
    spec:
      containers:
      - name: cn-app
        image: uh2959/cn-action
        resources:
          limits:
            memory: &quot;512Mi&quot;
            cpu: &quot;500m&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어라.. 왜 하나가 계속 pending이죠 ?&lt;/li&gt;
&lt;/ul&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;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UadYp/btrQ1l0fL4R/i45hFgFaa8rJTW3kTX1OqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UadYp/btrQ1l0fL4R/i45hFgFaa8rJTW3kTX1OqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UadYp/btrQ1l0fL4R/i45hFgFaa8rJTW3kTX1OqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUadYp%2FbtrQ1l0fL4R%2Fi45hFgFaa8rJTW3kTX1OqK%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;625&quot; height=&quot;194&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;357&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성 과정 이벤트 로그를 확인해보자&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;0/2 nodes are availabe: 2 Insufficient cpu.&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2개의 불충분한 cpu ??&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EfJLj/btrQ0v3qaq1/fxgzyOOkr02Sqn0UzHBIK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EfJLj/btrQ0v3qaq1/fxgzyOOkr02Sqn0UzHBIK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EfJLj/btrQ0v3qaq1/fxgzyOOkr02Sqn0UzHBIK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEfJLj%2FbtrQ0v3qaq1%2FfxgzyOOkr02Sqn0UzHBIK1%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;800&quot; height=&quot;242&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;405&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ 트러블 슈팅&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt; &amp;nbsp;빨간불 키고 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;트러블 슈팅&lt;/b&gt;&lt;/span&gt; 들어갑시다 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;에러 메시지 그대로 cpu 자원이 부족하여 kubelet이 파드를 스케줄링을 하지 못해 FailedScheduling 에러가 발생한 듯하다.
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;누가 자원을 많이 먹고 있는지 확인할 수 있을까?&lt;/li&gt;
&lt;li&gt;적절한 자원 요청을 어떻게 해줄 수 있을까?&lt;/li&gt;
&lt;li&gt;특정한 리소스가 자원을 다 가져갈 수 없게 제한을 둘 수 있을까?&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;위와 같은 궁금한 것들이 생겨났고 일단 현재 이슈를 해결해보도록 하자
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 리소스가 사용 중인 자원의 상황을 확인해보기&lt;/li&gt;
&lt;li&gt;현재 사용 가능한 자원의 양을 확인해보기&lt;/li&gt;
&lt;li&gt;과도한 자원을 사용 중인 리소스를 확인하여 자원 할당량 조정&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 노드풀은 다음과 같다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RKQ9f/btrQ0Gw3Igy/4lrv4Sgz9gVG1OAEVGDBh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RKQ9f/btrQ0Gw3Igy/4lrv4Sgz9gVG1OAEVGDBh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RKQ9f/btrQ0Gw3Igy/4lrv4Sgz9gVG1OAEVGDBh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRKQ9f%2FbtrQ0Gw3Igy%2F4lrv4Sgz9gVG1OAEVGDBh0%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;639&quot; height=&quot;107&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;158&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;노드에서 사용 가능한 자원을 확인해보자
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;kubectl describe nodes&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;cnp-node-pool-w-1rbt 노드에 관한 테이블이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xekgT/btrQZ3F7ShE/N78NVFiAPHasZWNYTrzZb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xekgT/btrQZ3F7ShE/N78NVFiAPHasZWNYTrzZb1/img.png&quot; data-alt=&quot;노드 총 자원량 + 할당 가능한 자원 테이블&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xekgT/btrQZ3F7ShE/N78NVFiAPHasZWNYTrzZb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxekgT%2FbtrQZ3F7ShE%2FN78NVFiAPHasZWNYTrzZb1%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;345&quot; height=&quot;290&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;노드 총 자원량 + 할당 가능한 자원 테이블&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7C9Zn/btrQ0Q7i3ph/KhdtLIOPUanQCGyzkYZ4zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7C9Zn/btrQ0Q7i3ph/KhdtLIOPUanQCGyzkYZ4zk/img.png&quot; data-alt=&quot;할당된 자원 테이블&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7C9Zn/btrQ0Q7i3ph/KhdtLIOPUanQCGyzkYZ4zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7C9Zn%2FbtrQ0Q7i3ph%2FKhdtLIOPUanQCGyzkYZ4zk%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;442&quot; height=&quot;170&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;할당된 자원 테이블&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;646&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pWGQB/btrQ1e7XNkn/TYgWMMLjjADkkkY4ITWLhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pWGQB/btrQ1e7XNkn/TYgWMMLjjADkkkY4ITWLhK/img.png&quot; data-alt=&quot;노드에 배포된 파드/서비스/데몬셋.. 자원 사용량 테이블&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pWGQB/btrQ1e7XNkn/TYgWMMLjjADkkkY4ITWLhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpWGQB%2FbtrQ1e7XNkn%2FTYgWMMLjjADkkkY4ITWLhK%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;738&quot; height=&quot;242&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;646&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;노드에 배포된 파드/서비스/데몬셋.. 자원 사용량 테이블&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나머지 노드도 위 노드의 상태 테이블과 거의 일치하여 생략하였다.&lt;/li&gt;
&lt;li&gt;위 node의 현재 상태의 정보를 살펴보면
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;노드의 cpu 초기 용량은 2이며 할당 가능한 cpu 자원은 1930m의 양인 것을 확인할 수 있다.&lt;/li&gt;
&lt;li&gt;그리고 현재 노드의 모든 리소스에 할당된 자원의 양의 합은 요청(Requests) 초기 값이 1890m인 97%, 제한(Limits) 값은 2600m인 134%을 확인하였다.&lt;/li&gt;
&lt;li&gt;여기까지 보아 지금 노드안에서 할당할 수 있는 자원은 없는 것을 알 수 있고 그 Limits 자원 요청마저도 overcommited(과도한 할당)라는 것을 확인할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;도대체 노드안에서 누가 범인인가 싶어서 확인해 보았더니 빨간 박스 안의 리소스가 으마으마한 cpu와 memory 자원을 할당 받은 것을 확인할 수 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;무려.. &lt;b&gt;51%&lt;/b&gt;.. &lt;b&gt;25%&lt;/b&gt;..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그럼 이제 위 문제의 리소스들이 정말 할당을 요청한 자원을 충분히 사용중인지 확인해보자 !&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일단 노드의 자원 사용량은
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cpu 73m &amp;rarr; 3%.. 벌써 감이 오기 시작한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LYvUD/btrQ0HpdHiv/B9Tqez0scmcJ4adgoHesz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LYvUD/btrQ0HpdHiv/B9Tqez0scmcJ4adgoHesz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LYvUD/btrQ0HpdHiv/B9Tqez0scmcJ4adgoHesz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLYvUD%2FbtrQ0HpdHiv%2FB9Tqez0scmcJ4adgoHesz0%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;693&quot; height=&quot;91&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;150&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;mir 네임스페이스의 파드 자원 사용량을 확인하였다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2m + 3m = 5m..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDmRrN/btrQ27AryQP/0YfXljKsHrwDCTl7l7J5u0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDmRrN/btrQ27AryQP/0YfXljKsHrwDCTl7l7J5u0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDmRrN/btrQ27AryQP/0YfXljKsHrwDCTl7l7J5u0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDmRrN%2FbtrQ27AryQP%2F0YfXljKsHrwDCTl7l7J5u0%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;704&quot; height=&quot;122&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;199&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;uhyeong 네임스페이스의 파드 자원 사용량을 확인해보았다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2m + 2m = 4m&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dg6zf7/btrQ5kzieQn/ZB168UTfDsktp33EWW280K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dg6zf7/btrQ5kzieQn/ZB168UTfDsktp33EWW280K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dg6zf7/btrQ5kzieQn/ZB168UTfDsktp33EWW280K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdg6zf7%2FbtrQ5kzieQn%2FZB168UTfDsktp33EWW280K%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;720&quot; height=&quot;129&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;206&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 중간 결론을 얘기해보자면 현재 디플로이먼트로 배포한 파드에서 컨테이너는 배포시 요청 자원보다 터무니없이 적은 자원을 사용하고 있는 것을 확인할 수 있었다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이는 파드 배포시 과도한 자원 요청으로 엄청난 자원 낭비를 보여주고 있는 중이라 말할 수 있다.&lt;/li&gt;
&lt;li&gt;이제 해결해봅시다 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배포시 사용한 매니페스트 파일 수정 후 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;kubectl edit deployment -n &amp;lt;namespace&amp;gt;&lt;/span&gt;로 deployment의 resources.cpu 내용 수정하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DxMbi/btrQZ3sAXix/tsL1LkK7KvjFrtQMQF98XK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DxMbi/btrQZ3sAXix/tsL1LkK7KvjFrtQMQF98XK/img.png&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;148&quot; data-is-animation=&quot;false&quot; width=&quot;422&quot; style=&quot;width: 52.3046%; margin-right: 10px;&quot; data-widthpercent=&quot;52.92&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DxMbi/btrQZ3sAXix/tsL1LkK7KvjFrtQMQF98XK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDxMbi%2FbtrQZ3sAXix%2FtsL1LkK7KvjFrtQMQF98XK%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;672&quot; height=&quot;148&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LkLfP/btrQ2RLb3Et/QEF0yWF9Dc8ChfUQPaOgc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LkLfP/btrQ2RLb3Et/QEF0yWF9Dc8ChfUQPaOgc1/img.png&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;152&quot; data-is-animation=&quot;false&quot; width=&quot;412&quot; height=&quot;102&quot; style=&quot;width: 46.5326%;&quot; data-widthpercent=&quot;47.08&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LkLfP/btrQ2RLb3Et/QEF0yWF9Dc8ChfUQPaOgc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLkLfP%2FbtrQ2RLb3Et%2FQEF0yWF9Dc8ChfUQPaOgc1%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;614&quot; height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;근데 또 뭔가 이상하다..&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q5E42/btrQ0XyzbV1/klTwxthcaKg56BmHs5QAJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q5E42/btrQ0XyzbV1/klTwxthcaKg56BmHs5QAJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q5E42/btrQ0XyzbV1/klTwxthcaKg56BmHs5QAJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ5E42%2FbtrQ0XyzbV1%2FklTwxthcaKg56BmHs5QAJK%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;685&quot; height=&quot;285&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;488&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;rollout이 고착 상태..&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;74&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTAFZJ/btrQ1llEbfj/kbKMKobhkklsipdMk4Wa31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTAFZJ/btrQ1llEbfj/kbKMKobhkklsipdMk4Wa31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTAFZJ/btrQ1llEbfj/kbKMKobhkklsipdMk4Wa31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTAFZJ%2FbtrQ1llEbfj%2FkbKMKobhkklsipdMk4Wa31%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;778&quot; height=&quot;38&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;74&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스케일 업으로 수정된 버전인 새로운 파드 생성을 하다가 할당할 cpu 자원이 부족해서 고착되었다,,,
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웃프다..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B051R/btrQZ30qc1n/lDtZBu5Ourx8Iz0aajpBG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B051R/btrQZ30qc1n/lDtZBu5Ourx8Iz0aajpBG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B051R/btrQZ30qc1n/lDtZBu5Ourx8Iz0aajpBG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB051R%2FbtrQZ30qc1n%2FlDtZBu5Ourx8Iz0aajpBG0%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;774&quot; height=&quot;108&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;260&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그럼 디플로이먼트의 매니페스트 수정으로 롤링 업데이트를 할 수 없다면 자원을 지웠다가 다시 배포하는 수 밖에 없는건가?
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일단 임시방편으로 리소스 스펙을 완전 최소한의 자원으로 설정한 후 롤링 업데이트하는 방법
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;충분히 가능성 있는 방안이지만 너무 임시방편 느낌이 강하다고 생각한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;.spec.strategy.type==Recreate&lt;/span&gt;&amp;nbsp;에 대한 전략 적용으로 업데이트하는 방법
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;RollingUpdate 외에 새로운 타입의 방안인 Recreate에 대해 알아보고 적용해보자 !&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;⭐️ &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;디플로이먼트 재생성&lt;/b&gt;&lt;/span&gt; (type : &lt;span style=&quot;color: #ee2323;&quot;&gt;Recreate&lt;/span&gt;)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존의 모든 파드는 새 파드가 생성되기 전에 죽는다.&lt;/li&gt;
&lt;li&gt;업그레이드 전에 파드 종료를 보장할 수 있다.&lt;/li&gt;
&lt;li&gt;업그레이드 시 이전 버전의 모든 파드는 즉시 종료되며 신규 버전의 파드가 생성되기 전에 성공적으로 제거가 완료되기를 대기한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두구두구,, 수정을 해보자 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EzfUX/btrQZ4kGZrp/WRzhPT8Zeq31MGkFlGDTb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EzfUX/btrQZ4kGZrp/WRzhPT8Zeq31MGkFlGDTb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EzfUX/btrQZ4kGZrp/WRzhPT8Zeq31MGkFlGDTb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEzfUX%2FbtrQZ4kGZrp%2FWRzhPT8Zeq31MGkFlGDTb0%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;360&quot; height=&quot;53&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;80&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;!!!! 뭔가 바뀐 것 같다 !!!!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VPqAT/btrQ1feHX5h/TXvBA5E1VuhLMlIsdLRUe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VPqAT/btrQ1feHX5h/TXvBA5E1VuhLMlIsdLRUe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VPqAT/btrQ1feHX5h/TXvBA5E1VuhLMlIsdLRUe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVPqAT%2FbtrQ1feHX5h%2FTXvBA5E1VuhLMlIsdLRUe0%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;590&quot; height=&quot;219&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;393&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;흥분해서 여러 로그들을 다 확인해봤다ㅎㅎ&lt;/li&gt;
&lt;li&gt;Limits 자원 할당도 제대로 업데이트 확인&lt;/li&gt;
&lt;li&gt;이전 버전 디플로이먼트의 Scale down 후 업데이트된 새로운 버전의 디플로이먼트 Scale up 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;1034&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JsfiN/btrQZ3MQmNS/RDnO8wKZ8anwtMG7MKnm7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JsfiN/btrQZ3MQmNS/RDnO8wKZ8anwtMG7MKnm7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JsfiN/btrQZ3MQmNS/RDnO8wKZ8anwtMG7MKnm7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJsfiN%2FbtrQZ3MQmNS%2FRDnO8wKZ8anwtMG7MKnm7k%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;678&quot; height=&quot;561&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;1034&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이전 버전의 파드 삭제 및 Scale down 후 Scale up에 대한 이벤트 로그도 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oEpJU/btrQ4WFfmfT/MxsAqQ1BKc9jnGkzzrnGmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oEpJU/btrQ4WFfmfT/MxsAqQ1BKc9jnGkzzrnGmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oEpJU/btrQ4WFfmfT/MxsAqQ1BKc9jnGkzzrnGmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoEpJU%2FbtrQ4WFfmfT%2FMxsAqQ1BKc9jnGkzzrnGmK%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;761&quot; height=&quot;361&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;950&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;노드의 자원이 어느 정도 여유가 생긴것을 확인할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oSxUj/btrQ4WrG873/s3fI2K4ZIPCgvvBpwKgx7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oSxUj/btrQ4WrG873/s3fI2K4ZIPCgvvBpwKgx7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oSxUj/btrQ4WrG873/s3fI2K4ZIPCgvvBpwKgx7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoSxUj%2FbtrQ4WrG873%2Fs3fI2K4ZIPCgvvBpwKgx7K%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;669&quot; height=&quot;172&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;232&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그럼 mir 네임스페이스의 자원은 일반적인 RollingUpdate type으로 업데이트를 진행해보자&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xiPh5/btrQ1gxUImH/UK9RINAKaMbOKSipJO1BoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xiPh5/btrQ1gxUImH/UK9RINAKaMbOKSipJO1BoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xiPh5/btrQ1gxUImH/UK9RINAKaMbOKSipJO1BoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxiPh5%2FbtrQ1gxUImH%2FUK9RINAKaMbOKSipJO1BoK%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;378&quot; height=&quot;120&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;156&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;938&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDNGcn/btrQ0ls7Frn/RtRxDr0UbKckot7pm7dhX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDNGcn/btrQ0ls7Frn/RtRxDr0UbKckot7pm7dhX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDNGcn/btrQ0ls7Frn/RtRxDr0UbKckot7pm7dhX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDNGcn%2FbtrQ0ls7Frn%2FRtRxDr0UbKckot7pm7dhX0%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;553&quot; height=&quot;45&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;76&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;mir 네임스페이스의 디플로이먼트 매니페스트 파일 수정 후 롤링 업데이트 성공 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;74&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPKXKf/btrQ0XFjLkB/CpQNFW8PkpcU8IuNLspx21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPKXKf/btrQ0XFjLkB/CpQNFW8PkpcU8IuNLspx21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPKXKf/btrQ0XFjLkB/CpQNFW8PkpcU8IuNLspx21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPKXKf%2FbtrQ0XFjLkB%2FCpQNFW8PkpcU8IuNLspx21%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;573&quot; height=&quot;36&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;74&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이벤트 로그에서도 순차적으로 Scale Up 후 Scale Down에 대해 번갈아가면서 진행되는 것을 볼 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzIw2F/btrQ1Js5nIZ/gXNx3EPxgSWjLuOzjFFTk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzIw2F/btrQ1Js5nIZ/gXNx3EPxgSWjLuOzjFFTk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzIw2F/btrQ1Js5nIZ/gXNx3EPxgSWjLuOzjFFTk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzIw2F%2FbtrQ1Js5nIZ%2FgXNx3EPxgSWjLuOzjFFTk1%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;824&quot; height=&quot;92&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;224&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;노드 정보 확인
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;편안 ,,&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7C8Ag/btrQ0XZBKKs/kpQClVmhpmVqifCIkfL0w1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7C8Ag/btrQ0XZBKKs/kpQClVmhpmVqifCIkfL0w1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7C8Ag/btrQ0XZBKKs/kpQClVmhpmVqifCIkfL0w1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7C8Ag%2FbtrQ0XZBKKs%2FkpQClVmhpmVqifCIkfL0w1%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;796&quot; height=&quot;124&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;306&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;h4 data-ke-size=&quot;size20&quot;&gt;⭐️ 결론&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파드를 배포할 때 무자비하게 자원을 요청한 후 배포하면 나타날 수 있는 좋은 예시를 몸소 받았다..&lt;/li&gt;
&lt;li&gt;하나 하나 고려해야할 점이 참 많구나.. 공부해야할 것이 늘었다는 이야기..&lt;/li&gt;
&lt;/ul&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://code1212-uh.tistory.com/17&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;리소스의 메모리와 CPU 자원 관리&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668271388965&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;리소스의 메모리와 CPU 자원 관리&quot; data-og-description=&quot;  Epilogue NCP의 NKS에서 프로젝트를 진행 중에 각자 팀원들에게 namespace를 할당해주었다. 어느 날 간단한 파드에 대한 스펙을 정해주고 생성을 시도하였더니 스케줄링 에러가 발생 원인을 확인해&quot; data-og-host=&quot;code1212-uh.tistory.com&quot; data-og-source-url=&quot;https://code1212-uh.tistory.com/17&quot; data-og-url=&quot;https://code1212-uh.tistory.com/17&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fR8k6/hyQzfc3BjJ/IFbdCykrIXobCP0BKBWfM1/img.jpg?width=800&amp;amp;height=200&amp;amp;face=0_0_800_200,https://scrap.kakaocdn.net/dn/bBpdvm/hyQzjmeaai/yIWdoaqZZqJxTqoXJzReSK/img.jpg?width=800&amp;amp;height=200&amp;amp;face=0_0_800_200,https://scrap.kakaocdn.net/dn/blTaix/hyQznB93j7/Jf3d9qI6ZijRcQDOaqMQw0/img.png?width=1060&amp;amp;height=1028&amp;amp;face=0_0_1060_1028&quot;&gt;&lt;a href=&quot;https://code1212-uh.tistory.com/17&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code1212-uh.tistory.com/17&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fR8k6/hyQzfc3BjJ/IFbdCykrIXobCP0BKBWfM1/img.jpg?width=800&amp;amp;height=200&amp;amp;face=0_0_800_200,https://scrap.kakaocdn.net/dn/bBpdvm/hyQzjmeaai/yIWdoaqZZqJxTqoXJzReSK/img.jpg?width=800&amp;amp;height=200&amp;amp;face=0_0_800_200,https://scrap.kakaocdn.net/dn/blTaix/hyQznB93j7/Jf3d9qI6ZijRcQDOaqMQw0/img.png?width=1060&amp;amp;height=1028&amp;amp;face=0_0_1060_1028');&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;리소스의 메모리와 CPU 자원 관리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;  Epilogue NCP의 NKS에서 프로젝트를 진행 중에 각자 팀원들에게 namespace를 할당해주었다. 어느 날 간단한 파드에 대한 스펙을 정해주고 생성을 시도하였더니 스케줄링 에러가 발생 원인을 확인해&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code1212-uh.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://code1212-uh.tistory.com/15&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Pod 안전하게 생성/배포 및 QoS 정책 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668271397260&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Pod 안전하게 생성/배포 및 QoS 정책 설정&quot; data-og-description=&quot;  Epilogue 간단한 JAR 애플리케이션을 가지고 쿠버네티스 파드 배포를 시도하였다 ! 그런데 파드 상태가.. 엄청난 메모리 부족.. OOM Killed.. CrashLoopBackOff 상태 반복.. 파드 스펙 늘리고 다시 배포하&quot; data-og-host=&quot;code1212-uh.tistory.com&quot; data-og-source-url=&quot;https://code1212-uh.tistory.com/15&quot; data-og-url=&quot;https://code1212-uh.tistory.com/15&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/da4fXF/hyQxHhwpHH/JVJdM9ypEvECa2mqWzdh1K/img.jpg?width=800&amp;amp;height=200&amp;amp;face=0_0_800_200,https://scrap.kakaocdn.net/dn/b8fZfl/hyQxGXdwmV/D1cfjzcRUiEiPXoheB3i5K/img.jpg?width=800&amp;amp;height=200&amp;amp;face=0_0_800_200&quot;&gt;&lt;a href=&quot;https://code1212-uh.tistory.com/15&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code1212-uh.tistory.com/15&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/da4fXF/hyQxHhwpHH/JVJdM9ypEvECa2mqWzdh1K/img.jpg?width=800&amp;amp;height=200&amp;amp;face=0_0_800_200,https://scrap.kakaocdn.net/dn/b8fZfl/hyQxGXdwmV/D1cfjzcRUiEiPXoheB3i5K/img.jpg?width=800&amp;amp;height=200&amp;amp;face=0_0_800_200');&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;Pod 안전하게 생성/배포 및 QoS 정책 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;  Epilogue 간단한 JAR 애플리케이션을 가지고 쿠버네티스 파드 배포를 시도하였다 ! 그런데 파드 상태가.. 엄청난 메모리 부족.. OOM Killed.. CrashLoopBackOff 상태 반복.. 파드 스펙 늘리고 다시 배포하&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code1212-uh.tistory.com&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubernetes.io/ko/docs/concepts/workloads/controllers/deployment/#%EC%B5%9C%EB%8C%80-%EC%84%9C%EC%A7%80-max-surge&quot;&gt;디플로이먼트&lt;/a&gt;&lt;/p&gt;</description>
      <category>Kubernetes</category>
      <category>deployment</category>
      <category>kubernetes</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/54</guid>
      <comments>https://code1212-uh.tistory.com/54#entry54comment</comments>
      <pubDate>Sun, 13 Nov 2022 01:43:48 +0900</pubDate>
    </item>
    <item>
      <title>RBAC 설정</title>
      <link>https://code1212-uh.tistory.com/53</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ RBAC ?&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;RBAC&lt;/b&gt; : 역할 기반 액세스 제어 (Role Based Access Control)&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;누가(주체), 무엇을(동사), 어디에(네임스페이스)를 실행할 수 있는지 결정하는 액세스 관리 형식&lt;/li&gt;
&lt;li&gt;사용자 이름으로 액세스 권한을 부여하던 기존 ABAC에서 발전한 형태&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  &lt;b&gt;ABAC&lt;/b&gt; : 속성 기반 액세스 제어 (Attribute Based Access Control)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;K8s Service 클러스터 생성 시 클러스터를 생성한 Sub Account와 Root 계정은 클러스터 RBAC &lt;span style=&quot;color: #ee2323;&quot;&gt;system:masters&lt;/span&gt; 그룹에 자동으로 설정된다.&lt;/li&gt;
&lt;li&gt;클러스터 사용 권한을 IAM 유저에게 부여하려면 &lt;span style=&quot;color: #ee2323;&quot;&gt;kube-system&lt;/span&gt; 네임스페이스에 &lt;span style=&quot;color: #ee2323;&quot;&gt;ncp-auth&lt;/span&gt; ConfigMap을 등록해야 한다.&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size26&quot;&gt;⭐️ 목적&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 Sub Account 마다 namespace를 할당하고 자신의 namespace에서만 리소스 접근 권한 부여하기 ❗️&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqQQtS/btrQ0QTJrRa/F8h3IiYz219F3ARpMyTK2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqQQtS/btrQ0QTJrRa/F8h3IiYz219F3ARpMyTK2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqQQtS/btrQ0QTJrRa/F8h3IiYz219F3ARpMyTK2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqQQtS%2FbtrQ0QTJrRa%2FF8h3IiYz219F3ARpMyTK2K%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;526&quot; height=&quot;183&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;299&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;h2 data-ke-size=&quot;size26&quot;&gt;▪ API objects&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Role&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 namespace 안에서 수행할 수 있는 권한&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ClusterRole&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;non-namespace 리소스이며 클러스터 전체에서 수행할 수 있는 권한&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RoleBinding&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 namespace 안에서 사용자나 사용자들 집합에게 Role안에서 정의한 권한을 부여&lt;/li&gt;
&lt;li&gt;ClusterRole을 참조할 수 있으며 RoleBinding의 namespace에 결합(bind) 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ClusterRoleBinding&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클러스터에서 모든 namespace에 ClusterRole을 결합시키기 위한 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현 목적에 맞게 RBAC 인증을 사용하기 위해 필요한 권한과 API object를 생각해보자 !
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개인의 namespace 안의 리소스만 접근 및 수정 가능&lt;/li&gt;
&lt;li&gt;Group으로 관리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;node와 namespace를 볼 수 있는 &lt;u&gt;ClusterRole&lt;/u&gt; + &lt;u&gt;ClusterRoleBinding&lt;/u&gt;&lt;/li&gt;
&lt;li&gt;특정 namespace 내의 리소스를 관리할 수 있는 &lt;u&gt;Role&lt;/u&gt; + &lt;u&gt;RoleBinding&lt;/u&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &amp;nbsp; 먼저 NCP 가이드에 나와있는 configmap 작성법을 참고하여 작성하였다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ ConfigMap 작성 및 생성&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;ncp-auth-configmap.yaml&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;subAccountIdNo&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SubAccount 콘솔에서의 확인 가능한 SubAccount ID&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;username&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;K8s 내부에서 IAM 유저에게 맵핑할 사용자의 이름&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;group&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;K8s 내부에서 IAM 사용자에게 맵핑할 그룹 목록&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;apiVersion: v1
kind: ConfigMap
metadata:
  name: ncp-auth
  namespace: kube-system
data:
  mapSubAccounts: |
    - subAccountIdNo: b4e398d0-******
      username: snowcat471
      groups:
        - restricted-access-group-h
    - subAccountIdNo: 3318e510-******
      username: jungmir
      groups:
        - restricted-access-group-m
    - subAccountIdNo: d7dbe520-******
      username: fails9503
      groups:
        - restricted-access-group-j
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;configmap 생성 및 확인&lt;/li&gt;
&lt;/ul&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;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Uxpmr/btrQ2RLbw9x/5c1v0IoXQMnQ6yB6lU2h20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Uxpmr/btrQ2RLbw9x/5c1v0IoXQMnQ6yB6lU2h20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Uxpmr/btrQ2RLbw9x/5c1v0IoXQMnQ6yB6lU2h20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUxpmr%2FbtrQ2RLbw9x%2F5c1v0IoXQMnQ6yB6lU2h20%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;674&quot; height=&quot;47&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;76&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;860&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/142kU/btrQ0XL4Kme/7mYKrAZEyOK4Nv8BFQ8qT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/142kU/btrQ0XL4Kme/7mYKrAZEyOK4Nv8BFQ8qT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/142kU/btrQ0XL4Kme/7mYKrAZEyOK4Nv8BFQ8qT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F142kU%2FbtrQ0XL4Kme%2F7mYKrAZEyOK4Nv8BFQ8qT1%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;548&quot; height=&quot;237&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;372&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; &lt;/b&gt;&amp;nbsp;트러블 이슈 때려 잡기 !&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;error: You must be logged in to the server (Unauthorized)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;인증이 안되었다는 에러 메시지이므로 role에 대한 오류보다는 configmap에 IAM 계정이 제대로 안 들어갔다고 판단하였음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;namespace: kube-system&lt;/span&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;namespace를 kube-system에 넣어주지 않고 default에 넣어준 &lt;s&gt;바보 같은 나..&lt;/s&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;subAccountIdNo : ****-****&lt;/span&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;sub account ID number을 명시해줘야 하는데 진짜 user ID를 넣어버린 &lt;s&gt;바보 같은 나&lt;/s&gt;..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjKvtq/btrQZPON4JE/mZbprGCQAJVXBlJ9DfFsK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjKvtq/btrQZPON4JE/mZbprGCQAJVXBlJ9DfFsK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjKvtq/btrQZPON4JE/mZbprGCQAJVXBlJ9DfFsK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjKvtq%2FbtrQZPON4JE%2FmZbprGCQAJVXBlJ9DfFsK0%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;502&quot; height=&quot;132&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;226&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ ClusterRole 작성 및 생성&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;ncp-auth-clusterrole.yaml&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: restricted-access-clusterrole
rules:
- apiGroups: [&quot;&quot;]
  resources: [&quot;nodes&quot;, &quot;namespaces&quot;]
  verbs: [&quot;get&quot;, &quot;list&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클러스터 전체에 대해 수행할 cluster role 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6klmw/btrQ3TvdzGa/k1Dx4XJfKUGBcZ94A5N26K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6klmw/btrQ3TvdzGa/k1Dx4XJfKUGBcZ94A5N26K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6klmw/btrQ3TvdzGa/k1Dx4XJfKUGBcZ94A5N26K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6klmw%2FbtrQ3TvdzGa%2Fk1Dx4XJfKUGBcZ94A5N26K%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;737&quot; height=&quot;42&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;71&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ ClusterRoleBinding 작성 및 그룹 맵핑&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;ncp-auth-clusterrolebinding.yaml&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
	name: restricted-access-clusterrole-binding
subjects:
- kind: Group
	name: restricted-access-group
	apiGroup: rbac.authorization.k8s.io
roleRef:
	kind: ClusterRole
	name: restricted-access-clusterrole
	apiGroup: rbac.authorization.k8s.io
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클러스터 전체에 대한 cluster role을 restricted-access-group 그룹에 맵핑&lt;/li&gt;
&lt;/ul&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;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OHR3u/btrQ0XyyOS6/D08pQRb7PkPUrCwqwqDGok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OHR3u/btrQ0XyyOS6/D08pQRb7PkPUrCwqwqDGok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OHR3u/btrQ0XyyOS6/D08pQRb7PkPUrCwqwqDGok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOHR3u%2FbtrQ0XyyOS6%2FD08pQRb7PkPUrCwqwqDGok%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;699&quot; height=&quot;39&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;64&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ &lt;span data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;Role 작성 및 생성&lt;/span&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;ncp-auth-role.yaml&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
	namespace: &amp;lt;specific-namespace&amp;gt;
	name: restricted-access-role
rules:
- apiGroups: [&quot;&quot;]
	resources: [&quot;pods&quot;]
	verbs: [&quot;get&quot;, &quot;list&quot;]
- apiGroups: [&quot;apps&quot;]
	resources: [&quot;deployments&quot;, &quot;daemonsets&quot;, &quot;statefulsets&quot;, &quot;replicasets&quot;]
	verbs: [&quot;get&quot;, &quot;list&quot;]
- apiGroups: [&quot;batch&quot;]
	resources: [&quot;jobs&quot;]
	verbs: [&quot;get&quot;, &quot;list&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 사용자의 namespace에 맞춘 role 생성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한꺼번에 적용시키면 편하지만 처음이라 하나하나 해보고 싶었던..ㅎ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d5pb4A/btrQ0j29y7Q/K3kvbiUCVYbPGefPJVCrkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d5pb4A/btrQ0j29y7Q/K3kvbiUCVYbPGefPJVCrkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d5pb4A/btrQ0j29y7Q/K3kvbiUCVYbPGefPJVCrkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd5pb4A%2FbtrQ0j29y7Q%2FK3kvbiUCVYbPGefPJVCrkK%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;755&quot; height=&quot;43&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;71&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;h4 data-ke-size=&quot;size20&quot;&gt; &amp;nbsp;트러블 이슈 때려 잡기 !&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;kubectl get pods -n mir에&lt;/span&gt; 대한 명령어 에러 발생
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Error from server (Forbidden): pods is forbidden: User &amp;ldquo;jungmir&amp;rdquo; cannot list resource &amp;ldquo;pods&amp;rdquo; in API group &amp;ldquo;&amp;rdquo; at the cluster scope&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&amp;lsquo;클러스터 범위 내 API 그룹 [&amp;ldquo;&amp;rdquo;] 안의 pods 리스트를 IAM 유저에게 보여줄 수 없다&amp;rsquo;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;권한 에러&lt;/li&gt;
&lt;li&gt;rule에 대한 것이 IAM 유저에게 제대로 맵핑이 안되었나?&lt;/li&gt;
&lt;li&gt;rule이 제대로 정의가 안되었나?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;apiGroups: [&quot;apps&quot;]&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아무리 생각해도 잘못 설정한 곳이 없다고 생각했었던 &lt;s&gt;바보 같은 나..&lt;/s&gt;&lt;/li&gt;
&lt;li&gt;resources: [&quot;deployments&quot;, &amp;hellip; ] &amp;rarr; 저 리소스들에 관한 rule 정할 건데..&lt;/li&gt;
&lt;li&gt;verbs: [&quot;get&quot;, &quot;list&quot;] &amp;rarr; 눈 3번 비벼도 이상하게 적은 곳 없는데..&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;apiGroups: [&amp;rdquo;&amp;rdquo;]&lt;/span&gt; &amp;rarr; &lt;span style=&quot;background-color: #f6e199;&quot;&gt;확실하지 않은 건 이건데..?&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;앗.. 여기서 api 관련된 것을 어디서 볼 수 있었더라? pod의 apiVersiondeployment의 apiVersion&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jixcu/btrQ1mLDdbY/FLQGpznjUhbXsXQXa0IujK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jixcu/btrQ1mLDdbY/FLQGpznjUhbXsXQXa0IujK/img.png&quot; data-alt=&quot;pod의 apiVersion&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jixcu/btrQ1mLDdbY/FLQGpznjUhbXsXQXa0IujK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJixcu%2FbtrQ1mLDdbY%2FFLQGpznjUhbXsXQXa0IujK%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;338&quot; height=&quot;112&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;112&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;pod의 apiVersion&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cf1UJL/btrQ0w2kyhv/YUoKD6W4zsFjFfG3NcOfKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cf1UJL/btrQ0w2kyhv/YUoKD6W4zsFjFfG3NcOfKK/img.png&quot; data-alt=&quot;deployment의 apiVersion&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cf1UJL/btrQ0w2kyhv/YUoKD6W4zsFjFfG3NcOfKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcf1UJL%2FbtrQ0w2kyhv%2FYUoKD6W4zsFjFfG3NcOfKK%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;406&quot; height=&quot;118&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;deployment의 apiVersion&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위 그림 참고..&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결국 pod에 대한 apiGroups는 [&amp;ldquo;&amp;rdquo;] 이었으며 deployment, daemonsets 등.. 에 관한 apiGroups는 [&amp;rdquo;apps&amp;rdquo;] 였다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;  &lt;/b&gt;결론&amp;nbsp;&lt;/b&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 대한 apiVersion 잘못 작성함&lt;/li&gt;
&lt;li&gt;but, 여러 오브젝트 및 서비스에 관한 apiVersion을 확인하고 apiGroup에 넣는 법을 배웠다 !&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;▪︎ RoleBinding 작성 및 그룹 맵핑&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;ncp-auth-rolebinding.yaml&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: restricted-access-role-binding
  namespace: &amp;lt;specific-namespace&amp;gt;
subjects:
- kind: Group
  name: restricted-access-group
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: restricted-access-role
  apiGroup: rbac.authorization.k8s.io&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 사용자의 namespace에 맞춘 role에 대해 restricted-access-group에 맵핑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgA0Bi/btrQ0FSrfUz/iMC0WJzYNqtim9OAtqVs40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgA0Bi/btrQ0FSrfUz/iMC0WJzYNqtim9OAtqVs40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgA0Bi/btrQ0FSrfUz/iMC0WJzYNqtim9OAtqVs40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgA0Bi%2FbtrQ0FSrfUz%2FiMC0WJzYNqtim9OAtqVs40%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;656&quot; height=&quot;45&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;78&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;h3 data-ke-size=&quot;size23&quot;&gt;⭐️ 보나쓰&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ClusterRole/Role &lt;span style=&quot;color: #ee2323;&quot;&gt;verbs&lt;/span&gt;에서 &amp;ldquo;get&amp;rdquo;과 &amp;ldquo;list&amp;rdquo;의 차이는 뭘까?
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;둘 간의 차이 확인을 위해 RBAC의 role을 정의할 때 &amp;ldquo;list&amp;rdquo;에 대한 verbs를 제거하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1668270575528&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;- apiGroups: [&quot;&quot;]
  resources: [&quot;pods&quot;]
  verbs: [&quot;get&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;kubectl get pods&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Forbidden 에러 발생 !&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;kubectl get pods &amp;lt;specific-pod-name&amp;gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;정상 출력 !&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Why?&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 일반적으로 kubectl get pods 해서 나오는 pod 정보 리스트는 디폴트로 &amp;ldquo;list&amp;rdquo;에 대한 옵션이 들어갔다고 생각한다.&lt;/li&gt;
&lt;li&gt;그렇기 때문에 &amp;ldquo;list&amp;rdquo;에 대한 권한이 없는 경우 전체 pod에 대한 리스트를 확인 불가능하며 특정 pod에 대한 이름 정보를 옵션으로 넣어주어야 &lt;span style=&quot;color: #ee2323;&quot;&gt;그 특정 pod에 대한 정보만&lt;/span&gt; &amp;ldquo;get&amp;rdquo;으로써 확인 가능한 것이다.&lt;/li&gt;
&lt;li&gt;왜 &amp;ldquo;get&amp;rdquo;과 &amp;ldquo;list&amp;rdquo; 권한을 분리시켜놓았는지에 대한 목적을 생각해보았다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;만약 특정 사용자나 개발자에게 모든 정보를 오픈하는 것보다 특정 정보만 오픈하길 원할 경우
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최소한의 권한 부여 &amp;rarr; &lt;u&gt;보안 향상&lt;/u&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;ref.&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://guide.ncloud-docs.com/docs/k8s-iam-auth-management&quot;&gt;IAM 인증 사용자 관리&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubernetes.io/docs/reference/access-authn-authz/rbac/&quot;&gt;Using RBAC Authorization&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cloud.redhat.com/blog/5-kubernetes-rbac-mistakes-you-must-avoid?extIdCarryOver=true&amp;amp;sc_cid=701f2000001OH7EAAW&quot;&gt;5 Kubernetes RBAC Mistakes You Must Avoid&lt;/a&gt;&lt;/p&gt;</description>
      <category>Cloud/NCP</category>
      <category>kubernetes</category>
      <category>ncp</category>
      <category>NKS</category>
      <category>RBAC</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/53</guid>
      <comments>https://code1212-uh.tistory.com/53#entry53comment</comments>
      <pubDate>Sun, 13 Nov 2022 01:25:44 +0900</pubDate>
    </item>
    <item>
      <title>K8s Service 인증</title>
      <link>https://code1212-uh.tistory.com/52</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NCP K8s Service는 &lt;span style=&quot;color: #ee2323;&quot;&gt;ncp-iam-authenticator&lt;/span&gt;를 통해서 IAM 인증을 제공한다.&lt;/li&gt;
&lt;li&gt;IAM 인증을 통해서 kubectl을 사용하기 위해
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;ncp-iam-authenticator&lt;/span&gt;를 설치하고&lt;/li&gt;
&lt;li&gt;kubectl 설정 파일을 수정하여&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;이를 인증에 사용하도록 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ ncp-iam-authenticator 설치 (for macOS)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Object Storage에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;ncp-iam-authenticator&lt;/span&gt; 바이너리를 다운로드&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;$ curl -o ncp-iam-authenticator &amp;lt;https://kr.object.ncloudstorage.com/nks-download/ncp-iam-authenticator/v1.0.5/darwin/amd64/ncp-iam-authenticator&amp;gt;
&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 바이너리에 실행 권한 추가&lt;/p&gt;
&lt;pre class=&quot;elixir&quot;&gt;&lt;code&gt;$ chmod +x ./ncp-iam-authenticator
&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. &lt;span style=&quot;color: #ee2323;&quot;&gt;$HOME/bin/ncp-iam-authenticator&lt;/span&gt;를 생성하고 &lt;span style=&quot;color: #ee2323;&quot;&gt;$PATH&lt;/span&gt;에 추가&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ mkdir -p $HOME/bin &amp;amp;&amp;amp; cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator &amp;amp;&amp;amp; export PATH=$PATH:$HOME/bin
&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. Shell Profile에 &lt;span style=&quot;color: #ee2323;&quot;&gt;PATH&lt;/span&gt;를 추가&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나는 zsh 를 쓰고 있으므로 ~&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;$ echo 'export PATH=$PATH:$HOME/bin' &amp;gt;&amp;gt; ~/.zshrc
&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. &lt;span style=&quot;color: #ee2323;&quot;&gt;ncp-iam-authenticator&lt;/span&gt; 바이너리가 정상 동작하는지 테스트&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;$ ncp-iam-authenticator help&lt;/code&gt;&lt;/pre&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;621&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTjdMM/btrQ0G4PogF/Bc8885QMAOgyU9YF3Ubkm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTjdMM/btrQ0G4PogF/Bc8885QMAOgyU9YF3Ubkm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTjdMM/btrQ0G4PogF/Bc8885QMAOgyU9YF3Ubkm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTjdMM%2FbtrQ0G4PogF%2FBc8885QMAOgyU9YF3Ubkm0%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;725&quot; height=&quot;392&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;621&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;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ IAM 인증 kubeconfig 생성&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;먼저 ncp-iam-authenticator를 사용하기 위해 API 인증키 값을 설정하는 두 가지 방법
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OS 환경변수 설정&lt;/li&gt;
&lt;li&gt;configure 파일 설정&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;OS 환경변수가 configure 파일보다 우선시 된다 !&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;1️⃣&amp;nbsp;OS 환경변수 확인&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;API 인증키 값 확인한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마이페이지 &amp;rarr; 계정 관리 &amp;rarr; 인증키 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;확인한 API 인증키 값을 OS 환경변수로 설정한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ export NCLOUD_ACCESS_KEY=[ACCESS_KEY_ID]
$ export NCLOUD_SECRET_KEY=[SECRET_ACCESS_KEY]
$ export NCLOUD_API_GW=https://ncloud.apigw.ntruss.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 환경변수 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;elixir&quot;&gt;&lt;code&gt;$ printenv
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 환경변수 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;elixir&quot;&gt;&lt;code&gt;$ echo $[value_name]
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;환경변수 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;shell&quot;&gt;&lt;code&gt;$ unset [value_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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2️⃣&lt;/b&gt;&amp;nbsp;configure 파일 설정&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자 로컬 홈 디렉토리의 .ncloud 폴더에 configure 파일 생성 및 설정
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;없으면 만든다 !&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;$ cat ~/.ncloud/configure
[DEFAULT]
ncloud_access_key_id = [ACCESS_KEY_ID]
ncloud_secret_access_key = [SECRET_ACCESS_KEY]
ncloud_api_url = &amp;lt;https://ncloud.apigw.ntruss.com&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWkN8b/btrQ1ncHBw1/p5eonOOJAkTTHr4kLAcykk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWkN8b/btrQ1ncHBw1/p5eonOOJAkTTHr4kLAcykk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWkN8b/btrQ1ncHBw1/p5eonOOJAkTTHr4kLAcykk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWkN8b%2FbtrQ1ncHBw1%2Fp5eonOOJAkTTHr4kLAcykk%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;652&quot; height=&quot;135&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;199&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;h3 data-ke-size=&quot;size23&quot;&gt;➡️&amp;nbsp;kubeconfig 생성&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ncp-iam-authenticator create-kubeconfig 으로 클러스터의 kubeconfig 생성한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;$ ncp-iam-authenticator create-kubeconfig --region &amp;lt;region-code&amp;gt; --clusterUuid &amp;lt;cluster-uuid&amp;gt; --output kubeconfig.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;# 예시
$ ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid 1234567890 --output kubeconfig.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;region-code&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클러스터의 리전 코드&lt;/li&gt;
&lt;li&gt;e.g) KR, SGN&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;cluster-uuid&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클러스터의 UUID&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;--output&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kubeconfig 파일이 저장될 path&lt;/li&gt;
&lt;li&gt;입력 안할 시 &lt;span style=&quot;color: #ee2323;&quot;&gt;./kubeconfig-&amp;lt;cluster-uuid&amp;gt;.yaml&lt;/span&gt; path로 파일 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;kubeconfig.yaml 파일로 kubectl 명령 테스트 성공 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lg5si/btrQ0SjLplS/ActiBAzDZm6dsDTJ7lOPC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lg5si/btrQ0SjLplS/ActiBAzDZm6dsDTJ7lOPC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lg5si/btrQ0SjLplS/ActiBAzDZm6dsDTJ7lOPC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flg5si%2FbtrQ0SjLplS%2FActiBAzDZm6dsDTJ7lOPC0%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;681&quot; height=&quot;145&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;226&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;h3 data-ke-size=&quot;size23&quot;&gt;⏸&amp;nbsp;kubectl 명령어 단축&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 kubectl 명령어를 사용하기 위해선 kubeconfig 환경 설정 파일까지 입력해야함&lt;/li&gt;
&lt;li&gt;너무 길어서 불편,,&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위에서 열심히 만들었던 kubeconfig.yaml 파일을 .kube/config 로 이름을 바꿔 이동하거나 복사한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ccuyv/btrQ0SKP4Yz/okuMWG4G0qocX2O09js8t1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ccuyv/btrQ0SKP4Yz/okuMWG4G0qocX2O09js8t1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ccuyv/btrQ0SKP4Yz/okuMWG4G0qocX2O09js8t1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCcuyv%2FbtrQ0SKP4Yz%2FokuMWG4G0qocX2O09js8t1%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;432&quot; height=&quot;25&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;48&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;잘 동작하는 것을 확인할 수 있다 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UZ88k/btrQZRskRPD/qzdXUin6ndnkeZOGzXNqHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UZ88k/btrQZRskRPD/qzdXUin6ndnkeZOGzXNqHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UZ88k/btrQZRskRPD/qzdXUin6ndnkeZOGzXNqHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUZ88k%2FbtrQZRskRPD%2FqzdXUin6ndnkeZOGzXNqHk%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;337&quot; height=&quot;125&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;236&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Cloud/NCP</category>
      <category>authenticator</category>
      <category>kubernetes</category>
      <category>ncp</category>
      <category>NKS</category>
      <category>service</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/52</guid>
      <comments>https://code1212-uh.tistory.com/52#entry52comment</comments>
      <pubDate>Sun, 13 Nov 2022 01:02:31 +0900</pubDate>
    </item>
    <item>
      <title>NKS Cluster 생성</title>
      <link>https://code1212-uh.tistory.com/51</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;▪︎ 신청 및 생성&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Service - Kubernetes Service - Clusters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/llkj2/btrQ1l0eWNu/p53BQ9ubwvPwti9IUk0BT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/llkj2/btrQ1l0eWNu/p53BQ9ubwvPwti9IUk0BT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/llkj2/btrQ1l0eWNu/p53BQ9ubwvPwti9IUk0BT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fllkj2%2FbtrQ1l0eWNu%2Fp53BQ9ubwvPwti9IUk0BT0%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;599&quot; height=&quot;385&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;682&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LnzrZ/btrQ0F5Wea9/RNlPKbIUQ8vIZpruhByet0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LnzrZ/btrQ0F5Wea9/RNlPKbIUQ8vIZpruhByet0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LnzrZ/btrQ0F5Wea9/RNlPKbIUQ8vIZpruhByet0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLnzrZ%2FbtrQ0F5Wea9%2FRNlPKbIUQ8vIZpruhByet0%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;686&quot; height=&quot;600&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1750&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요금 잘 계산한 후에 원하는 목적에 맞는 서버 스펙으로 노드풀 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oKDZe/btrQZPBiIZH/Yu7y89t956vIJAsyyLoGvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oKDZe/btrQZPBiIZH/Yu7y89t956vIJAsyyLoGvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oKDZe/btrQZPBiIZH/Yu7y89t956vIJAsyyLoGvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoKDZe%2FbtrQZPBiIZH%2FYu7y89t956vIJAsyyLoGvk%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;683&quot; height=&quot;437&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1266&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인증키 생성 및 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;890&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYuMKH/btrQ1fTh5Ex/RNkalDk3T2KlEBYYYMiNu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYuMKH/btrQ1fTh5Ex/RNkalDk3T2KlEBYYYMiNu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYuMKH/btrQ1fTh5Ex/RNkalDk3T2KlEBYYYMiNu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYuMKH%2FbtrQ1fTh5Ex%2FRNkalDk3T2KlEBYYYMiNu1%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;677&quot; height=&quot;363&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;890&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클러스터 생성 스펙 리뷰&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1qZXZ/btrQZQUw1RG/PvmPBKTDpLmIysqyazNS51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1qZXZ/btrQZQUw1RG/PvmPBKTDpLmIysqyazNS51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1qZXZ/btrQZQUw1RG/PvmPBKTDpLmIysqyazNS51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1qZXZ%2FbtrQZQUw1RG%2FPvmPBKTDpLmIysqyazNS51%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;734&quot; height=&quot;579&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1578&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성중 〰️&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1804&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3Iu46/btrQ0wVw1P8/AyiPF0A8OxUkWkoO2fS5N0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3Iu46/btrQ0wVw1P8/AyiPF0A8OxUkWkoO2fS5N0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3Iu46/btrQ0wVw1P8/AyiPF0A8OxUkWkoO2fS5N0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3Iu46%2FbtrQ0wVw1P8%2FAyiPF0A8OxUkWkoO2fS5N0%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;802&quot; height=&quot;151&quot; data-origin-width=&quot;1804&quot; data-origin-height=&quot;340&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성하는 동안 사용자 로컬에서 클러스터 제어를 위한 kubectl 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;# Homebrew 패키지 매니저를 사용하고 있는 macOS인 케이스

# kubectl 설치
$ brew install kubectl

# 설치 버전 확인
$ kubectl version --client
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성 성공 !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P9dxi/btrQZXlKCtQ/P7PphY1iREHkCDgzxdQHg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P9dxi/btrQZXlKCtQ/P7PphY1iREHkCDgzxdQHg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P9dxi/btrQZXlKCtQ/P7PphY1iREHkCDgzxdQHg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP9dxi%2FbtrQZXlKCtQ%2FP7PphY1iREHkCDgzxdQHg0%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;767&quot; height=&quot;592&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1530&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;</description>
      <category>Cloud/NCP</category>
      <category>cluster</category>
      <category>kubernetes</category>
      <category>ncp</category>
      <category>NKS</category>
      <category>service</category>
      <author>uuuhhh</author>
      <guid isPermaLink="true">https://code1212-uh.tistory.com/51</guid>
      <comments>https://code1212-uh.tistory.com/51#entry51comment</comments>
      <pubDate>Sun, 13 Nov 2022 00:53:57 +0900</pubDate>
    </item>
  </channel>
</rss>