CampusMeet

[NKS] NKS를 활용한 배포 (1)

dong_seok 2024. 9. 8. 18:04
1. NKS(Ncloud Kubernetes Service)
2. 클러스터 접속

 

이번 프로젝트를 진행하면서 클라우드 서비스는 이제 선택이 아닌 필수 요소가 되었습니다. 처음에는 가장 많이 사용되는 AWS를 고려했으나, "제 8회 개방형 클라우드 플랫폼(K-PaaS) 기반 서비스 개발 아이디어 공모전"을 알게 되었습니다. 이 공모전은 NAVER Cloud, NHN Cloud, KT Cloud 중 하나를 제공받아 해당 플랫폼을 기반으로 서비스를 개발하는 것이 목표입니다.

 

저희 팀은 수상을 목표로 하기보다는 AWS 외의 다양한 클라우드 플랫폼을 경험해보고, 무료로 클라우드 환경을 제공받는 기회를 활용하기 위해 참여하기로 결정했습니다. 그중 Naver Cloud의 NKS를 선택했으며, 이번 포스팅에서는 이 과정에서의 경험을 공유하고자 합니다.

 

1. NKS(Ncloud Kubernetes Service)

1 ) 정의

Ncloud Kubernetes Service는 애플리케이션 컨테이너화, 배포, 스케일링, 그리고 관리를 자동화하는 오픈 소스 플랫폼입니다. 네이버 클라우드 플랫폼의 Ncloud Kubernetes Service를 통해 Kubernetes 환경을 효율적으로 제어하고 관리할 수 있습니다. 응용 프로그램에서 사용하는 인프라 규모를 동적으로 제어하고, 운영 상황을 모니터링하여 효율적으로 서비스를 관리할 수 있습니다.

 

2 ) 주요 장점

  • 클러스터 설정의 간소화
    • 복잡하고 반복적인 클러스터 설정 작업을 간소화하여, 클러스터 구축 및 운영에 소요되는 시간을 절약할 수 있습니다.
  • 안전한 통신 및 빠른 확장
    • 작업자 노드와 관리형 제어 영역 간의 안전한 통신을 제공하며, 작업자 노드를 신속하게 프로비저닝하여 애플리케이션을 손쉽게 확장할 수 있습니다.
  • 온 디맨드 업그레이드 및 패치
    • 클러스터의 온 디맨드 업그레이드 및 패치를 통해 최신 상태를 유지할 수 있습니다.
  • 자동 확장 기능
    • CPU 사용률 또는 설정한 측정값에 따라 수평형 Pod 자동 확장 및 노드 풀별 클러스터 자동 확장 기능을 제공하여, 다양한 워크로드 요구사항에 대응합니다.

3 ) 상세 기능

  • Kubernetes 클러스터 관리
    • Kubernetes 클러스터를 구축하는 데 필요한 설정 작업 중 복잡하고 반복되는 작업을 최소화
    • 클러스터 구축 및 운영 유지에 필요한 시간을 단축시켜 고객이 애플리케이션 구축에 집중할 수 있는 환경을 제공
  • 클러스터의 Pod 자동 확장 제공
    • VPC 환경에서 이용 가능
    • CPU 사용률 또는 커스텀 측정항목에 기반한 수평형 pod 자동 확장, 노드 풀별로 실행되는 클러스터 자동 확장, 변화하는 워크 로드 요구 사항을 바탕으로 여러 노드 풀에서 노드 풀과 클러스터를 자동 확장
  • 두 가지 유형의 클러스터 제공
    • Standard 유형
      • 클러스터 노드 구성, 컨테이너 생성 및 배포를 사용자가 진행
      • 목적에 따라 클러스터의 유연한 구성 가능
    • Managed 유형
      • 컨테이너 생성 및 배포만 사용자가 진행
      • 보안, 안정성, 확장성 관리를 위한 투입 비용과 리소스 절감 가능
  • 클러스터 관리(VPC(Virtual Private Cloud))
    • 고성능 워커 노드 지원
    • 데이터 시각화 및 관리가 용이한 모니터링
      • 그라파나(Grafana)를 활용한 모니터링 기능을 제공하여 노드 및 Pod의 상태와 자원 현황을 쉽고 빠르게 모니터링

 

