0. MacOS에서 NKS Cluster 제어
- NKS Cluster에 연결을 할 일이 생겨서 오늘은 이미 생성된 NKS Cluster에 연결하는 글을 올립니다.
- NKS의 Cluster는 Cluster에 직접 접속을 하지 않고 타 콘솔에서 ncp-iam-authenticator로 IAM 인증을 거쳐 Cluster와 연결합니다.
- ncp-iam-authenticator는 MacOS, Linux, Windows를 지원하며 이 글에서는 MacOS 서버를 사용하겠습니다.
1. kubectl 설치
- Kubectl은 클러스터를 제어하는 데 사용되는 CLI로, kubectl, helm 명령을 사용하기 위해 필요합니다.
- MacOS에서 kubectl 설치는 직접 다운로드하여 설치와 Homebrew, Macport 세가지를 지원하며 직접 다운로드와 Homebrew로 설치 해보겠습니다.
1-1. 직접 다운로드하여 설치
1. curl로 최신 버전을 다운로드 합니다.
# Intel
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
# Apple Silicon
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
2. kubctl 바이너리에 실행권한을 추가합니다.
chmod +x ./kubectl
3. kubectl 바이너리를 /usr/local/bin으로 이동시키고 소유자를 root로 변경합니다.
# kubectl 바이너리를 /usr/local/bin/kubectl로 이동
sudo mv ./kubectl /usr/local/bin/kubectl
# kubectl 바이너리의 소유자를 root로 변경
sudo chown root: /usr/local/bin/kubectl
4. 명령어가 잘 작동하는지 버전 확인 명령어를 사용해 봅니다.
kubectl version --client
1-2. Homebrew로 설치
1. Homebrew로 kubectl을 설치할 예정이니 우선 Homebrew를 설치합니다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. Homebrew로 kubectl을 설치합니다.
brew install kubectl
3. kubectl이 제대로 설치되었는지 명령어를 버전이 확인된다면 끝 입니다.
kubectl version --client
2. ncp-iam-authenticator 설치
- NKS는 ncp-iam-authenticator를 통해 IAM 인증을 제공합니다.
- IAM 인증을 통해 kubectl 명령을 사용하려면 ncp-iam-authenticator를 설치하고 이를 인증에 사용하도록 해야합니다.
2-1. 직접 다운로드하여 설치
1. ncp-iam-authenticator를 다운로드하고 파일의 권한을 확인합니다.
curl -o ncp-iam-authenticator -L https://github.com/NaverCloudPlatform/ncp-iam-authenticator/releases/latest/download/ncp-iam-authenticator_darwin_arm64
2. chmod로 실행 권한을 추가해 줍니다.
chmod +x ./ncp-iam-authenticator
3. $HOME/bin/을 생성하고 해당 디렉토리로 ncp-iam-authenticator를 이동, PATH 설정 등을 수행하여 ncp-iam-authenticator를 간편하게 사용할 수 있도록 해줍니다.
mkdir -p $HOME/bin && mv ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator && export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.zshrc
4. 설정이 끝났다면 ncp-iam-authenticator가 제대로 동작하는지 테스트 합니다.
ncp-iam-authenticator help
2-2. Homebrew로 설치
1. kubectl을 설치하며 homebrew는 설치했었으니 바로 ncp-iam-authenticator 설치를 시작하겠습니다.
# tap 명령을 사용하여 NaverCloudPlatform/tap 저장소를 Homebrew에 추가합니다.
brew tap NaverCloudPlatform/tap
# Homebrew를 통해 ncp-iam-authenticator 패키지를 설치합니다.
brew install ncp-iam-authenticator
2. 설치가 끝났다면 ncp-iam-authenticator가 제대로 동작하는지 테스트 합니다.
ncp-iam-authenticator help
3. IAM 인증 kubeconfig 생성
- IAM 인증 kubeconfig 생성은 NKS를 첫 생성하여 연결하는 경우와 연결 후 관리자에게 설정 파일을 받아 사용자가 연결하는 경우를 다뤄보겠습니다.
3-1. kubeconfig 첫 생성의 경우
- 이제 설치된 ncp-iam-authenticator를 통해 IAM 인증이 적용된 kubeconfig를 생성할 차례이지만 우선 API 인증키를 발급 받아야 합니다.
- 발급 받은 인증키로 인증을 받아야 해당 계정의 Cluster를 제어할 수 있습니다.
1. [NCP 홈페이지] -> [마이페이지] -> [인증키 관리]를 클릭합니다.
2. 인증키는 유출될시 위험하기에 2차 인증이 필수 입니다.
3. 신규 API 인증키 생성을 클릭하면 API 인증키가 바로 생성됩니다.
4. Access Key는 바로 확인이 가능하지만 Secret Key는 보기를 눌러여 확인이 가능합니다.
5. 사용자의 홈 디렉토리에 .ncloud 폴더를 만들고 configure 파일을 생성하여 해당 내용을 입력합니다.
mkdir .ncloud && vi .ncloud/configure
[DEFAULT]
ncloud_access_key_id = 발급받은 access_key
ncloud_secret_access_key = 발급받은 secret_key
# 민간존 : https://ncloud.apigw.ntruss.com
# 공공존 : https://ncloud.apigw.gov-ntruss.com
ncloud_api_url = https://ncloud.apigw.ntruss.com
6. 인증 준비가 끝났으니 ncp-iam-authenticator create-kubeconfig 명령을 통해 Cluster에 대한 kubeconfig 파일을 생성합니다.
- 한국 리전을 사용중이니 리전 코드는 KR, Cluster의 UUID는 Kubernetes Service의 Cluster 항목에서 확인이 가능합니다.
ncp-iam-authenticator create-kubeconfig --region <region-code> --clusterUuid <cluster-uuid> --output kubeconfig.yaml
ex)
ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid 445c79f9-17ac-4e71-b44d-87890dcd7809 --output kubeconfig.yaml
7. 생성이 제대로 되었다면 kubeconfig.yaml에서 설정된 정보들을 볼 수 있습니다.
8. 모든 설정이 끝났으니 MacOS에서 명령어로 namespace가 조회되는 것을 확인합니다.
kubectl get namespace
3-2. 관리자에게 kubeconfig를 받은 경우
- kubeconfig 파일과 IAM 인증을 위한 configure 파일을 받아서 연결만 할 경우 입니다.
1. 사용자의 홈 디렉토리에 .ncloud 폴더를 만들고 configure 파일을 생성한 다음 받은 configure 파일의 내용을 입력합니다.
mkdir .ncloud && vi .ncloud/configure
[DEFAULT]
ncloud_access_key_id = 발급받은 access_key
ncloud_secret_access_key = 발급받은 secret_key
# 민간존 : https://ncloud.apigw.ntruss.com
# 공공존 : https://ncloud.apigw.gov-ntruss.com
ncloud_api_url = https://ncloud.apigw.ntruss.com
2. 사용자의 홈 디렉토리에 .kube 폴더를 만들고 config 파일을 생성하고 받은 kubeconfig 파일의 내용을 입력합니다.
mkdir .kube && vi .kube/config
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0123rcWHNrcasdasdasdasdsdasdasd
server: https://12341234-1234-1234-1234-123412341234.kr.vnks.gov-ntruss.com
name: nks_kr_kctg-nks-cluster_12341234-1234-1234-1234-123412341234
contexts:
- context:
cluster: nks_kr_kctg-nks-cluster_12341234-1234-1234-1234-123412341234
user: nks_kr_kctg-nks-cluster_12341234-1234-1234-1234-123412341234
name: nks_kr_kctg-nks-cluster_12341234-1234-1234-1234-123412341234
current-context: nks_kr_kctg-nks-cluster_12341234-1234-1234-1234-123412341234
kind: Config
preferences: {}
users:
- name: nks_kr_kctg-nks-cluster_12341234-1234-1234-1234-123412341234
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
args:
- token
- --clusterUuid
- 12341234-1234-1234-1234-123412341234
- --region
- KR
command: ncp-iam-authenticator
env: null
provideClusterInfo: false
3. 모든 설정이 끝났으니 MacOS에서 명령어로 namespace가 조회되는 것을 확인합니다.
kubectl get namespace