IaC/Terraform

[Terraform] 테라폼과 네이버클라우드 연동해보기

graph-dev 2024. 11. 13. 20:38
728x90

terraform 로고

 

 

가장 편한 방법은 코드로 인프라를 관리하는 것입니다. 그 중에 하나가 이 terraform이 됩니다.

 

 

 

리눅스 서버를 하나 생성해둡니다.

 

이 서버가 일종의 명령 서버가 될 것입니다.

 

provider.tf 파일을 만듭니다. 네이버 클라우드 프로바이더가 되겠습니다.

provider.tf 파일

 

 

그 다음은 테라폼을 초기화해줍니다.

 

문제는 이 terraform 명령어가 바로 안 통한다는 겁니다. 이를 어디서든 접근 가능하도록 만들어줘야하는데, 이 과정에서 간단한 작업이 필요합니다.

 

ncloud는 repository를 설정하는 방식으로 설치하면 잘 통하지 않습니다.

 

그래서 파일 자체를 zip으로 다운로드 받고, 그 압축 파일을 해제한 다음에, 그것을 특정 경로로 이동시키면 됩니다. 아래 링크를 참고했습니다.

[이렇게 사용하세요!] 네이버 클라우드 플랫폼에서 terraform 활용[1] : ansible 연동 : 네이버 블로그

 

[이렇게 사용하세요!] 네이버 클라우드 플랫폼에서 terraform 활용[1] : ansible 연동

네이버 클라우드 플랫폼 terraform(테라폼) 활용하기: ansible 연동 ※본 콘텐츠는 네이버 클라우드 플랫폼...

blog.naver.com

 


  
wget https://releases.hashicorp.com/terraform/0.13.0/terraform_0.13.0_linux_amd64.zip
unzip terraform_0.13.0_linux_amd64.zip
mv terraform /usr/local/bin/

 

wget으로 받아보기

 

이동하지 않으면 이렇게 에러가 뜹니다.

 

/usr/local/bin으로 저는 이동시켰습니다.

 

 

이렇게 해보니 terraform 명령어가 작동합니다.

 

이제 초기화를 수행합니다.


  
terraform init

초기화 수행

 

 

이제 main.tf 파일을 만듭니다.

 


  
variable "zone" {
type = string
default = "KR-1"
}
resource "ncloud_vpc" "kubernetes_vpc" {
name = "graph-vpc"
ipv4_cidr_block = "10.0.0.0/16"
}
resource "ncloud_subnet" "private_node_subnet" {
vpc_no = ncloud_vpc.kubernetes_vpc.id
subnet = "10.0.1.0/24"
zone = var.zone
network_acl_no = ncloud_vpc.kubernetes_vpc.default_network_acl_no
subnet_type = "PRIVATE"
name = "private-node-subnet"
usage_type = "GEN"
}
resource "ncloud_subnet" "private_lb_subnet" {
vpc_no = ncloud_vpc.kubernetes_vpc.id
subnet = "10.0.11.0/24"
zone = var.zone
network_acl_no = ncloud_vpc.kubernetes_vpc.default_network_acl_no
subnet_type = "PRIVATE"
name = "private-lb-subnet"
usage_type = "LOADB"
}
resource "ncloud_subnet" "public_lb_subnet" {
vpc_no = ncloud_vpc.kubernetes_vpc.id
subnet = "10.0.12.0/24"
zone = var.zone
network_acl_no = ncloud_vpc.kubernetes_vpc.default_network_acl_no
subnet_type = "PUBLIC"
name = "public-lb-subnet"
usage_type = "LOADB"
}
resource "ncloud_subnet" "nat_subnet" {
vpc_no = ncloud_vpc.kubernetes_vpc.id
subnet = "10.0.3.0/24"
zone = var.zone
network_acl_no = ncloud_vpc.kubernetes_vpc.default_network_acl_no
subnet_type = "PUBLIC"
name = "nat-subnet"
usage_type = "NATGW"
}
resource "ncloud_nat_gateway" "kubernetes_nat_gw" {
vpc_no = ncloud_vpc.kubernetes_vpc.id
subnet_no = ncloud_subnet.nat_subnet.id
zone = var.zone
name = "kubernetes-nat-gw"
}
resource "ncloud_route_table" "kubernetes_route_table" {
vpc_no = ncloud_vpc.kubernetes_vpc.id
supported_subnet_type = "PRIVATE"
name = "kubernetes-route-table"
}
resource "ncloud_route" "kubernetes_route" {
route_table_no = ncloud_route_table.kubernetes_route_table.id
destination_cidr_block = "0.0.0.0/0"
target_type = "NATGW"
target_name = ncloud_nat_gateway.kubernetes_nat_gw.name
target_no = ncloud_nat_gateway.kubernetes_nat_gw.id
}
resource "ncloud_route_table_association" "kubernetes_route_table_subnet" {
route_table_no = ncloud_route_table.kubernetes_route_table.id
subnet_no = ncloud_subnet.private_node_subnet.id
}
resource "ncloud_login_key" "kubernetes_loginkey" {
key_name = "kubernetes-loginkey"
}
resource "ncloud_nks_cluster" "terraform_cluster" {
cluster_type = "SVR.VNKS.STAND.C002.M008.NET.SSD.B050.G002"
login_key_name = ncloud_login_key.kubernetes_loginkey.key_name
name = "terraform-cluster"
lb_private_subnet_no = ncloud_subnet.private_lb_subnet.id
lb_public_subnet_no = ncloud_subnet.public_lb_subnet.id
subnet_no_list = [ncloud_subnet.private_node_subnet.id]
vpc_no = ncloud_vpc.kubernetes_vpc.id
zone = var.zone
}
resource "ncloud_nks_node_pool" "node_pool" {
cluster_uuid = ncloud_nks_cluster.terraform_cluster.uuid
node_pool_name = "terraform-node-1"
node_count = 2
product_code = "SVR.VSVR.STAND.C002.M008.NET.SSD.B050.G002"
subnet_no_list = [ncloud_subnet.private_node_subnet.id]
}

 

 

이 파일은 아래 링크를 통해 가져왔습니다.

테라폼을 통해 Ncloud Kubernetes Service (NKS) 클러스터 구축하기 | by NAVER Cloud | NAVER Cloud | Medium

 

테라폼을 통해 Ncloud Kubernetes Service 클러스터 구축하기

네이버 클라우드 플랫폼에서 테라폼(Terraform)을 활용하여 쿠버네티스 클러스터(Kubernetes Cluster)를 생성 및 사용하는 과정을 소개 드립니다.

medium.com

 

 

이제 바로 terraform plan으로 작업 내용을 검토합니다.

 

아직 에러가 뜨네요. 잠시 확인해보고 보완해서 올리겠습니다.