Cloud/NCP

K8s Service 인증

uuuhhh 2022. 11. 13. 01:02
  • NCP K8s Service는 ncp-iam-authenticator를 통해서 IAM 인증을 제공한다.
  • IAM 인증을 통해서 kubectl을 사용하기 위해
    1. ncp-iam-authenticator를 설치하고
    2. kubectl 설정 파일을 수정하여
  • 이를 인증에 사용하도록 한다.

 

▪︎ ncp-iam-authenticator 설치 (for macOS)


1. Object Storage에서 ncp-iam-authenticator 바이너리를 다운로드

$ curl -o ncp-iam-authenticator <https://kr.object.ncloudstorage.com/nks-download/ncp-iam-authenticator/v1.0.5/darwin/amd64/ncp-iam-authenticator>

 

 

2. 바이너리에 실행 권한 추가

$ chmod +x ./ncp-iam-authenticator

 

 

3. $HOME/bin/ncp-iam-authenticator를 생성하고 $PATH에 추가

$ mkdir -p $HOME/bin && cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator && export PATH=$PATH:$HOME/bin

 

 

4. Shell Profile에 PATH를 추가

  • 나는 zsh 를 쓰고 있으므로 ~
$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.zshrc

 

 

5. ncp-iam-authenticator 바이너리가 정상 동작하는지 테스트

$ ncp-iam-authenticator help

 

▪︎ IAM 인증 kubeconfig 생성


  • 먼저 ncp-iam-authenticator를 사용하기 위해 API 인증키 값을 설정하는 두 가지 방법
    1. OS 환경변수 설정
    2. configure 파일 설정
    • OS 환경변수가 configure 파일보다 우선시 된다 !

 

 

1️⃣ OS 환경변수 확인


  • API 인증키 값 확인한다.
    • 마이페이지 → 계정 관리 → 인증키 관리

 

  • 확인한 API 인증키 값을 OS 환경변수로 설정한다.
$ export NCLOUD_ACCESS_KEY=[ACCESS_KEY_ID]
$ export NCLOUD_SECRET_KEY=[SECRET_ACCESS_KEY]
$ export NCLOUD_API_GW=https://ncloud.apigw.ntruss.com

 

  • 전체 환경변수 보기
$ printenv
  • 특정 환경변수 보기
$ echo $[value_name]
  • 환경변수 삭제
$ unset [value_name]

 

 

2️⃣ configure 파일 설정


  • 사용자 로컬 홈 디렉토리의 .ncloud 폴더에 configure 파일 생성 및 설정
    • 없으면 만든다 !
$ cat ~/.ncloud/configure
[DEFAULT]
ncloud_access_key_id = [ACCESS_KEY_ID]
ncloud_secret_access_key = [SECRET_ACCESS_KEY]
ncloud_api_url = <https://ncloud.apigw.ntruss.com>

 

 

➡️ kubeconfig 생성


  • ncp-iam-authenticator create-kubeconfig 으로 클러스터의 kubeconfig 생성한다.
$ ncp-iam-authenticator create-kubeconfig --region <region-code> --clusterUuid <cluster-uuid> --output kubeconfig.yaml
# 예시
$ ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid 1234567890 --output kubeconfig.yaml
  • region-code
    • 클러스터의 리전 코드
    • e.g) KR, SGN
  • cluster-uuid
    • 클러스터의 UUID
  • --output
    • kubeconfig 파일이 저장될 path
    • 입력 안할 시 ./kubeconfig-<cluster-uuid>.yaml path로 파일 저장
  • kubeconfig.yaml 파일로 kubectl 명령 테스트 성공 !

 

 

⏸ kubectl 명령어 단축


  • 현재 kubectl 명령어를 사용하기 위해선 kubeconfig 환경 설정 파일까지 입력해야함
  • 너무 길어서 불편,,

 

  • 위에서 열심히 만들었던 kubeconfig.yaml 파일을 .kube/config 로 이름을 바꿔 이동하거나 복사한다.

 

  • 잘 동작하는 것을 확인할 수 있다 !