Dev./Kubernetes & Helm

Kubernetes: nks IAM 인증

Ivan'show 2023. 9. 25.
728x90
반응형

ncp k8s service IAM 인증

NCP 에서 제공하는 Kubernetes Service 를 통해 Kubernetes 환경을 효율적으로 제어하고 관리할 수 있다. 응용프로그램에서 사용하는 인프라 규모를 동적으로 제어하고 운영상황을 모니터링 하여 효율적으로 서비스를 관리할 수 있게 한다.

  • k8s 환경 구축
  • k8s 배포 및 관리
  • 클러스터 자동확장

서비스를 사용하기 위한 준비

  • VPC
  • Private Subnet
  • Load balance Subnet
  • NAT Gateway

해당 클러스터에 접속하기 위해서는 IAM 인증을 거쳐야 한다.

// ncp-iam-autheticator 설치 
https://guide.ncloud-docs.com/docs/k8s-iam-auth-ncp-iam-authenticator

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

// result
🍺  /opt/homebrew/Cellar/go/1.21.0: 12,515 files, 241.0MB
==> Installing navercloudplatform/tap/ncp-iam-authenticator
==> go build -ldflags=-s -w -X github.com/NaverCloudPlatform/ncp-iam-authenticator/cmd.version=1.1.1 ./main.go
🍺  /opt/homebrew/Cellar/ncp-iam-authenticator/1.1.1: 5 files, 12.3MB, built in 14 seconds
==> Running `brew cleanup ncp-iam-authenticator`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
kimminhyeok@Ivans-Mac k8s %
mkdir ~/.ncloud
sudo vi ~/.ncloud/configure
// ~/.ncloud/configure
ncloud_access_key_id = ${NCP_ACCESS_KEY}
ncloud_secret_access_key = ${NCP_SECRET_KEY}
ncloud_api_url = <https://ncloud.apigw.ntruss.com>
// ncp-iam-authenticator create-kubeconfig 명령 사용
ncp-iam-authenticator update-kubeconfig --region <region-code> --clusterUuid <cluster-uuid>
// 실사용
ncp-iam-authenticator update-kubeconfig --region KR --clusterUuid 7c272982-8301-4cff-96e2-8e07465bd67d

minikube 가 아닌 kubectl 바이너리 설치

// k8s 공식 홈
<https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-macos/>
// MacOS apple silicon
curl -LO "<https://dl.k8s.io/release/$>(curl -L -s <https://dl.k8s.io/release/stable.txt>)/bin/darwin/arm64/kubectl"
kimminhyeok@Ivans-Mac k8s % kubectl get nodes
NAME                   STATUS   ROLES    AGE   VERSION
k8s-node-pool-w-3cwo   Ready    <none>   40m   v1.25.8
k8s-node-pool-w-3cwt   Ready    <none>   31m   v1.25.8

이제 더 이상minikube 는 동작하지 않고 kubectl 로 node-pool 로 연결된다.

클러스터를 새로 구성했으니 alias 부터 secret 까지 필요한 내용들을 따로 구성해야 한다.

# alias 수정
vi ~/.zshrc

# 
alias k="kubectl"
...
k create secret docker-registry regcred --docker-server=${REGISTRY} --docker-username=${ACCESS_KEY} --docker-password=${SECRET_KEY} --docker-email=${email}

여기서 email 은 token 을 발급한 iam 의 이메일 주소이다.

# lion-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: lion-app
  labels:
    app: lion-app
spec:
  imagePullSecrets:
  - name: regcred
  containers:
    - name: lion-app
      image: likelion-cr-mh.kr.ncr.ntruss.com/lion-app:sqlite
      imagePullPolicy: Always # 기존의 이미지를 쓰지않고 항상 가져오게 끔
      env: 
        - name: DJANGO_SETTINGS_MODULE
          value: lion_app.settings.test
        - name: DJANGO_SECRET_KEY
          value: "DJANGO_SECRET_KEY"

      ports: 
        - containerPort: 8000
728x90
반응형

'Dev. > Kubernetes & Helm' 카테고리의 다른 글

Kubernetes: ReplicaSet 적용하기  (0) 2023.09.26
Kubernetes: nks 에서 서비스 띄우기  (4) 2023.09.26
Kubernetes: run application via nks  (0) 2023.09.24
Kubernetes: ConfigMap  (0) 2023.09.18
Kubernetes: svc - pod 구조 이해  (0) 2023.09.17

댓글