안녕하세요 ManVSCloud 김수현입니다.
오늘 포스팅은 네이버 클라우드 플랫폼에서 NKS 클러스터를 생성 후 서버에서 NKS 클러스터로 연결하는 과정을 쉽게 하기위한 스크립트를 공유드리고자 포스팅을 하게 되었습니다.
Download Link
// nks-start https://kr.object.ncloudstorage.com/manvscloud-file/Upload/nks-start // nks-getconfig https://kr.object.ncloudstorage.com/manvscloud-file/Upload/nks-getconfig // nks-view https://kr.object.ncloudstorage.com/manvscloud-file/Upload/nks-view
Functional Description
* nks-start
nks-start 스크립트가 가지고 있는 기능
: kubectl 설치, API KEY 설정, ncp-iam-authenticator 설치, NCP API Signature 생성, 각 클러스터별 UUID 확인, kubeconfig 생성을 위한 사용자로부터 정보 입력 받기, ncp-iam-authenticator create-kubeconfig
– 사용자는 네이버 클라우드 플랫폼 콘솔에서 VPC, Subnet, NAT Gateway, Route table 설정, Kubernetes Services 에서 Cluster 및 Node 생성, NKS로 연결할 Server 생성만 하면 됩니다.
이후 나머지 설정은 따로 가이드를 찾아보지 않아도 nks-start 스크립트에서 모두 안내해줍니다.
* nks-getconfig
nks-getconfig 스크립트가 가지고 있는 기능
: NCP API Signature 생성, 각 클러스터별 UUID 확인, kubeconfig 생성을 위한 사용자로부터 정보 입력 받기, ncp-iam-authenticator create-kubeconfig
– nks-start와 다르게 kubectl이나 ncp-iam-authenticator를 설치하지 않아 미리 설치가 되어있어야합니다. 또한 API KEY 설정하는 기능이 없으므로 이 또한 미리 설정되어야 해당 스크립트가 정상적으로 실행됩니다.
지속적인 클러스터 생성 및 삭제로 인해 kubeconfig 파일 생성이 잦은 경우 사용할 수 있습니다.
* nks-view
nks-view 스크립트가 가지고 있는 기능
: NCP API Signature 생성, 클러스터 전체 정보 확인
– nks-view는 NKS 클러스터 전체 정보를 확인하는 용도입니다. 기본적으로 NCLOUD API KEY가 환경 변수로 미리 설정되어 있어야 사용 가능하며 json 형태로 전체 클러스터를 확인할 수 있어 jq 명령어를 통해 원하는 값만 얻어낼 수 있습니다.
How to use?!
해당 스크립트는 네이버 클라우드 플랫폼에서 CentOS Linux release 7.8.2003 (Core) 를 이용하여 생성 및 테스트 되었습니다.
먼저 해당 스크립트를 사용하기 위해서 jq를 먼저 설치 후 사용합시다.
yum install epel-release -y yum install jq -y
jq 설치가 완료되었다면 아래 [1], [2], [3] 중에 본인의 조건에 해당하는 스크립트를 쉽게 사용할 수 있습니다.
[1] “NKS 처음 써보는데 가이드 보고 하나씩 하기 어렵다 또는 번거롭다.” or “매번 초기 설정하기 너무 귀찮다.” → nks-start
[root@manvscloud-web-pub-kr2 ~]# wget https://kr.object.ncloudstorage.com/manvscloud-file/Upload/nks-start && chmod 700 nks-start [root@manvscloud-web-pub-kr2 ~]# sh nks-start 또는 [root@manvscloud-web-pub-kr2 ~]# ./nks-start
[2] “나는 초기 설정 이미 다했고 그 과정이 따로 안나왔으면 좋겠다.
나는 config 파일만 지속적으로 output할 예정이다.” → nks-getconfig
[root@manvscloud-web-pub-kr2 ~]# wget https://kr.object.ncloudstorage.com/manvscloud-file/Upload/nks-getconfig && chmod 700 nks-getconfig [root@manvscloud-web-pub-kr2 ~]# sh nks-getconfig 또는 [root@manvscloud-web-pub-kr2 ~]# ./nks-getconfig
[3] “나는 초기 설정도 config 파일 추가도 필요없다. 그냥 nks cluster 전체 정보를 보고싶다.”
→ nks-view
[root@manvscloud-web-pub-kr2 ~]# wget https://kr.object.ncloudstorage.com/manvscloud-file/Upload/nks-view && chmod 700 nks-view [root@manvscloud-web-pub-kr2 ~]# sh nks-view 또는 [root@manvscloud-web-pub-kr2 ~]# ./nks-view
📢 [추가 설명]
nks-start에서는 인증키 관련 설정을 도와주겠지만 나머지 getconfig나 view에서는 인증키 설정이되어있어야합니다.
왜냐? 각 스크립트마다 공통적으로 네이버 클라우드의 API를 통해 NKS 클러스터 정보를 가져오는데 여기서 NCLOUD_ACCESS_KEY, NCLOUD_SECRET_KEY가 필요하기 때문입니다.
(생략) . . . ######################################################## # NCP API Signature 생성 # ######################################################## function makeSignature() { nl=$'\\n' TIMESTAMP=$(echo $(($(date +%s%N)/1000000))) ACCESSKEY=$NCLOUD_ACCESS_KEY SECRETKEY=$NCLOUD_SECRET_KEY METHOD="GET" URI="/vnks/v2/clusters" SIG="$METHOD"' '"$URI"${nl} SIG+="$TIMESTAMP"${nl} SIG+="$ACCESSKEY" SIGNATURE=$(echo -n -e "$SIG"|iconv -t utf8 |openssl dgst -sha256 -hmac $SECRETKEY -binary|openssl enc -base64) } makeSignature ######################################################## # 각 클러스터별 UUID 확인 # ######################################################## function getUUID() { kNAME=(`curl -s -X GET "https://nks.apigw.ntruss.com/vnks/v2/clusters" \ -H "accept: application/json" \ -H "x-ncp-iam-access-key: $ACCESSKEY" \ -H "x-ncp-apigw-timestamp: $TIMESTAMP" \ -H "x-ncp-apigw-signature-v2: $SIGNATURE" | jq '.clusters[].name' | tr -d '"'`) . . . (생략)
뿐만 아니라 ncp-iam-authenticator를 이용하여 IAM 인증 및 kubeconfig 생성을 하려면 API 인증키값을 설정해야 합니다.
API 인증키는 [마이 페이지] > [계정 관리] > [인증키 관리] 에서 확인할 수 있습니다.
<참고>
Personal Comments
이후 [IAM 인증 사용자 관리] – IAM 사용자 클러스터에 추가는 아래 링크를 통해 설정할 수 있습니다.
긴 글 읽어주셔서 감사합니다.
