Skip to content

Instantly share code, notes, and snippets.

@koorukuroo
Created November 13, 2025 06:18
Show Gist options
  • Select an option

  • Save koorukuroo/0b6c571abb4d96ac804f32f7bac6fa42 to your computer and use it in GitHub Desktop.

Select an option

Save koorukuroo/0b6c571abb4d96ac804f32f7bac6fa42 to your computer and use it in GitHub Desktop.
# 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]
}
# 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 정보"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment