问题标签 [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.
kubernetes - 与依赖提供者一起改造
在我的 terraform 基础架构中,我根据参数启动了几个 Kubernetes 集群,然后使用 kubernetes 提供程序将一些标准内容安装到这些 Kubernetes 集群中。
当我更改参数并且不再需要其中一个集群时,terraform 无法将其拆除,因为提供程序和资源都在模块中。但是,我没有看到替代方案,因为我在同一个模块中创建了 kubernetes 集群,并且 kubernetes 对象都是每个 kubernetes 集群。
我能想到的所有解决方案都涉及在我的 terraform 配置中添加一堆样板。我应该考虑从脚本生成我的 terraform 配置吗?
我做了一个 git repo,它准确地显示了我遇到的问题:
kubernetes - 使用 Terraform 管理 GKE 及其部署
我可以terraform
使用Kubernetes
在GKE
.
然后我设置了提供程序Kubernetes
如下:
默认情况下,与用户terraform
交互,用户无权创建(例如)部署。因此,当我尝试通过以下方式应用更改时出现此错误:Kubernetes
client
terraform
我不知道我现在应该如何进行,我应该如何将此权限授予client
用户?
如果将以下字段添加到提供程序,我就可以执行部署,尽管在阅读文档后似乎这些凭据用于HTTP
与集群通信,如果通过互联网完成,这是不安全的。
还有其他更好的方法吗?
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 - 管理 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-run
orkubectl diff
并没有真正起作用,它只是一个客户端差异。服务器端差异函数目前处于 alpha 阶段 - 没有状态文件。如果我从清单中删除内容,我必须记得手动将其从集群中删除。
- 没有明确的方法来实现 gitops。我看过Weaveworks Flux,但这似乎更适合部署应用程序。
- makefile 变得越来越复杂。感觉这不是可扩展的。
我应该承认我对 Kubernetes 还很陌生,所以可能会忽略一些明显的东西。
有没有办法让我在 Kubernetes 世界中实现类似于我在 Terraform 中的过程?
terraform - 如何从 Kubernetes_secret terraform 资源中获取 data.token
我正在尝试访问Kubernetes_secret
data.token
terraform 中的属性,但我不断收到错误消息
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
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:
kubernetes - 用于重新部署的 Terraform ConfigMap 哈希
我正在将 Terraform 与 Kubernetes Provider 一起使用。现在在创建ConfigMap时,我希望它们的名称具有内容后缀。通常它是内容的哈希值。
这样,它应该在使用时强制执行部署。
所以我希望它的工作类似于:
有什么方法可以实现自定义功能computeHash
吗?或者以另一种方式实现这一目标?
kubernetes - Terraform kubernetes_config_map --from-env-file
我正在使用“--from-env-file”选项创建一个 kubernetes configMap,以将文件内容存储为环境变量。
当我如下创建一个 terraform 资源时,创建的 configMap 包含一个文件,而不是环境变量。
如何使用 terraform-kubernetes-provider 资源创建将文件内容作为环境变量的 configMap?
kubernetes - 使用 terraform 从外部创建的负载均衡器获取 IP
我正在开发一个 terraform 模块来创建 GKE 集群。同一模块调用执行helm install
应用程序的配置程序。
helm chart 创建负载均衡器。terraform 模块不知道负载均衡器,因此分配的 IP 地址无法在模块中重用。
问题:
如何使用负载均衡器的 IP 创建 DNS 条目并获取证书?
我认为这不是奇特的用例,但我还没有找到一种体面的方法来实现这一点。