使用 terraform 获取和更新特定字段

fetch and update particular field using terraform

我有一个场景,

如何获取特定字段值并更新特定字段值?

例如: 我正在使用配置有环境变量(endpoint=abc)和replicas=2.[= 的 terraform“kubernetes_deployment”资源部署应用程序12=]

resource "kubernetes_deployment" “app” {
…..….
spec {
  replicas = 2
  template {
    spec {
     ….
      env {
        name  = “ENDPOINT”
        value = “abc”
    }
}

一旦我使用 terraform 脚本部署,另一个脚本可能会更改配置 replicas=5 和环境值(endpoint=xyz

现在我只需要通过 terraform 脚本将副本更新为 20(如果副本 < 20)而不更改环境值(端点=abc)?

resource "kubernetes_deployment" “app” {
…..….
spec {
  replicas = 20       -> only this has to reflect in apply
  template {
    spec {
     ….
      env {
        name  = “ENDPOINT”
        value = “abc”
    }
}

如果副本数 > 20 并且仅更新副本数,我如何获取特定字段(副本)进行比较?

有更多 Terraform 经验的人可以帮助我吗?

在“kubernetes_deployment”资源块内,考虑添加一个生命周期块。使用它来忽略在 Terraform 不知情的情况下对资源属性所做的更改。

向“ignore_changes”提供资源属性列表,Terrform 将在后续运行中忽略该列表。参数是资源中属性的相对地址。可以使用索引符号引用地图和列表元素。

lifecycle {
    ignore_changes = [spec["env"]]
  }

参考:https://www.terraform.io/docs/language/meta-arguments/lifecycle.html#ignore_changes