问题标签 [terraform-provider-kubernetes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2462 浏览

kubernetes - 与依赖提供者一起改造

在我的 terraform 基础架构中,我根据参数启动了几个 Kubernetes 集群,然后使用 kubernetes 提供程序将一些标准内容安装到这些 Kubernetes 集群中。

当我更改参数并且不再需要其中一个集群时,terraform 无法将其拆除,因为提供程序和资源都在模块中。但是,我没有看到替代方案,因为我在同一个模块中创建了 kubernetes 集群,并且 kubernetes 对象都是每个 kubernetes 集群。

我能想到的所有解决方案都涉及在我的 terraform 配置中添加一堆样板。我应该考虑从脚本生成我的 terraform 配置吗?


我做了一个 git repo,它准确地显示了我遇到的问题:

https://github.com/bukzor/terraform-gke-k8s-demo

0 投票
1 回答
5323 浏览

yaml - terraform kubernetes 提供程序的多行字符串注释

我想使用 terraform 将大使设置为 Kubernetes 的 API 网关。有几种方法可以配置大使。根据文档,推荐的方法是为每个在集群外路由和公开的服务使用 kubernetes 注释。使用 kubernetes yaml 配置很容易做到这一点:

以建议getambassador.io/config开头的字段值是多行字符串值。|如何使用 terraform HCL 实现相同的目标?

0 投票
3 回答
1252 浏览

kubernetes - 使用 Terraform 管理 GKE 及其部署

我可以terraform使用KubernetesGKE.

然后我设置了提供程序Kubernetes如下:

默认情况下,与用户terraform交互,用户无权创建(例如)部署。因此,当我尝试通过以下方式应用更改时出现此错误:Kubernetesclientterraform

我不知道我现在应该如何进行,我应该如何将此权限授予client用户?

如果将以下字段添加到提供程序,我就可以执行部署,尽管在阅读文档后似乎这些凭据用于HTTP与集群通信,如果通过互联网完成,这是不安全的。

还有其他更好的方法吗?

0 投票
1 回答
537 浏览

terraform - 如何使用 Terraform 的 kubernetes_service 输出 node_port 值?

我正在尝试在我的 Terraform 模板中创建输出。

会产生

我试过"${kubernetes_service.postgres_service.spec}.port"了,但它会产生语法错误。

我也试过"${lookup(kubernetes_service.postgres_service.spec[0], "port")}",但它只能用于平面地图。

我错过了什么吗?这是我对 Terraform 的第一次尝试,它与我习惯的 (CloudFormation) 有很大不同。任何帮助将不胜感激。我只是想在运行应用后将 node_port (30344) 的值输出到屏幕。

我用于 Kubernetes 的 Terraform 文档

0 投票
1 回答
461 浏览

kubernetes - 管理 Kubernetes 清单更改的正确方法是什么?

我使用 terraform 已经有一段时间了,我真的很喜欢它。我还设置了亚特兰蒂斯,以便我的团队可以拥有“GitOps”流程。这是我目前的流程:

  • 在 Terraform 文件中添加或删除资源
  • 将更改推送到 GitHub 并创建拉取请求
  • 亚特兰蒂斯接受变化并制定地形计划
  • PR 获得批准后,亚特兰蒂斯将应用更改

我最近发现自己需要使用 Amazon EKS 设置一些托管 Kubernetes 集群。虽然 Terraform 能够创建大部分基础设施,但在设置一些 k8s 资源时却存在不足(不支持网关或入口,不支持 alpha/beta 功能等)。因此,我一直依赖使用 kubectl 的手动方法:

  • 将资源添加到现有文件或创建新文件
  • 在生成文件中添加一行,在新文件上运行适当的命令(kubectl apply 或 create)
  • 如果我使用的是 helm 图表,请添加一行,helm template然后kubectl apply(我真的不喜欢使用分蘖,而且 helm3 无论如何都摆脱了它)
  • 如果我想删除资源,我手动执行kubectl delete

这个过程感觉远没有我们在 Terraform 中所做的那样干净。有几个关键问题:

  • 没有真正的空运行。使用kubectl --dry-runorkubectl diff并没有真正起作用,它只是一个客户端差异。服务器端差异函数目前处于 alpha 阶段
  • 没有状态文件。如果我从清单中删除内容,我必须记得手动将其从集群中删除。
  • 没有明确的方法来实现 gitops。我看过Weaveworks Flux,但这似乎更适合部署应用程序。
  • makefile 变得越来越复杂。感觉这不是可扩展的。

我应该承认我对 Kubernetes 还很陌生,所以可能会忽略一些明显的东西。

有没有办法让我在 Kubernetes 世界中实现类似于我在 Terraform 中的过程?

0 投票
1 回答
1537 浏览

terraform - 如何从 Kubernetes_secret terraform 资源中获取 data.token

我正在尝试访问Kubernetes_secret data.tokenterraform 中的属性,但我不断收到错误消息

Resource 'data.kubernetes_secret.misp_whitelist_secret' does not have attribute 'data.token' for variable 'data.kubernetes_secret.misp_whitelist_secret.data.token'

解决这个问题的方法是什么?

我正在尝试访问 terraform google_cloud_function 资源中的 data.token

0 投票
2 回答
1753 浏览

terraform - Terraform Unsupported block error for selector in kubernetes_service resource

Terraform configuration for heapster to deploy on kubernetes cluster is failing with error:

Resource configuration is:

0 投票
3 回答
1430 浏览

kubernetes - 用于重新部署的 Terraform ConfigMap 哈希

我正在将 Terraform 与 Kubernetes Provider 一起使用。现在在创建ConfigMap时,我希望它们的名称具有内容后缀。通常它是内容的哈希值。

这样,它应该在使用时强制执行部署。

所以我希望它的工作类似于:

有什么方法可以实现自定义功能computeHash吗?或者以另一种方式实现这一目标?

0 投票
1 回答
4295 浏览

kubernetes - Terraform kubernetes_config_map --from-env-file

我正在使用“--from-env-file”选项创建一个 kubernetes configMap,以将文件内容存储为环境变量。

当我如下创建一个 terraform 资源时,创建的 configMap 包含一个文件,而不是环境变量。

如何使用 terraform-kubernetes-provider 资源创建将文件内容作为环境变量的 configMap?

0 投票
2 回答
858 浏览

kubernetes - 使用 terraform 从外部创建的负载均衡器获取 IP

我正在开发一个 terraform 模块来创建 GKE 集群。同一模块调用执行helm install应用程序的配置程序。

helm chart 创建负载均衡器。terraform 模块不知道负载均衡器,因此分配的 IP 地址无法在模块中重用。

问题:

如何使用负载均衡器的 IP 创建 DNS 条目并获取证书?

我认为这不是奇特的用例,但我还没有找到一种体面的方法来实现这一点。