[NCP] NKS(Naver Kubernetes Service) 클러스터 구축 + 네트워크 설정 튜토리얼

NewNewDaddy·2023년 11월 24일
0

Ncloud

목록 보기
2/8
post-thumbnail

0. INTRO

  • 이번에 새로운 프로젝트를 하게되면서 기존의 CSP가 AWS에서 NCP(Naver Cloud Platform)으로 바뀌었다.
  • AWS에는 EKS를 구축할 때 EKSCTL 명령어를 사용하면 아주 간편하게 Kubernetes 클러스터를 구축 할 수 있지만 NCP는 조금은 더 복잡하기에 NCP에서 NKS 클러스터를 구축하는 방법을 설명해볼까한다.
  • Subaccount로 로그인하여 구축을 하려면 특정 권한들이 필요한데 이번 내용에서는 Admin 권한을 가진 Root 계정에서 구축을 해 볼 것이다.

1. Subnet 생성

  • 기본적으로 VPC를 하나 생성해야하며 NKS 클러스터는 모두 private subnet에 위치하도록 구축 할 것이다.
  • private subnet은 NKS worker node들이 분산되기를 희망하는 수 만큼 만들어 준다. 예를들어 3개를 만들면 노드를은 해당 3개의 서브넷 중 하나에 위치하게 된다.

  1. Public Subnet (172.16.11.0/24, Y(Public), 일반)

  2. Private Subnet 3개

    • (172.16.11.0/24, N(Private), 일반)
    • (172.16.12.0/24, N(Private), 일반)
    • (172.16.13.0/24, N(Private), 일반)
  3. LoadBalancer Subnet (172.16.3.0/24, N(Private), LoadBalancer)

  4. NatGateway Subnet (172.16.4.0/24, N(Private), NatGateway)

2. NKS 클러스터 생성

  1. NKS 탭으로 들어가서 [클러스터 생성]을 클릭한다.

  2. 클러스터 이름을 입력하고 아래 사진에서 빨간 박스 내에 있는 VPC 설정들을 위에서 만든 subnet들로 선택해준다.

  3. 노드풀 이름을 설정해주고 우측 아래에 '+추가'를 눌러줘야 노드풀이 추가가 된다.

  4. 기존 인증키 선택 혹은 인증키 생성 후 설정

    • 기존에 발급받은 인증키가 없다면 생성하는 탭에서 인증키 이름만 입력하여 신규로 발급이 가능하다.
  5. 최종 확인 후 생성

  • 위의 단계들을 거쳐 클러스터를 생성하면 약 30분내로 클러스터가 생성되며 상태가 '운영중'으로 떠있으면 사용할 준비가 된 것이다.

3. 네트워크 설정

  1. NAT Gateway 생성 및 라우팅 설정 (VPC > NAT Gateway)
  • 아래와 같이 공인 NAT Gateway를 하나 생성해준다.
  1. Route Table에 연결 (VPC > Route Table)
  • 위에서 만든 NAT Gateway를 기본적으로 생성된 private route table에 연결해준다.

4. Bastion Server 설정

  • NKS와 연결되어 명령을 내려줄 Bastion 서버를 생성하여 해당 서버에서 CLI 커맨드를 통해 클러스터를 작동시켜줄 것이다.
  1. Bastion Server ACG(Access Control Group) 생성 (SERVER > ACG)
    • Inbound 규칙 : 80, 443, 22번 포트 및 NKS 클러스터에서 오는 트래픽을 모두 허용
    • Outbound 규칙 : 모든 트래픽 허용
  1. Server 생성 (SERVER > SERVER)
  • 서버 생성은 UI에서 순서만 따라가면 그렇게 어렵지 않게 생성할 수 있기 때문에 자세하게는 다루지 않는다. 다만, 5단계의 네트워크 접근 설정 에서 ACG를 선택할 때 위에서 생성한 ACG를 선택해주어야 한다.