2.  클러스터 접속

NKS 공식 문서에 따르면 VPC와 Subnet 생성 등 클러드 환경을 준비하는 단계가 선행되어야 하며, 클러스터를 생성하고 설정하는 과정이 필요합니다. 그러나 이번 대회의 특성상 서브 계정을 제공받았고, 참가자들의 환경 성능을 동일하게 유지하기 위해서인지 이미 계정 내에 클러스터가 생성되어 있었습니다. 덕분에 이러한 초기 설정을 생략하고 바로 다음 단계를 간편하게 진행할 수 있었습니다.

 

우선 생성되어 있는 클러스터에 접속해보도록 하겠습니다. Ncloud Kubernetes Service 대시보드에서 클러스터 목록을 확인할 수 있으며, 클러스터에 접속할 수 있습니다. 또한, 생성된 클러스터에 kubectl 명령어를 사용하여 접속할 수 있습니다. 저는 kubectl 명령어를 사용하여 접속해 보도록 하겠습니다. 가이드라인이 친절하게 다 제공 돼서 크게 어렵지 않았습니다.

 

ncp-iam-authenticator 설치

Ncloud Kubernetes Service는 ncp-iam-authenticator를 통해 IAM 인증을 제공합니다. IAM 인증을 통해 kubectl 명령을 사용하려면 ncp-iam-authenticator를 설치하고 이를 인증에 사용하도록 kubectl 설정 파일을 수정해야 합니다. 맥OS 환경에서 Homebrew 를 사용해 아래 명령어로 설치를 진행해 주었습니다.

 

brew tap NaverCloudPlatform/tap
brew install ncp-iam-authenticator

 

이제 설치가 완료되었으니 ncp-iam-authenticator를 통해 kubeconfig를 생성해야합니다. 그전에 꼭 알아두어야할 것이 ncp-iam-authenticator 를 사용하기 위해 API 인증키값을 설정해줘야합니다.

 

$ export NCLOUD_ACCESS_KEY=ACCESSKEYIDACCESSKEY
$ export NCLOUD_SECRET_KEY=SECRETACCESSKEYSECRETACCESSKEYSECRETACCE
$ export NCLOUD_API_GW=https://ncloud.apigw.ntruss.com

 

이 작업을 하지않으면 kubeconfig 파일을 정상적으로 만들어도 클러스터에 접근이 불가능하기 때문에 반드시 선행으로 작업해주어야합니다. 이제  "ncp-iam-authenticator create-kubeconfig" 명령어를 통해 파일을 생성해주겠습니다.

 

 

그런데 상단의 오류가 발생했고, 찾아보니 명령어 형식이 최신 버전과 맞지 않아 발생한 오류였고 이를 수정해주었습니다.

 

 

이번에는 --clusterUuid 플래그가 필수로 요구된다는 오류가 발생했습니다. 이를 해결하기 위해 Naver Cloud Platform 콘솔에 접속하여 클러스터 정보를 확인한 후, 해당 값을 입력하니 드디어 kubeconfig 파일이 성공적으로 생성된 것을 확인할 수 있었습니다.

 

 

이제 kubectl 명령어와 kubeconfig 파일을 이용해서 클러스터어 접속해보겠습니다.

 

$ kubectl --kubeconfig "설정파일" get nodes

 

클러스터에 정상적으로 접속되는 모습을 볼 수 있습니다. 아래의 환경변수 설정 과정을 거치면 더 직관적으로 명령어를 입력할 수 있습니다.

 

$ export KUBE_CONFIG="${HOME}/.Kube/config-ncp"
$ echo $KUBE_CONFIG
/Users/administrator/.Kube/config-ncp

$ kubectl --kubeconfig $KUBE_CONFIG get nodes

 

 

쓰다보니 내용이 길어져 핵심 내용인 클러스터에 배포하는 과정은 뒤의 포스팅에서 다루도록 하겠습니다.

 

 

참고자료

https://guide.ncloud-docs.com/docs/k8s-k8soverview

https://guide.ncloud-docs.com/docs/kubernetes-dashboard