ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 네이버클라우드 Kubernetes (NKS) subaccount iam 인증 kubeconfig 생성
    NAVER Cloud 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"'

     

     

    반응형

    댓글

Designed by Tistory.