微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 terraform 中获取 k8s 作业的输出

如何解决如何在 terraform 中获取 k8s 作业的输出

我在 terraform 中使用 kubernetes 提供程序,并在 AWS 上的 EKS 集群上运行 kubernetes 作业。 我想从作业中获取一些输出并将它们存储在我的 terraform 变量(或 AWS 参数存储)中,以便我可以在其他地方的 terraform 文件中使用它们。
我不知道该怎么做。
作业能否将此信息写入文件并将其放回收到的配置映射中?或者 terraform 有没有办法解析 k8s 作业的日志(标准输出)?

这里或多或少是我的 terraform 文件

resource "kubernetes_job" "my_job" {

  Metadata {
    name = "my_job"
    namespace = var.namespace
  }
  spec {
    template {
      Metadata {}
      spec {
       volume {
                name = local.config_name
                config_map {
                            name = kubernetes_config_map.my_job.Metadata[0].name
                            default_mode = "0777"
                           }
                }
             container {
                    name        = "my_container"
                    image       = "123456789012.dkr.ecr.us-east-1.amazonaws.com/my_container:6.4.1.37"
                    command     = ["/bin/bash","/opt/utilities/run_pre_db_script.sh"]
                    working_dir = "/opt/utilities"
                    volume_mount {

                                name =  local.config_name
                                mount_path = "/opt/my_container_mount"
                              }
             }
        restart_policy = "Never"
      }
    }
  }
  timeouts {
    create="5m"
  }
  wait_for_completion = true
}

解决方法

Terraform 无法解析作业生成的日志,更改 configmap 值是不明智的,因为它会在您的配置和生产状态之间产生差异。

我能想到的最佳解决方案是让作业生成动态生成的 tarraform 文件/terraform 参数文件,将它们提交到存储其余 terraform 文件的商店(例如 git 存储库) .

完成后,您可以让下一次 terraform 调用检索作业的结果并将其合并到下一次执行中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。