过去一周,我一直在考虑使用Terraform来实现Kubernetes,但似乎存在生命周期问题。
虽然我可以使Kubernetes资源依赖于正在旋转的集群,但是KUBECONFIG
文件并未在terraform apply
的中间进行更新。
kubernete
resource "kubernetes_service" "example" {
...
depends_on = ["digitalocean_kubernetes_cluster.example"]
}
resource "digitalocean_kubernetes_cluster" "example" {
name = "example"
region = "${var.region}"
version = "1.12.1-do.2"
node_pool {
name = "woker-pool"
size = "s-1vcpu-2gb"
node_count = 1
}
provisioner "local-exec" {
command = "sh ./get-kubeconfig.sh" // gets KUBECONFIG file from digitalocean API.
environment = {
digitalocean_kubernetes_cluster_id = "${digitalocean_kubernetes_cluster.k8s.id}"
digitalocean_kubernetes_cluster_name = "${digitalocean_kubernetes_cluster.k8s.name}"
digitalocean_api_token = "${var.digitalocean_token}"
}
}
虽然我可以使用API下拉CONFIG文件,但是terraform不会使用此文件,因为terraform plan
已经在运行
我已经看到一些使用三元运算符(resource ? 1 : 0
)的示例,但是除了count
-target
创建的集群的解决方法
理想情况下,我想用一个terraform仓库创建它。
答案 0 :(得分:0)
事实证明,Vimeo
资源具有可以像这样传递给digitalocean_kubernetes_cluster
的属性:
provider "kubernetes" {}
这将导致一个提供者依赖于另一个提供者,并采取相应的行动。