Devops/Terraform

[테라폼] 테라폼(Terraform) 완전 정복: Alibaba Cloud(Aliyun) 인프라를 Terraform으로 완전 자동화하기: ACK 마스터 - 2

일요일좋아하는사람 2025. 4. 24. 20:12
728x90
반응형

Terraform + Aliyun

들어가며

이전 글에서는 ECS인스턴스에 대한 자동화에 대해 다뤄 보았습니다.

아래 페이지 참고해주세요.

2025.04.24 - [Devops/Terraform] - [테라폼] 테라폼(Terraform) 완전 정복: Alibaba Cloud(Aliyun) 인프라를 Terraform으로 완전 자동화하기 - 1

 

[테라폼] 테라폼(Terraform) 완전 정복: Alibaba Cloud(Aliyun) 인프라를 Terraform으로 완전 자동화하기 - 1

들어가며테라폼이 무엇인지 개념을 잡았고, AWS 인프라를 테라폼으로 만들어 보았습니다. 이번에는 Alibaba Cloud(Aliyun)인프라를 테라폼으로 사용하는 방법을 알려드리려고 합니다.테라폼에 대한

ilikesunday.tistory.com

 

두번째로는, Alibaba Cloud의 컨테이너 서비스인 ACK(Aliyun Container Service for Kubernetes)는 Kubernetes 클러스터의 생성과 관리를 자동화해주는 플랫폼입니다. 이 문서에서는 Terraform을 이용하여 ACK 클러스터를 자동으로 구축하고, 관련 인프라를 코드화하여 관리하는 방법을 소개합니다.

목차

  1. Terraform과 Alibaba Cloud ACK
  2. 프로젝트 구조 설정
  3. ACK 서비스 활성화 및 권한 부여
  4. VPC 및 VSwitch 구성
  5. ACK 클러스터 생성
  6. 노드 풀(Node Pool) 구성
  7. 클러스터 애드온 설치
  8. 마무리 및 참고 자료

1. Terraform과 Alibaba Cloud ACK

Terraform은 HashiCorp에서 개발한 인프라 코드 도구로, 다양한 클라우드 환경을 코드로 관리할 수 있도록 도와줍니다. Alibaba Cloud Provider를 사용하면 다음과 같은 ACK 관련 리소스를 생성할 수 있습니다:

  • alicloud_cs_managed_kubernetes: 관리형 Kubernetes 클러스터
  • alicloud_cs_kubernetes_node_pool: 노드 풀
  • alicloud_cs_kubernetes_addon: 클러스터 애드온
  • alicloud_ack_service: ACK 서비스 활성화

2. 프로젝트 구조 설정

alicloud-ack-terraform/
├── main.tf
├── variables.tf
├── outputs.tf
├── provider.tf
├── terraform.tfvars
├── modules/
│   ├── vpc/
│   ├── ack/
│   ├── node_pool/
│   └── addons/

3. ACK 서비스 활성화 및 권한 부여

provider "alicloud" {
  region = var.region
}

resource "alicloud_ack_service" "default" {
  enable = "On"
}

resource "alicloud_ram_role" "ack_role" {
  name     = "AliyunCSManagedRole"
  document = <<EOF
{
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "Service": ["cs.aliyuncs.com"]
      }
    }
  ],
  "Version": "1"
}
EOF
}

resource "alicloud_ram_role_policy_attachment" "ack_policy" {
  policy_name = "AliyunCSManagedPolicy"
  policy_type = "System"
  role_name   = alicloud_ram_role.ack_role.name
}

4. VPC 및 VSwitch 구성

resource "alicloud_vpc" "main" {
  name       = "ack-vpc"
  cidr_block = "192.168.0.0/16"
}

resource "alicloud_vswitch" "main" {
  name              = "ack-vswitch"
  cidr_block        = "192.168.1.0/24"
  vpc_id            = alicloud_vpc.main.id
  zone_id           = data.alicloud_zones.default.zones[0].id
}

data "alicloud_zones" "default" {
  available_resource_creation = "VSwitch"
}

5. ACK 클러스터 생성

resource "alicloud_cs_managed_kubernetes" "ack_cluster" {
  name                   = "ack-cluster"
  cluster_spec           = "ack.pro.small"
  version                = "1.24.6-aliyun.1"
  service_cidr           = "172.21.0.0/20"
  pod_cidr               = "172.20.0.0/16"
  worker_vswitch_ids     = [alicloud_vswitch.main.id]
  new_nat_gateway        = true
  slb_internet_enabled   = true
  install_cloud_monitor  = true
  tags = {
    Environment = "production"
  }
}

6. 노드 풀(Node Pool) 구성

resource "alicloud_cs_kubernetes_node_pool" "default" {
  name                 = "default-nodepool"
  cluster_id           = alicloud_cs_managed_kubernetes.ack_cluster.id
  vswitch_ids          = [alicloud_vswitch.main.id]
  instance_types       = ["ecs.c6.large"]
  system_disk_category = "cloud_efficiency"
  system_disk_size     = 100
  desired_size         = 3
  auto_scaling         = true
  min_size             = 1
  max_size             = 5
}

7. 클러스터 애드온 설치

resource "alicloud_cs_kubernetes_addon" "terway" {
  cluster_id = alicloud_cs_managed_kubernetes.ack_cluster.id
  name       = "terway-eniip"
  config     = ""
}

8. 마무리 및 참고 자료

Terraform과 Alibaba Cloud ACK를 함께 사용하면 Kubernetes 인프라를 코드로 선언하고 자동화할 수 있습니다. 더욱 복잡한 설정과 애드온, 모니터링 기능을 활용하기 위해 다음 자료를 참고하세요:

728x90
반응형