Browsing Tag

iam

NCLOUD

[NCLOUD] NKS(Kubernetes Service) 시작, 쉽게 하자

안녕하세요 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 사용자 클러스터에 추가는 아래 링크를 통해 설정할 수 있습니다.

긴 글 읽어주셔서 감사합니다.