애플리케이션을 위한 Namespace를 생성합니다.
resource "kubernetes_namespace" "app" {
metadata {
name = "my-app"
}
}
클러스터 리소스 및 서비스의 모니터링을 위한 monitoring namespace를 생성합니다.
resource "kubernetes_namespace" "monitoring" {
metadata {
name = "monitoring"
}
}
데이터베이스 자격증명을 안전히 관리합니다.
resource "kubernetes_secret" "db_credentials" {
metadata {
name = "db-credentials"
namespace = kubernetes_namespace.app.metadata[0].name
}
data = {
password = var.db_password
database-url = "postgresql://postgres:${var.db_password}@postgresql:5432/apidb"
}
}
PostgreSQL과 API Server를 Helm Chart를 통해 배포합니다.
resource "helm_release" "postgresql" {
name = "postgresql"
namespace = kubernetes_namespace.app.metadata[0].name
chart = "../helm/postgresql"
}
resource "helm_release" "api_server" {
name = "api-server"
namespace = kubernetes_namespace.app.metadata[0].name
chart = "../helm/api-server"
depends_on = [helm_release.postgresql]
}
- Terraform 초기화 및 배포
terraform init
terraform plan
terraform apply
- 배포 확인
kubectl get all -n my-app