Created
November 13, 2025 06:26
-
-
Save koorukuroo/ad62d3d00b7069f1424c242686ee08b2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # helm.tf | |
| # Helm provider 설정 및 helm_release 리소스 정의 | |
| provider "helm" { | |
| kubernetes { | |
| config_path = "~/.kube/config" | |
| } | |
| } | |
| # Prometheus Stack Helm Release | |
| resource "helm_release" "prometheus" { | |
| name = "prometheus" | |
| repository = "https://prometheus-community.github.io/helm-charts" | |
| chart = "kube-prometheus-stack" | |
| namespace = "monitoring" | |
| create_namespace = true | |
| set { | |
| name = "grafana.adminPassword" | |
| value = "admin123" | |
| } | |
| # Grafana 서비스 타입 설정 (선택사항) | |
| set { | |
| name = "grafana.service.type" | |
| value = "ClusterIP" | |
| } | |
| # Prometheus 리소스 제한 설정 (선택사항) | |
| set { | |
| name = "prometheus.prometheusSpec.resources.requests.memory" | |
| value = "512Mi" | |
| } | |
| set { | |
| name = "prometheus.prometheusSpec.resources.limits.memory" | |
| value = "2Gi" | |
| } | |
| } | |
| # FastAPI Helm Release (기존 my-fastapi-chart 사용) | |
| resource "helm_release" "fastapi" { | |
| name = "my-fastapi-terraform" | |
| chart = "../helm-charts/my-fastapi-chart" | |
| namespace = "apps" | |
| create_namespace = true | |
| # values.yaml 오버라이드 | |
| set { | |
| name = "replicaCount" | |
| value = "3" | |
| } | |
| set { | |
| name = "image.tag" | |
| value = "python3.11-slim" | |
| } | |
| set { | |
| name = "config.greeting" | |
| value = "Hello from Terraform Helm!" | |
| } | |
| set { | |
| name = "config.environment" | |
| value = "terraform" | |
| } | |
| # 리소스 설정 | |
| set { | |
| name = "resources.requests.cpu" | |
| value = "100m" | |
| } | |
| set { | |
| name = "resources.requests.memory" | |
| value = "256Mi" | |
| } | |
| set { | |
| name = "resources.limits.cpu" | |
| value = "500m" | |
| } | |
| set { | |
| name = "resources.limits.memory" | |
| value = "512Mi" | |
| } | |
| # Ingress 설정 | |
| set { | |
| name = "ingress.enabled" | |
| value = "true" | |
| } | |
| set { | |
| name = "ingress.host" | |
| value = "fastapi-terraform.local" | |
| } | |
| # HPA 활성화 (선택사항) | |
| set { | |
| name = "autoscaling.enabled" | |
| value = "false" | |
| } | |
| depends_on = [helm_release.prometheus] | |
| } | |
| # ============================================ | |
| # Local Chart 예시: Day 3의 my-fastapi-chart 활용 | |
| # ============================================ | |
| # Local Chart - 간단한 버전 (Ingress 없이) | |
| resource "helm_release" "fastapi_local" { | |
| name = "fastapi-app" | |
| chart = "../helm-charts/my-fastapi-chart" | |
| namespace = "apps" | |
| create_namespace = true | |
| set { | |
| name = "replicaCount" | |
| value = "2" | |
| } | |
| set { | |
| name = "ingress.enabled" | |
| value = "false" | |
| } | |
| set { | |
| name = "config.greeting" | |
| value = "Hello from Local Chart!" | |
| } | |
| set { | |
| name = "config.environment" | |
| value = "local-chart" | |
| } | |
| # 리소스 제한 | |
| set { | |
| name = "resources.requests.cpu" | |
| value = "100m" | |
| } | |
| set { | |
| name = "resources.requests.memory" | |
| value = "128Mi" | |
| } | |
| set { | |
| name = "resources.limits.cpu" | |
| value = "200m" | |
| } | |
| set { | |
| name = "resources.limits.memory" | |
| value = "256Mi" | |
| } | |
| } | |
| # Output으로 배포된 정보 확인 | |
| output "prometheus_status" { | |
| value = { | |
| name = helm_release.prometheus.name | |
| namespace = helm_release.prometheus.namespace | |
| chart = helm_release.prometheus.chart | |
| version = helm_release.prometheus.version | |
| } | |
| description = "Prometheus Helm Release 정보" | |
| } | |
| output "fastapi_status" { | |
| value = { | |
| name = helm_release.fastapi.name | |
| namespace = helm_release.fastapi.namespace | |
| chart = helm_release.fastapi.chart | |
| } | |
| description = "FastAPI Helm Release 정보" | |
| } | |
| output "fastapi_local_status" { | |
| value = { | |
| name = helm_release.fastapi_local.name | |
| namespace = helm_release.fastapi_local.namespace | |
| chart = helm_release.fastapi_local.chart | |
| } | |
| description = "FastAPI Local Chart Release 정보" | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment