【发布时间】:2019-02-19 11:49:47
【问题描述】:
Terraform Kubernetes 不允许使用 apiVersion: v1 以外的任何内容。但是我想通过使用null_resource 配置程序来运行kubectl apply -f ... 和kubectl delete -f ...(使用when = "destroy")来解决这个问题。
我已尝试使用 kubernetes 应用 EOF 模式使其工作,但还没有管理它。
这是我到达的地方,但似乎 | 是非法字符。
还希望我可以将 yaml 字符串拉出到一个多行变量中,这样我就不必在 null 资源中重复它了。
resource "null_resource" "res_name" {
provisioner {
command = <<EOF | kubectl apply -f -
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: some-ingress-name
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: subdomain.example.com
http:
paths:
- backend:
serviceName: some-cluster-ip-service
servicePort: 80
}
provisioner {
when = "destroy"
command = <<EOF | kubectl delete -f -
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: some-ingress-name
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: subdomain.example.com
http:
paths:
- backend:
serviceName: some-cluster-ip-service
servicePort: 80
}
}
【问题讨论】:
-
这可能适用于
resource "null_data_source" {}github.com/hashicorp/terraform/issues/…
标签: kubernetes terraform