gpt4 book ai didi

kubernetes - 如何使用 Terraform 通过 YAML 部署 Kubernetes 服务?

转载 作者:行者123 更新时间:2023-12-05 02:47:03 24 4
gpt4 key购买 nike

我正在学习 Kubernetes,我的目标是部署 Kubernetes 但通过 terraform ( Kubernetes provider ) 使用 Yaml 文件。让我用一个例子来说明:

作为per我知道我可以将 ConfigMap 作为资源,例如:

resource "kubernetes_config_map" "config" {
metadata {
namespace = "metallb_system"
name = "config"
}
data {
config = "${file(${path.module}/config.yml)}"
}
}

现在我想部署一个服务,在 HCL 中看起来像这样:

resource "kubernetes_service" "nginx" {

metadata {
name = "nginx-example-bla"
}
spec {
selector = {
App = kubernetes_pod.airflow.metadata[0].labels.App
}
port {
port = 80
target_port = 8080
}

type = "LoadBalancer"
}
}

但我想使用 yaml 而不是 HCL。

所以(假设),我希望能够做类似的事情:

resource "kubernetes_service" "nginx" {
file = kubernetes_config_map.config # Not sure if ConfigMap is the right usage here but I want to be able to deploy a service through Yaml
}

最佳答案

Terraform 仅跟踪使用 HCL 添加的资源,使用 file() 仅添加内容。因此,如果您希望 terraform 管理您的 k8s 资源(检测这些资源的更改或删除),您必须坚持这一点。

如果您只想使用 terraform 部署 YAML 文件,您可以使用“null_resource”运行命令:

resource "null_resource" "deploy-yaml" {

provisioner "local-exec" {
command = "kubectl apply -f xxx.yaml"
}
}

如果您这样做,请记住,terraform 现在没有任何变化检测。因此,如果 YAML 发生变化,terraform 并不知道。您必须通过快速而肮脏地更改资源名称或使用一些不断变化的值(例如 random_uuid)来重新运行脚本来触发它。

关于kubernetes - 如何使用 Terraform 通过 YAML 部署 Kubernetes 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65212368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com