5. Bastion 서버 접속 후 Kubectl 세팅

  1. ncp-iam-authenticator 설치 (ncp-iam-authenticator)

    curl -o ncp-iam-authenticator -L https://github.com/NaverCloudPlatform/ncp-iam-authenticator/releases/latest/download/ncp-iam-authenticator_linux_amd64
    chmod +x ./ncp-iam-authenticator
    mkdir -p $HOME/bin && cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator && export PATH=$PATH:$HOME/bin
    echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile
    ncp-iam-authenticator help
  2. kubectl 설치 (kubectl in linux)

    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    chmod +x kubectl
    mkdir -p ~/.local/bin
    mv ./kubectl ~/.local/bin/kubectl
  3. api key 발급

    • 인증키는 root 계정으로 접속해야만 발급이 가능하며 계정관리 > 인증키 관리 탭에서 신규로 발급이 가능하다.
  4. api key configure 설정

  • ~/.ncloud/configure 경로에 configure 정보를 적어주어야 한다.

    export NCLOUD_ACCESS_KEY=<API_ACCESS_KEY_ID>
    export NCLOUD_SECRET_KEY=<API_ACCESS_KEY_PW>
    export NCLOUD_API_GW=https://ncloud.apigw.ntruss.com
    export NKS_CLUSTER_UUID=<NKS_CLUSTER_UUID>
    
    cat <<EoF > ~/.ncloud/configure
    [DEFAULT]
    ncloud_access_key_id = $NCLOUD_ACCESS_KEY
    ncloud_secret_access_key = $NCLOUD_SECRET_KEY
    ncloud_api_url = $NCLOUD_API_GW
    
    [project]
    ncloud_access_key_id = $NCLOUD_ACCESS_KEY
    ncloud_secret_access_key = $NCLOUD_SECRET_KEY
    ncloud_api_url = $NCLOUD_API_GW
    EoF
  1. kubeconfig 파일 생성
    ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid $NKS_CLUSTER_UUID --output kubeconfig.yaml
  2. kubectl 명령 확인
  • 기존의 kubectl 명령과는 달리 kubectl --kubeconfig [kubeconfig.yaml 파일 위치] 이렇게가 한 세트로 동작하기 때문에 alias에 등록하여 사용하는 것이 좋다.

    export KUBE_CONFIG=<kubeconfig.yaml 파일 위치>
    
    kubectl --kubeconfig $KUBE_CONFIG get nodes

6. OUTRO

  • NKS 클러스터 생성 및 해당 클러스터와 통신할 Bastion 서버까지 세팅을 해보았다.
  • NKS는 AWS EKS와 많이 다르지는 않을 것이라 생각되지만 아무래도 구축이나 CLI를 쓰는 것에 있어서 약간은 더 불편한 점이 있었다. (사실 AWS가 너무 편하게 잘 되어있는 것이라 생각된다.)
  • NKS를 사용하면서는 또 어떠한 문제들과 마주하게 될지 기대하며 이번 글을 마친다.
profile
데이터 엔지니어의 작업공간 / #PYTHON #SPARK #AWS #NCLOUD

1개의 댓글

안녕하세요, 네이버 클라우드 플랫폼입니다.

네이버클라우드의 기술 콘텐츠 리워드 프로그램 '이달의 Nclouder(11월)' 도전자로 초대합니다 :)
네이버 클라우드 플랫폼 서비스와 관련된 모든 주제로 12.8(금)까지 신청 가능합니다.
(*11월 작성 콘텐츠 한정 신청 가능)

Ncloud 크레딧을 포함한 다양한 리워드가 준비되어 있으니 많은 관심 부탁드립니다!

*자세한 내용은 아래 링크에서 확인부탁드립니다.
https://blog.naver.com/n_cloudplatform/223257029353

*신청 링크
https://navercloud.typeform.com/to/lF8NUaCF

답글 달기