Cloud SA's This and That

[NCP] 쿠버네티스 클러스터 생성 & Container Registry 연동 본문

Naver-Cloud/Containers

[NCP] 쿠버네티스 클러스터 생성 & Container Registry 연동

뽀삐누냐 2023. 7. 20. 16:53
SMALL

쿠버네티스 실습을 위해 NCP에서 클러스터 및 사용자 서버를 생성하여 Container Reistry를 연동해보았다.

 

[k8s-cluster 생성]

 

<클라우드 환경>

  1. VPC : kubernetes 러스터를 생성하기 위한 가상 클라우드 공간
  2. Private Subnet : VPC  private 서브넷

(Private  (10.0.0.0/8, 172.16.0.0/12. 196.168.0.0/16) 내에서 /17~/26 범위에 해당되는 서브넷만 사용 가능) 

(Docker Bridge 대역의 충돌을 방지하기 위해 172.16.0.0/16 범위 내의 private subnet, 로드밸런서 전용 subnet 사 불가)

 

  3.  Load Balancer Subnet : 클러스터와 연동할 로드밸런서를 위한 서브넷

 

(Private  (10.0.0.0/8, 172.16.0.0/12. 196.168.0.0/16) 내에서 /17~/26 범위에 해당되는 서브넷만 사용 가능) 

(Docker Bridge 대역의 충돌을 방지하기 위해 172.16.0.0/16 범위 내의 private subnet, 로드밸런서 전용 subnet 사 불가)

 

  4.  NAT Gateway  : 웃바운드 인터넷 트래픽을 활성화하기 위한 게이트웨

  5.  Cloud Log Analytics : 러스터 사용 이력을 로그로 저장하기 위한 서비스 (선택사항)

 

<클러스터 생성>

1.클러스터 설정

 > 현재 지원되고 있는 Kubernetes version : [ 1.24.10 , 1.25.8 ]

 > Private Subnet은 최대 5개까지 선택 가능 ( 상세정보에서 서브넷 추가 가능 )

 > Private Subnet을 선택한 경우 NAT Gateway 생성해야 

 > ACG 자동으로 생성됨

 

 

2.노드풀 설정

 > 노드풀은 최대 10개까지 생성하여 추가할  있음

 > 현재 지원되는  이미지 : [ubuntu-20.04-64-server 50GB] , [ubuntu-18.04-64-server 50GB] ,

                                               [ubuntu-16.04-64-server 50GB]

 > 노드풀의 Kubernetes Label : 최대 50개까지 설정 가능

 

 

3.인증 설정

 

4.최종확인

 > 쿠버네티스 클러스터 생성은 20 정도 소요됨

 

 

5.생성 완료

 > 해당 클러스터 클릭하면 상세보기가 가능하다.

 > Audit Log 수정버튼을 통해 활성화하면 Cloud Log Analytics에 로그 수집 가능

 

 > 클러스터 정보  UUID IAM 인 Kubeconfig 파일을 생성할  필요함

 > 노드풀 설정도 확인할 수 있다.

 > 서버 메뉴에 가면 노드풀 설정에 따라 생성된 서버를 확인할  있다.

 

========================================================================================

 

<클러스터 제어>

 

[사용자용으로 생성한 서버에 Kubectl 설치] -https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-using-native-package-management

 

1. 패키지 인덱스를 업데이트 apt하고 쿠버네티스 apt 리포지터리를 사용하는데 필요한 패키지를 설치한다.

$ apt-get update

$ apt-get install -y ca-certifictes curl

$ apt-get install -y apt-transport-https ( 데비안 9 또는 이전 버전을 사용하는 경우 설치해야 함)

 

2. google cloud 공개 서명 키를 다운로드한다.

$ curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
(데비안 12 및 우분투 22.04 이전 버전에는 /etc/apt/keyrings 디렉터리가 기본적으로 존재하지 않기 때문에 새로 생성하여 chmod 755 적용->관리자만 쓸수 있고 누구나 읽을 수 있도록)

 

3. 쿠버네티스 apt 리포지터리를 추가한다.

$ echo"deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main"| sudo tee /etc/apt/sources.list.d/kubernetes.list

4. apt 새 리포지터리로 패키지 인덱스를 업데이트 하고 kubectl을 설치한다.

$ apt-get update

$ apt-get install -y kubectl

 

 

[IAM 인증 - ncp-iam-authenticator설치]

NCP의 쿠버네티스 서비스는 ncp-iam-authenticator를 통해 IAM인증을 통한 kubectl 명령을 사용할 수 있다.

 

 1. ncp-iam-authenticator 바이너리를 다운로드한다.

$ curl -o ncp-iam-authenticator -L https://github.com/NaverCloudPlatform/ncp-iam-authenticator/releases/latest/download/ncp-iam-authenticator_linux_amd64

 

2. 바이너리에 실행 권한을 추가한다.

$ chmod +x ./ncp-iam-authenticator

 

 3. $HOME/bin/ncp-iam-authenticator를 생성하고 $PATH에 추가해준다.

$ mkdir -p $HOME/bin && cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator && export PATH=$PATH:$HOME/bin

 

4. shell profile PATH를 추가해준다.

$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

 

 5. ncp-iam-authenticator 바이너리가 정상 동작하는지 테스트

 

[IAM 인증 - kubeconfig 생성]

쿠버네티스 서비스는 IAM 클러스터 인증을 위해 ncp-iam-authenticator를 사용한다. ncp-iam-authenticator를 통해

IAM 인증이 적용된 kubeconfig를 가져와 기존 파일에 업데이트 하거나 새 파일 생성을 할 수 있다.

 

1. ncp-iam-authenticator API 인증키 값 설정 (os 환경변수나 configure 파일에 API 키를 설정해준다.)

$ export NCLOUD_ACCESS_KEY=ACCESSKEYIDACCESSKEY

$ export NCLOUD_SECRET_KEY=SECRETACCESSKEYSECRETACCESSKEYSECRETACCE

$ export NCLOUD_API_GW=https://ncloud.apigw.ntruss.com

(인증키값을 확인하지 못할 경우 ncp-iam-authenticator 명령 수행 중에 API 키 입력을 요구한다)
 

2. kubeconfig 파일 생성

$ ncp-iam-authenticator create-kubeconfig --region <region-code> --clusterUuid <cluster-uuid> --output kubeconfig.yaml

 

 3. kubectl 실행 명령어 단축 및 테스트

~/.kube 디렉토리 생성 후 kubeconfig 파일 복사

 

[Container Registry 생성 및 이미지 Push] - 생성 과정은 Docker 카테고리에 업로드 예정!

> 테스트용 이미지 생성 및 저장

 

 

 

========================================================================================

 

[Kubernetes Service & Container Registry 연동]

 

1. 레지스트리에 접속하기 위한 엔드포인트, API 인증키 정보를 확인한다.

 

2. 터미널에서 kubectl 명령어를 이용하여 regcred 라는 이름의 secret을 생성한다.

$ kubectl create secret docker-registry regcred --docker-server=<registry-end-point> --docker-username=<access-key-id> --docker-password=<secret-key> --docker-email=<your-email>

 

**만약 secret을 생성하지 않고 컨테이너 레지스트리와 연결하는 경우 에러가 발생한다.

 3. 생성한 secret 확인

 

 4. test.yaml 생성 및 실행

 5. Pod 확인

 

 

LIST