NAVER Cloud

네이버클라우드 Kubernetes (NKS) subaccount iam 인증 kubeconfig 생성

한크크 2023. 2. 2. 20:20

네이버클라우드에서 Kubernetes 서비스를 sub account 로 접근해야 하는 경우 ncp-iam-authenticator 를 통해 kubeconfig 파일을 생성하고, sub account 에 대한 Configmap 을 생성해 주어야 한다. 

 

kubeconfig.yaml 파일만 가지고 kubectl 명령을 수행할 수 없고, kubectl 명령어를 수행하는 PC 나 서버가 아래 조건을 충족해야 한다. 

 

ncp-iam-authenticator 설치
sub account 의 Access/Secret Key 를 .ncloud/configure 파일에 등록
sub account 사용자에 대한 Configmap 생성
kubectl 은 당연히 설치되어 있어야 함

 

1. ncp-iam-authenticator 설치

아래 링크를 참고하여 kubectl 을 수행할 Device 의 OS 에 맞게 설치한다. 

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

 

ncp-iam-authenticator 설치

 

guide.ncloud-docs.com

설치가 정상적으로 진행되면 아래와 같이 ncp-iam-authenticator 명령을 수행했을 때 결과가 조회되어야 한다. 

$path 관련 에러가 발생하거나 하면 다시 마음을 가다듬고 가이드 문서에 있는 3번부터 수행해보도록 하자.

복붙에만 집중하다보니 .ncloud/configure 파일이 어디에 있는지 모르겠다면, echo $HOME 커맨드 수행 결과로 나오는 디렉토리로 이동하여 찾아보도록 한다. 

ncp-iam-authenticator help
cli written to authenticate with iam in ncloud kubernetes service

Usage:
  ncp-iam-authenticator [command]

Available Commands:
  create-kubeconfig Get Kubeconfig to access kubernetes
  help              Help about any command
  token             Authenticate using SubAccount and get token for Kubernetes
  version           Show the version info of the ncp-iam-authenticator

Flags:
      --config string    config path
  -h, --help             help for ncp-iam-authenticator
      --profile string   profile

Use "ncp-iam-authenticator [command] --help" for more information about a command.

 

2. sub account 의 Access/Secret Key 를 .ncloud/configure 파일에 등록

sub account 의 Access/Secret Key 는 ncloud 콘솔에서 확인할 수 있다. (Root 계정만 포털에서 확인한다.)

만약 Access Key 메뉴가 보이지 않는다면 누군가 sub account 를 생성할 때 API 사용 여부를 체크하지 않았기 때문이다. 

sub account 를 생성해 준 분에게 API 사용 여부를 체크해달라고 요청한 후 다시 해본다. 

 

kubeconfig.yaml 파일을 생성하는 단계라면 굳이 vi 로 .ncloud/configure 에 등록하지 않아도 kubeconfig 파일을 생성하는 과정에 access/secret key 를 물어보기 때문에 복붙만 잘 하면 된다. 

ncp-iam-authenticator create-kubeconfig --region SGN --clusterUuid 03f3e801-xxxx-xxxx-xxxxx-xxxx95b19c6b --output kubeconfig.yaml
Ncloud Access Key Id []: Access Key 입력
Ncloud Secret Access Key []: Secret Key 입력
Ncloud API URL []: https://ncloud.apigw.ntruss.com

위 과정이 정상적으로 완료되었다면 cat ~/.ncloud/configure 명령으로 파일을 열어보면  access key, secret key, api url 정보가 들어간 것을 확인할 수 있다. 

이미 생성된 kubeconfig.yaml 파일을 받았다면, vi ~/.ncloud/configure 파일에 위 이미지와 같이 입력해 주면 된다. 

 

3. Sub account 사용자에 대한 configmap 생성 

아래 사용자 가이드를 참고하여 sub account 에 대한 접근 정보를 configmap 으로 등록해준다. 

https://guide.ncloud-docs.com/docs/k8s-iam-auth-management

 

IAM 인증 사용자 관리

 

guide.ncloud-docs.com

cat <<EOF | kubectl --kubeconfig kubeconfig.yaml apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: ncp-auth 
  namespace: kube-system
data:
  mapSubAccounts: |
    - subAccountIdNo: c570c850-xxxx-xxxx-xxxx-246e96591594 ## subaccount 정보에서 조회 가능
      username: saasking00 ## subaccount ID
      groups:
        - system:masters ## subaccount 에 부여할 그룹 정보
EOF

복수의 sub account 를 등록하는 경우에는 mapSubAccounts 하위에 아래와 같이 입력한다. 

apiVersion: v1
kind: ConfigMap
metadata:
  name: ncp-auth
  namespace: kube-system
data:
  mapSubAccounts: |
    - subAccountIdNo: [id_no]
      username: [user1]
      groups:
        - system:masters 
    - subAccountIdNo: [id_no]
      username: [user2]
      groups:
        - developer

 

이제 sub account 로 kubectl 명령어를 수행하기 위한 준비는 끝났다. 

kubectl 명령어가 정상적으로 수행되는지 확인한다. 에러가 난다면 그것은 아마도.. 어딘가의 오타라던가.. 무언가의 누락이라던가.. 

kubectl get nodes --kubeconfig kubeconfig.yaml

그리고 매번 --kubeconfig kubeconfig.yaml 이런걸 쓰는게 너무 귀찮다면.. 

profile 파일에 alias 를 등록해두면 아주 편해진다. 

cat ~/.bash_profile
alias kubectl='kubectl --kubeconfig="/쿠베/컨피그/파일위치/kubeconfig.yaml"'

 

 

반응형