728x90
가장 편한 방법은 코드로 인프라를 관리하는 것입니다. 그 중에 하나가 이 terraform이 됩니다.
리눅스 서버를 하나 생성해둡니다.
이 서버가 일종의 명령 서버가 될 것입니다.
provider.tf 파일을 만듭니다. 네이버 클라우드 프로바이더가 되겠습니다.
그 다음은 테라폼을 초기화해줍니다.
문제는 이 terraform 명령어가 바로 안 통한다는 겁니다. 이를 어디서든 접근 가능하도록 만들어줘야하는데, 이 과정에서 간단한 작업이 필요합니다.
ncloud는 repository를 설정하는 방식으로 설치하면 잘 통하지 않습니다.
그래서 파일 자체를 zip으로 다운로드 받고, 그 압축 파일을 해제한 다음에, 그것을 특정 경로로 이동시키면 됩니다. 아래 링크를 참고했습니다.
[이렇게 사용하세요!] 네이버 클라우드 플랫폼에서 terraform 활용[1] : ansible 연동 : 네이버 블로그
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/
/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
이제 바로 terraform plan으로 작업 내용을 검토합니다.
아직 에러가 뜨네요. 잠시 확인해보고 보완해서 올리겠습니다.
'IaC > Terraform' 카테고리의 다른 글
[Terraform] Ncloud Server 생성하기 (2) | 2024.11.15 |
---|---|
[Terraform] 네이버클라우드 서버 만들기 계획 (0) | 2024.11.12 |
[Terraform] 네이버클라우드와 테라폼 이야기(1) (0) | 2024.11.10 |