네이버클라우드 Kubernetes (NKS) subaccount iam 인증 kubeconfig 생성
네이버클라우드에서 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 명령을 수행했을 때 결과가 조회되어야 한다.
$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
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"'