问题标签 [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 模块使用默认 kubeconfig
我正在尝试创建一些可重用的 Terraform 模块,在集群上提供 Kubernetes 资源。我的模块没有显式配置 Kubernetes 提供程序,期望配置的提供程序将由“根”模块创建。我相信这符合Terraform 最佳实践。
但是,如果根模块“忘记”提供已配置的 Kubernetes 提供程序,Terraform 似乎会默认提供一个,并且默认行为是使用当前在执行用户的kubeconfig
. 如果用户没有注意,他们可能会无意中最终修改错误集群上的资源。
有没有办法防止这种行为并有效地说“你必须明确地传递一个提供者才能使用这个模块”?
terraform - terraform 不断覆盖 kubernetes 提供者的令牌
我们正在尝试terraform apply
在我们的 terraform 文件中使用以下 kubernetes 提供程序设置运行:
但是我们收到以下错误:
设置为之后TF_LOG
,DEBUG
我们看到创建 kubernetes 服务帐户的以下请求:
即使我们在提供程序中对令牌进行硬编码,身份验证持有者令牌也会被覆盖!例如:
即使有上述情况,令牌在 HTTP 请求中也将保持不变。
我们发现在 auth 标头中发送的令牌位于 terraform 容器中/run/secrets/kubernetes.io/serviceaccount/token
。
terraform 是否有任何理由会用 kubernetes 生成的令牌覆盖此令牌?我们可以尝试其他设置吗?
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 应用抛出错误。
重现步骤
terraform apply
谢谢。
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
也不会返回任何内容
我究竟做错了什么?
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 apply
或terraform plan
再次运行并且 terraform 尝试刷新命名空间资源时,
它间歇性地抛出以下错误。❌❌❌</p>
它有时会过去,有时会失败 -间歇性地。
你会建议我在哪里解决这个间歇性错误?
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状态
尝试将其转换count
为for_each
如下所示给了我以下错误
我在上面做错了什么?
kubernetes - 是否可以从 azurerm_netapp_volume 数据源获取完整路径?
我想使用 Terraform 创建一个持久卷,如下所示:
Azure Netapp 卷已存在。问题是我的安装路径看起来像这样1.2.3.4:/my-netapp-volume
,而 terraform 计划最终是这样的:
是否有可能以某种方式获得我路径的 1.2.3.4 部分?
azure-cli - 是否有可能用 terraform 的 Kubernetes 提供程序覆盖 Kubeconfig
我想运行 terraform,然后能够在 terraform 完成后立即在 cli 中运行 kubectl。或者这是你不做的事情。在 terraform 完成创建集群后,我想制作一个脚本来运行 kubectl 命令。
我有这个,我假设我可以编写 terraform kubernetes 代码,但我不相信它会覆盖 cli 的 kubeconfig 引用文件。
kubernetes - 我可以在不通过 Terraform 声明任何服务的情况下通过 Terrafrom 设置 Kubernetes Ingress 吗?
我试图解决的问题:
我想实现以下设置:
- Terraform 配置的基础设施包括 Kubernetes 集群、指向该集群的 DNS 记录、
- Kubernetes 服务,通过 Kubernetes
.yaml
文件配置的部署, - Kubernetes 入口服务充当集群上服务的网关。
我是如何尝试这样做的:
- 通过 Terraform 添加 kubernetes 集群和 kubernetes ingress。将 kubernetes 入口 IP 绑定到 DNS 记录。
- 使用 部署所有服务
kubectl
。
terraform 代码的相关部分如下所示:
问题是,kubernetes_ingress
如果不通过 Terraform 管理 pod、服务和部署,似乎无法部署。我想通过kubectl
kustomize 文件分别管理它们。
我试图通过 Terraform 创建 kubernetes 入口的原因是我需要为 terraform 中的 DNS 记录分配的 IP。
我的问题如下:
我可以通过 terraform 部署 kubernetes 入口而不通过 terraform 管理 kubernetes 服务吗?
如果我不能,有没有办法知道在 terraform 应用期间将分配给入口的 IP 以便我可以将 DNS 绑定到它?
PS对不起这个令人费解的问题,不知道如何更好地构建它。
terraform - terraform kubernetes 提供者:命名空间目标
我正在使用 terraformkubernetes_ingress
资源创建入口:
我不清楚这个入口规则将分配给哪个命名空间。
我试着去看看是否有任何namespace
财产,但我不太清楚它在哪里。
有任何想法吗?