클라우드/Azure-Terraform
Azure terraform provisioning 구현
Hoony.Song
2024. 6. 18. 08:38
반응형
간단하게 aks를 생성하는 provisioning 코드를 구성
RS 그룹에 한 서비스를 통으로 넣어서 관리할 수 있도록 디렉토리 구조를 구성했다
provisoning 코드의 디렉토리 구조
main
├── common
│ ├── manifests
│ │ ├── config_map
│ │ ├── helm
│ │ ├── kube_list
│ │ └── kube_yaml
│ ├── user_templates
│ └── wrapper
└── provision
├── RS1 ( 실제 프로비저닝 위치)
└── RS2
리소스 그룹 목록
RS1
├── aks_cluster.tf
├── network.tf
├── output.tf
├── provider.tf
├── resource_group.tf
└── variables.tf
global.tfvars
location = "koreacentral"
- 실제 작업디렉토리의 전역변수 말고도 global 전역 변수를 만들었다
terraform.tfvars
resource_group_name = "test-hoony-rs"
resource_tag= {
resource_group_name = "test-hoony-rs"
Project = "edu"
}
variables.tf
variable "location" {}
variable "resource_tag" {}
variable "resource_group_name" {}
provider.tf
provider "azurerm" {
features {}
}
terraform {
backend "local" {}
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.99.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
}
}
}
data "azurerm_kubernetes_cluster" "aks" {
name = module.aks_kubernetes_cluster.name
resource_group_name = module.resource_group.resource_group_name
depends_on = [
module.resource_group,
module.aks_kubernetes_cluster
]
}
provider "kubernetes" {
config_path = "~/.kube/config"
host = data.azurerm_kubernetes_cluster.aks.kube_config[0].host
client_certificate = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].client_certificate)
client_key = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].client_key)
cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].cluster_ca_certificate)
}
- backend 는 따로 구성하지 않았다
resource_group.tf
module "resource_group" {
source = "../../../modules/base/resource_group"
name = var.resource_group_name
location = var.location
tags = var.resource_tag
}
aks_cluster.tf
locals {
dns_prefix = "test-hoony-dns"
node_pool_name = "hoonypool2"
cluster_name = "test-hoony-3"
default_node_pool_name = "hoonypool"
}
module "aks_kubernetes_cluster" {
source = "../../../modules/container/kubernetes_cluster"
dns_prefix = local.dns_prefix
name = local.cluster_name
location = var.location
resource_group_name = var.resource_group_name
default_nodepool_name = local.default_node_pool_name
enable_auto_scaling = true
vm_size = "Standard_DS2_v2"
max_count = 4
min_count = 2
depends_on = [
module.resource_group
]
}
# module "node_pool" {
# source = "../../../modules/container/kubernetes_node_pool"
# name = local.node_pool_name
# cluster_id = module.aks_kubernetes_cluster.id
# max_count = 2
# min_count = 1
# vm_size = "Standard_DS2_v2"
# enable_auto_scaling = true
# }
이렇게 aks를 구성해 봤다
잘 생성 된다
반응형