Условно удалить блок

Следуя стандартному де-факто способу условного добавления и удаления блоков (1, 2, 3), я столкнулся с трудностями при создании плана, когда блок должен быть удален.

У меня есть следующая конфигурация tf. Обратите вниманиеdynamic блок:

provider "kubernetes" {}

variable secret {
  type = string
}

resource "kubernetes_deployment" "sample-deployment" {
  metadata {
    name = "sample-deployment"

    labels = {
      app = "api"
    }
  }

  spec {
    selector {
      match_labels = {
        app = "sample"
      }
    }

    template {
      metadata {
        labels = {
          app = "sample"
        }
      }

      spec {
        dynamic image_pull_secrets {
          for_each = compact([var.secret])

          content {
            name = var.secret
          }
        }

        container {
          name  = "httpenv"
          image = "jpetazzo/httpenv:latest"
        }
      }
    }
  }
}

Затем я запускаю 3 команды, одну за другой:

  1. Изначально создайте ресурс:

    terraform apply -var secret=
    

    Развертывание создано, и image_pull_secret нет в разнице.

  2. Установите секрет и обновите ресурс:

    terraform apply -var secret=my-secret
    

    Разница для обновления содержит:

    + image_pull_secrets {
        + name = "my-secret"
      }
    
  3. Удалите секрет и снова обновите ресурс:

    terraform apply -var secret=
    

    Вывод пустой:

    Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
    

Ясно, что я что-то упускаю, иначе я бы подумал, что эта проблема уже поднялась бы. Что мне не хватает?

Я использую версию terraform: v0.12.16.

Обновить.

  1. После запуска:

    env TF_LOG=TRACE TF_LOG_PATH=logs.txt terraform apply -var secret=
    

    Я заметил это в logs.txt:

    2019/12/01 12:17:34 [WARN] Provider "kubernetes" produced an invalid plan for kubernetes_deployment.sample-deployment, but we are tolerating it because it is using the legacy plugin SDK.
        The following problems may be the cause of any confusing errors from downstream operations:
          - .spec[0].template[0].spec[0].image_pull_secrets: block count in plan (1) disagrees with count in config (0)
          - .spec[0].template[0].spec[0].container[0].resources: block count in plan (1) disagrees with count in config (0)
          - .spec[0].strategy: block count in plan (1) disagrees with count in config (0)
    

    Может ли это быть связано с проблемой, с которой я столкнулся?

  2. выглядит как части сообщения, в которых упоминается blockисходят из кода терраформирования. Таким образом, проблема, которую я вижу, не должна быть строго связана с поставщиком кубернетов. Или это?

0 ответов

Другие вопросы по тегам