brunch

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

by Master Seo


목표

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



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

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

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

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




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


슬라이드1.JPG



슬라이드2.JPG



<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 소스 다운로드 - 일부 개선 된 버전



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

150 saple-cl.png



만들어진 네트워크 서브넷

160 subnet.png




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


생성된 네트워크

160 subnet.png


생성된 클러스터

150 saple-cl.png




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파일 완성하기


슬라이드1.JPG



3


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





4

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


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




5

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




감사합니다.



keyword
매거진의 이전글NCP 21탄-5. Amazon EKS -2024-07