Naver cloud 대학생 모임 후기 (2) - ncloud NKS 구축 해보기 2024.08.18

https://sunchan.tistory.com/4

 

Naver cloud 대학생 모임 후기 (ncloud에서 표준 아키텍쳐를 구상 및 구축해보자!) 2024.08.10

클라우드 엔지니어 취업 준비를 함에 있어 평소 많은 정보를 얻고 있었던 cloud 전문가 카페에서 감사하게도 클라우드를 공부하는 대학생을 위한 모임을 개설해주셔서 참석하게 되었습니다. 장

sunchan.tistory.com

이전 글에 이어서 이번에는 멀티zone의 ncloud 아키텍처를 구성해봤습니다. 

 

NKS, DB 등을 제외한 리소스 들은 이전 글에 포스팅한 방식으로 생성했습니다.(이름은 상이하지만 생성 방식은 같습니다)

이번 글에서는 NKS, DB까지 아키텍처를 완성하고, 리소스 정리까지 해보도록 하겠습니다.

 

 

최종적으로 완성된 아키텍처

 


 

 

 

1. NAT gateway 생성 

쿠버네티스의 아웃바운트 트래픽을 위한 nat를 생성해줍니다.

기존에 생성한 VPC와 NAT 전용 서브넷을 연결하여 NAT Gateway를 생성해줍니다.

 

2. Route Table 수정 

 

쿠버네티스에서 NAT Gateway로 아웃바운드 트래픽을 전송하도록 Route Table의 목적지를 설정해줍니다.

 

 

3. NKS(ncloud kubernetes service) 생성 

 

ncloud의 kubernetes 생성을 위해서는 VPC, NAT Gateway와 kubernetes를 배치할 서브넷, LB public/private까지 3개의 서브넷이 있어야 다음으로 넘어갈 수 있습니다.

 

초기에 서브넷 생성 시 서브넷의 용도를 잘 설정해주어야 합니다.  

 

 

kubernetes cluster의 노드풀을 생성해줍니다. 서버 타입과 노드 수 등을 선택한 후 등록해줍니다.

 

4. 데이터 베이스 생성

 Cloud DB for MySQL을 이용하여 데이터베이스 계층을 구성해주었습니다.

 

DB의 버전 등을 선택해주고 클릭 한 번으로 간단히 멀티 zone의 stanby DB server 까지 구축할 수 있었습니다.

서브넷은 DB를 위해 미리 생성한 Private 서브넷을 선택해주었습니다.

 

 

DB 접속에 필요한 USER_ID, 암호 등의 정보를 입력해줍니다.

간단한 테스트만을 위해 HOST는 모든 IP를 열어주었습니다.

 


 

 

최종적으로 완성된 아키텍처입니다. 기본적이지만 탄탄한 3tier 아키텍처를 구축해 고가용성을 유지,

DB는 active / stanby를 구성해 데이터 손실을 방지했습니다.

 

 


쿠버네티스 사용

 

https://cli.ncloud-docs.com/docs/guide-clichange

 

CLI 다운로드

 

cli.ncloud-docs.com

 

생성한 server를 명령용으로 사용했습니다.

 

  • 네이버 클라우드 cli
    • 네이버 클라우드의 cli를 설치하여 계정 인증 등의 작업을 명령서버에서 진행할 수 있습니다.
    • 위 링크에서 다운받은 파일을 직접 실행하거나 아래의 코드처럼 리눅스 명령줄로 다운 받을 수 있습니다.
# cli 파일 다운로드
wget https://www.ncloud.com/api/support/download/files/cli/CLI_1.1.20_20240620.zip

# 압축 해제
unzip CLI_1.1.20_20240620.zip

# 디렉토리 접근
cd CLI_1.1.20_20240620/
cd cli_linux/

# bin 디렉토리의 파일은 명령어로 사용가능합니다(파일명을 입력 시 내부의 명령을 실행)
cp ncloud /usr/bin/

# 정상 설치 확인
ncloud help
  • ncp-iam-authenticator
    • IAM 기능을 활용하기 위해 설치해줍니다.
# 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

# cli 처럼 bin 디렉토리로 파일을 배치하고 환경 변수까지 지정
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

# kr 리전의 클러스터 uuid를 복사해서 입력해주어 인증 정보를 생성합니다.
ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid  <clusterUuid> --output kubeconfig.yaml

 

 

인증 정보를 등록하기 위해 ncloud configure 명령으로 Access Key / Secret Access Key를 등록해줍니다.

인증 키는 계정관리에서 발급받으실 수 있습니다.

  • kubectl 설치
    • 명령서버에서 kubectl 명령을 사용하기 위해 설치해줍니다.
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

 

 

이제 명령서버의 준비가 모두 끝났습니다.

2048 게임의 이미지를 사용하여 테스트 해봤습니다.

 

2048 deployment / service 생성 yaml 파일

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-2048
spec:
  replicas: 2
  selector:
    matchLabels:
      app.kubernetes.io/name: app-2048
  template:
    metadata:
      labels:
        app.kubernetes.io/name: app-2048
    spec:
      containers:
      - name: app-2048
        image: alexwhen/docker-2048
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: deployment-2048
spec:
  selector:
    app.kubernetes.io/name: app-2048
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer

LoadBalancer를 type으로 지정해 외부에서 접근 가능하도록 했습니다.