넘겨주는 쪽
module "test" {
...
domains = [
"value1",
"value2"
]
}
받는 쪽 : jsonencode를 사용
resource "kubectl_manifest" "managed_cert" {
yaml_body = <<YAML
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: ${var.name}
namespace: ${var.namespace}
spec:
domains:
${jsonencode(var.domains)}
YAML
}
Terraform state mv정리(resource를 module로 바꿨을뿐인데 왜 destroy하려하는거야!?)
terraform state mv 명령어를 사용
terraform state mv <reesouce type>.<resource name> module.<reesouce type>.<resource name>
# example
terraform state mv google_container_cluster.primary module.cluster.google_container_cluster.primary

values.yaml 파일 가져와서 override시켜주기
resource "helm_release" "velero" {
name = "velero"
namespace = "velero"
repository = "<https://vmware-tanzu.github.io/helm-charts/>"
chart = "velero"
version = "3.1.2"
}
또한 values.yaml 파일에 환경변수를 전달하려면
resource "helm_release" "velero" {
...
values = [templatefile("velero.yaml", {
AWS_ACCESS_KEY_ID = "sensitive value"
AWS_SECRET_ACCESS_KEY = "sensitive value"
})]
}
그리고 values.yaml 파일에는 아래와 같이 명시해주면 됨
secretContents:
cloud: |
[default]
aws_access_key_id=${AWS_ACCESS_KEY_ID}
aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}
kubectl create -f https:~ 와 같은 동작 → 참고
data "http" "nvidia_device_plugin" {
url = "<https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.13.0/nvidia-device-plugin.yml>"
}
resource "kubectl_manifest" "nvidia_device_plugin" {
yaml_body = data.http.nvidia_device_plugin.response_body
}