일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Persistent Volume
- Codedeploy
- grafana
- ALB
- alertmanager
- ingress
- Naver cloud platform
- DevOps
- NFS Client Privisioner
- RKE2
- Codepipeline
- emptyDir
- pod
- cicd
- HTTPS Redirect
- volume
- Prometheus
- ncp
- Persistent Volume Claim
- slack
- k8s
- codecommit
- ingress controller
- emptyDir Volume
- AWS
- SSL Offload
- aws-dop
- Codebuild
- kubernetes
- node exporter
- Today
- Total
Cloud SA's This and That
[NCP] 쿠버네티스 클러스터 생성 & Container Registry 연동 본문
쿠버네티스 실습을 위해 NCP에서 클러스터 및 사용자 서버를 생성하여 Container Reistry를 연동해보았다.
[k8s-cluster 생성]
<클라우드 환경>
- VPC : kubernetes 클러스터를 생성하기 위한 가상 클라우드 공간
- 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 확인
