[NCP] 도커/Kubernetes 설정

Moondy·2022년 7월 4일
1

이하 Kubernetes -> k8s로 표시

아키텍처

  • kubernetes cluster와 DB를 모두 private subnet에 생성
  • 개발 목적으로 외부에서 접속하기 위해 devstagram-master 생성
  • 버전관리를 위해 devstagram-master에서 Docker 생성 및 kubernetes 배포 실행
  • kubernetest의 LoadBalancer/Ingress 로 인해 생성된 public IP로 API 요청

    지금은 테스트 용이여서 simple-svc에 외부 접근 가능한 LoadBalancer를 붙여줬지만 실제로는 gateway를 생성할 것이기 때문에 simple-svc와 같은 msa는 ClusterIP로 만들어 내부 접근만 가능하게 할 예정이다.

1. NCP 설정

  • VPC, 서브넷 생성

  • Server 생성 - ubuntu18.04

  • 인증키

    • 서버 생성할 때 인증키 생성하면 .cer 파일이 생성된다.

    • 하지만 이것을 그대로 서버 접속할 때 쓰면 에러가 난다

    • .pem으로 확장파일을 바꿔야한다

    • 관리자 비밀번호 확인에서 username, password 확인

      • 이 때 pem 파일을 넣어줘야한다

  • 서버 접속 후 비밀번호 바꿔주기
    $ passwd

2. NKS (Kubernetes Cluster) 생성

  • 이 때 private subnet은 /17~26 범위인 subnet이, 로드밸런서 전용 서브넷이 필요
  • NAT Gateway를 만들어주자 (외부랑 통신을 해야하긴 하니깐)
    • 아웃바운드 인터넷 트래픽을 활성화하기 위해서는 NAT Gateway를 반드시 생성해야한다

3. devstagram-master에 docker/kubernetes-client 설치

# kubectl 설치
## 최신 release 버전 다운로드
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
## kubectl 설치
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
## 설치 확인
kubectl version --client

#ncp-iam-authenticator 설치
curl -o ncp-iam-authenticator https://kr.object.ncloudstorage.com/nks-download/ncp-iam-authenticator/v1.0.5/linux/amd64/ncp-iam-authenticator
chmod +x ./ncp-iam-authenticator
mkdir -p $HOME/bin && cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator && export PATH=$PATH:$HOME/bin
## bash shell profile에 PATH 추가
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile
## 테스트 
ncp-iam-authenticator help

#IAM 인증 kubeconfig 생성
##### 이때 ACCESS_KEY나 SECRET_KEY는 [마이 페이지]>[계정 관리]>[인증키 관리] 에서 확인
export NCLOUD_ACCESS_KEY=ACCESSKEYIDACCESSKEY
export NCLOUD_SECRET_KEY=SECRETACCESSKEYSECRETACCESSKEYSECRETACCE
export NCLOUD_API_GW=https://ncloud.apigw.ntruss.com

# kubeconfig 생성
###### 이때 region-code는 KR, cluster-uuid는 kubernetes-service > 클러스터 이름 (UUID), 괄호안에 있다
ncp-iam-authenticator create-kubeconfig --region <region-code> --clusterUuid <cluster-uuid> --output kubeconfig.yaml

## 테스트
kubectl cluster-info --kubeconfig=/home/moondysmell/kubeconfig.yaml
### Kubernetes control plane is running at ~ 이러면서 잘 나오면 성공

#alias 설정으로 쉽게 명령어 치기
alias kubectl='kubectl --kubeconfig="/home/moondysmell/kubeconfig.yaml"'
## 테스트
kubectl cluster-info

4. 도커 Container Registry 생성

  • k8s에 올릴 도커 파일을 저장하는 registry

1. Object Storage 생성

  • NCP에서 Registry 사용하려면 무조건 Object Storage 가 있어야한다
  • 버킷 생성
    • 버킷 이름: devsta-storage-bucket
    • 다른 설정 모두 default

2. Container Registry 생성

5. 서버에 Docker 설치

  • 블로그 참고하여 설치
  • Docker CLI에서 Container Registry에 로그인
    docker login -u <access-key-id> -p <password> mahnacwv.kr.private-ncr.ntruss.com
    • 네이버 클라우드 플랫폼 VPC 안에 있기 때문에 private endpoint 사용

      Login Succeeded 뜨면 성공

6. Kubernetes에서 Container Registry 로그인

  • Kubernetes에서 Container Registry 에 접근할 수 있도록 설정
    kubectl create secret docker-registry regcred --docker-server=<registry-end-point> --docker-username=<access-key-id> --docker-password=<secret-key> --docker-email=<your-email>
    • 계정 아이디: API 인증 키의 Access Key Id 확인

    • 계정 비밀번호: API 인증 키의 Secret Key 확인

    • 사용자 이메일: 사용자 계정 이메일 주소

      secret/regcred created 뜨면 성공

profile
LLM Application을 개발중인 BackEnd 개발자

0개의 댓글