问题标签 [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 回答
121 浏览

kubernetes - 防止 Terraform 模块使用默认 kubeconfig

我正在尝试创建一些可重用的 Terraform 模块,在集群上提供 Kubernetes 资源。我的模块没有显式配置 Kubernetes 提供程序,期望配置的提供程序将由“根”模块创建。我相信这符合Terraform 最佳实践

但是,如果根模块“忘记”提供已配置的 Kubernetes 提供程序,Terraform 似乎会默认提供一个,并且默认行为是使用当前在执行用户的kubeconfig. 如果用户没有注意,他们可能会无意中最终修改错误集群上的资源。

有没有办法防止这种行为并有效地说“你必须明确地传递一个提供者才能使用这个模块”?

0 投票
1 回答
512 浏览

terraform - terraform 不断覆盖 kubernetes 提供者的令牌

我们正在尝试terraform apply在我们的 terraform 文件中使用以下 kubernetes 提供程序设置运行:

但是我们收到以下错误:

设置为之后TF_LOGDEBUG我们看到创建 kubernetes 服务帐户的以下请求:

即使我们在提供程序中对令牌进行硬编码,身份验证持有者令牌也会被覆盖!例如:

即使有上述情况,令牌在 HTTP 请求中也将保持不变。

我们发现在 auth 标头中发送的令牌位于 terraform 容器中/run/secrets/kubernetes.io/serviceaccount/token

terraform 是否有任何理由会用 kubernetes 生成的令牌覆盖此令牌?我们可以尝试其他设置吗?

0 投票
1 回答
1207 浏览

terraform - terraform apply 找不到资源 helm_release

我正在尝试通过 terraform 设置 helm 和 helm 版本,根据terraform plan

但是当我运行terraform apply“恐慌输出”中提到的抛出错误时。

地形版本

Terraform v0.12.18 + provider.aws v2.43.0 + provider.helm v0.10.4 + provider.kubernetes v1.10.0 + provider.local v1.4.0 + provider.null v2.1.2 + provider.random v2.2.1 + provider.template v2.1.2

您的 Terraform 版本已过时!最新版本是 0.12.19。您可以从https://www.terraform.io/downloads.html下载更新

受影响的资源

  • helm_release

Terraform 配置文件

调试输出

我已经启用debug=true但它不产生掌舵特定日志

恐慌输出

预期行为

根据terraform plan它应该helm_release在 Kubernetes 中创建。

实际行为

Terraform 应用抛出错误。

重现步骤

  1. terraform apply

谢谢。

0 投票
1 回答
225 浏览

terraform - 如何使用在另一个资源的秘密中创建的令牌?

我正在尝试创建一个服务帐户密码,以便使用令牌填充密码:

但这给了我一个错误: Resource 'data.kubernetes_secret.k8s-api-token' does not have attribute 'data.token' for variable 'data.kubernetes_secret.k8s-api-token.data.token'

我可以验证已创建秘密,但即使运行terraform state show kubernetes_secret.k8s_api_token也不会返回任何内容

我究竟做错了什么?

0 投票
3 回答
1876 浏览

kubernetes - Terraform kubernetes 命令因私有 GKE 集群而失败

我已经使用带有块的terraform 资源启动了一个私有 GKE 集群"google_container_cluster"private_cluster_config

我添加master_authorized_networks_config了允许在 GKE 的授权网络中使用我自己的 IP 地址。

我已经使用 terraform resource添加了k8s 命名空间"kubernetes_namespace"

我还正确设置了所有 google、kubernetes 提供程序、k8s 令牌、cluster_ca_certificate 等,并且命名空间确实是由这个 terraform 提供的。



然后我跑terraform apply了,命名空间创建得很好✅✅✅</p>


但是,当我运行terraform applyterraform plan再次运行并且 terraform 尝试刷新命名空间资源时,

它间歇性地抛出以下错误。❌❌❌</p>

它有时会过去,有时会失败 -间歇性地


你会建议我在哪里解决这个间歇性错误?

0 投票
1 回答
282 浏览

google-cloud-platform - 使用 TF 0.12+ 从带有条件资源的 output.tf 继承值

我在 GCP 中有一个用于填充 kubernetes 机密的服务帐户模块

这是我的模块

'output.tf' 包含以下内容

由于有一个条件是这些资源都是在没有enabled标志的情况下创建的,所以我不得不在 TF 0.11.14 中这样处理它,而 tf0.12 自动升级工具在这里没有做太多的更改。

如何在 Terraform 0.12.24 中简化这一点,我尝试将输出修改为简单

但问题是,如果在删除过程中对应的kubernetes集群被删除,中途因为terraform出现错误,我将无法使用`terraform destroy'清理其余资源的terraform状态

尝试将其转换countfor_each如下所示给了我以下错误

我在上面做错了什么?

0 投票
1 回答
85 浏览

kubernetes - 是否可以从 azurerm_netapp_volume 数据源获取完整路径?

我想使用 Terraform 创建一个持久卷,如下所示:

Azure Netapp 卷已存在。问题是我的安装路径看起来像这样1.2.3.4:/my-netapp-volume,而 terraform 计划最终是这样的:

是否有可能以某种方式获得我路径的 1.2.3.4 部分?

0 投票
1 回答
432 浏览

azure-cli - 是否有可能用 terraform 的 Kubernetes 提供程序覆盖 Kubeconfig

我想运行 terraform,然后能够在 terraform 完成后立即在 cli 中运行 kubectl。或者这是你不做的事情。在 terraform 完成创建集群后,我想制作一个脚本来运行 kubectl 命令。

我有这个,我假设我可以编写 terraform kubernetes 代码,但我不相信它会覆盖 cli 的 kubeconfig 引用文件。

0 投票
0 回答
2567 浏览

kubernetes - 我可以在不通过 Terraform 声明任何服务的情况下通过 Terrafrom 设置 Kubernetes Ingress 吗?

我试图解决的问题:

我想实现以下设置:

  1. Terraform 配置的基础设施包括 Kubernetes 集群、指向该集群的 DNS 记录、
  2. Kubernetes 服务,通过 Kubernetes.yaml文件配置的部署,
  3. Kubernetes 入口服务充当集群上服务的网关。

我是如何尝试这样做的:

  1. 通过 Terraform 添加 kubernetes 集群和 kubernetes ingress。将 kubernetes 入口 IP 绑定到 DNS 记录。
  2. 使用 部署所有服务kubectl

terraform 代码的相关部分如下所示:

问题是,kubernetes_ingress如果不通过 Terraform 管理 pod、服务和部署,似乎无法部署。我想通过kubectlkustomize 文件分别管理它们。

我试图通过 Terraform 创建 kubernetes 入口的原因是我需要为 terraform 中的 DNS 记录分配的 IP。

我的问题如下:

我可以通过 terraform 部署 kubernetes 入口而不通过 terraform 管理 kubernetes 服务吗?

如果我不能,有没有办法知道在 terraform 应用期间将分配给入口的 IP 以便我可以将 DNS 绑定到它?

PS对不起这个令人费解的问题,不知道如何更好地构建它。

0 投票
1 回答
52 浏览

terraform - terraform kubernetes 提供者:命名空间目标

我正在使用 terraformkubernetes_ingress资源创建入口:

我不清楚这个入口规则将分配给哪个命名空间。

我试着去看看是否有任何namespace财产,但我不太清楚它在哪里。

有任何想法吗?