brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jul 29. 2024

NCP 21탄-6. 테라폼-2024-07


목표

테라폼으로 네이버 네트워크와 쿠버네티스를 생성해 보자. 



<1> 테라폼으로 생성하려는 네이버 네트워크 구성도

<2> 네이버 클라우드 네트워크와 쿠버네티스 생성을 위한 테라폼 설치

<3> 테라폼으로 쿠버네티스 생성

<4> 참고 - 테라폼 쿠버네티스 원본 소스 




<1> 테라폼으로 생성하려는 네이버 네트워크 구성도






<2> 네이버 클라우드 네트워크와 쿠버네티스 생성을 위한 테라폼 설치



참고 자료

https://brunch.co.kr/@topasvga/3819



0

작업 순서 - 7가지 설정

Pub1 서브넷에 로키나 우분트로 테러폼 설치된 명령서버 1대 생성-agame-web02-dev

Access-key , Secret-key 생성 

ncloud cli 설치

권한 설정 ncloud configure   

권한 확인 ncloud server getRegionList

테라폼 설치

kubectl 설치



1

access-key , secret-key를 알아야 한다.


이용관리 > 마이 페이지 > 계정 관리

my page > 인증키 관리에서 확인할 수 있다.



2

# ncloud CLI 다운로드


wget https://www.ncloud.com/api/support/download/files/cli/CLI_1.1.20_20240620.zip

unzip CLI_1.1.20_20240620.zip

cd CLI_1.1.20_20240620/

cd cli_linux/

cp ncloud /usr/bin/

ncloud help


최신버전

https://cli.ncloud-docs.com/docs/guide-clichange




3

# ncloud 권한 설정 - Access-key , Secret-key 입력


ncloud configure



# 리전에 서버 리스트 확인하기 

ncloud server getRegionList



# 참고


ncloud server getRegionList 오류시  

# 아래 경로에서 실행해야 한다.


[root@agame-web01-dev ~]# ncloud server getRegionList

/usr/bin/ncloud: line 2: ./jre8/bin/java: No such file or directory


cd /root/CLI_1.1.20_20240620/cli_linux

ncloud server getRegionList






4

테라폼 설치?

로키 리눅스의 경우 - 아마존 리눅스 버전 설치하면 동작한다.

Linux - Amazon Linux 


cd

sudo yum install -y yum-utils shadow-utils

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo

sudo yum -y install terraform

terraform -version



5

# 테라폼으로 쿠버네티스 생성




# 쿠버네티스 사용을 위한 인증 =  ncp-iam 설치


curl -o ncp-iam-authenticator -L https://github.com/NaverCloudPlatform/ncp-iam-authenticator/releases/latest/download/ncp-iam-authenticator_linux_amd64


chmod +x ./ncp-iam-authenticator


mkdir -p $HOME/bin && cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator && 

export PATH=$PATH:$HOME/bin


echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

ncp-iam-authenticator help


매뉴얼

https://guide.ncloud-docs.com/docs/k8s-iam-auth-ncp-iam-authenticator




cd

ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid   b01xxxxxxxxxx --output kubeconfig.yaml


-clusterUuid는 콘솔에서 확인하자.  쿠버네티스 클러스터 UUID이다.




6

쿠버네티스 API에 명령을 내리는 kubectl 명령어 설치


curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

kubectl version




7

# alials 단축 명령어


vi  ~/.bash_profile  


# 맨 아래줄에 아래 내용 추가

alias k='kubectl --kubeconfig="/root/kubeconfig.yaml"'

alias kw='watch -d kubectl get deploy,svc,pods --kubeconfig="/root/kubeconfig.yaml"'



source ~/.bash_profile

k get nodes


[root@agame-web01-dev ~]# k get nodes

NAME                   STATUS   ROLES    AGE   VERSION

agame-dev-np1-w-5e0j   Ready    <none>   77m   v1.28.10



# 새 터미널에서 모니터링

kw



참고

7가지 설치 매뉴얼

https://brunch.co.kr/@topasvga/3941





<3> 테라폼으로 쿠버네티스 생성


1

TF 소스 다운로드하여 쿠버네티스 클러스터 생성


mkdir tf-nks

cd tf-nks



2

TF 소스 다운로드  - 일부 개선 된 버전



만들어진 쿠버네티스 클러스터



만들어진 네트워크 서브넷




3

3개 tf파일 만든다.

vi main.tf 

variables.tf  

versions.tf



4

# access-key. secret-key  수정

# 버전 1.27 -> 1.28로 변경


vi variables.tf  




5

테라폼으로 네이버 클라우드 네트워크와 쿠버네티스 생성해 보자


아래 3 과정을 거친다.

terraform init

terraform plan

terraform apply -auto-approve



6

#  30분 후 NKS 클러스터와 노드풀이 생성된다.


ncloud_nks_cluster.cluster: Still creating... [16m30s elapsed]

ncloud_nks_cluster.cluster: Still creating... [16m40s elapsed]

ncloud_nks_cluster.cluster: Still creating... [16m50s elapsed]

ncloud_nks_cluster.cluster: Still creating... [17m0s elapsed]

ncloud_nks_cluster.cluster: Creation complete after 17m7s [id=8153719e-345f-4adc-bf95-5bcf80e56e7b]

ncloud_nks_node_pool.node_pool: Creating...

ncloud_nks_node_pool.node_pool: Still creating... [10s elapsed]

ncloud_nks_node_pool.node_pool: Still creating... [20s elapsed]

ncloud_nks_node_pool.node_pool: Still creating... [30s elapsed]

ncloud_nks_node_pool.node_pool: Still creating... [40s elapsed]


ncloud_nks_node_pool.node_pool: Still creating... [9m31s elapsed]

ncloud_nks_node_pool.node_pool: Still creating... [9m41s elapsed]

ncloud_nks_node_pool.node_pool: Still creating... [9m51s elapsed]

ncloud_nks_node_pool.node_pool: Creation complete after 9m59s [id=8153719e-345f-4adc-bf95-5bcf80e56e7b:pool1]

Apply complete! Resources: 7 added, 0 changed, 0 destroyed.

[root@agame-web01-dev tf-nks]#




# 타이머

https://vclock.kr/timer/#countdown=00:10:00&enabled=0&seconds=0&sound=xylophone&loop=1



7


생성된 네트워크


생성된 클러스터




8

모니터링


watch -d kubectl get nodes --kubeconfig=/root/kubeconfig.yaml


k describe node node2-w-5ek0

k describe node agame-dev-np1-w-5e0j


kw


k scale deployment deployment-2048  --replicas=2









<4> 참고 - 테라폼 쿠버네티스 원본 소스 



1

cd

wget  https://github.com/NaverCloudPlatform/terraform-provider-ncloud/archive/refs/heads/master.zip

unzip master.zip



cd /root/terraform-provider-ncloud-main/examples/nks



2

#  원본 소스로 트러블 슈팅해서 TF파일 완성하기 




3


https://brunch.co.kr/@topasvga/3819





4

# 참고자료  = 테라폼 시작하기 - 네트워크부터 만들어보자 (선택) , 기초 공부


https://brunch.co.kr/@topasvga/3594




5

https://brunch.co.kr/@topasvga/3944




감사합니다.



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari