未找到 terraform kubectl 提供程序
Posted
技术标签:
【中文标题】未找到 terraform kubectl 提供程序【英文标题】:terraform kubectl provider not found 【发布时间】:2021-02-03 01:15:10 【问题描述】:我正在尝试为 terraform 模块添加 kubectl 提供程序,并遵循来自 Terraform kubectl 的文档。我运行terraform init
并成功安装了提供程序,但是当我尝试添加示例配置时,例如:(或来自here 的其他人)
resource "kubectl_server_version" "current"
然后运行 terraform plan
我得到以下消息:
Error: Could not load plugin
Failed to instantiate provider "registry.terraform.io/hashicorp/kubectl" to
obtain schema: unknown provider "registry.terraform.io/hashicorp/kubectl"
当我 tun terraform init
(资源在模块 k8s 中到位)
Error: Failed to install provider
Error while installing hashicorp/kubectl: provider registry
registry.terraform.io does not have a provider named
registry.terraform.io/hashicorp/kubectl
一些输出:
$terraform plugins
├── provider[registry.terraform.io/hashicorp/kubernetes] 1.13.2
├── provider[registry.terraform.io/gavinbunney/kubectl] 1.9.1
├── module.k8s
│ ├── provider[registry.terraform.io/hashicorp/kubectl]
│ └── provider[registry.terraform.io/hashicorp/kubernetes]
$terraform init
Initializing modules...
Initializing the backend...
Initializing provider plugins...
- Using previously-installed hashicorp/kubernetes v1.13.2
- Using previously-installed gavinbunney/kubectl v1.9.1
$terraform -v
Terraform v0.13.4
+ provider registry.terraform.io/gavinbunney/kubectl v1.9.1
+ provider registry.terraform.io/hashicorp/kubernetes v1.13.2
....
一些配置文件:
terraform.tf
terraform
required_version = "0.13.4"
backend "gcs"
...
required_providers
kubernetes =
source = "hashicorp/kubernetes"
version = "1.13.2"
kubectl =
source = "gavinbunney/kubectl"
version = "1.9.1"
....
terraform 成功初始化 gavinbunney/kubectl
提供程序,但是当我在 k8s.module 中添加 resource "kubectl_manifest" ...
时,terraform 正在尝试加载 hashicorp/kubectl
提供程序
我错过了什么? :)
【问题讨论】:
您说安装成功,但尝试安装时只显示错误。你认为安装成功后能显示输出吗? terraform init 正在初始化模块...正在初始化后端...正在初始化提供程序插件... - 使用之前安装的 hashcorp/kubernetes v1.13.2 - 使用之前安装的 gavinbunney/kubectl v1.9.1 您能否编辑您的问题以将terraform
块定义也包含在required_providers
中?
terraform 成功初始化了gavinbunney/kubectl
,但是当我在 k8s.module 中添加 kubectl_manifest
资源时,terraform 正在尝试加载 hashicorp/kubectl
提供程序
您使用的是什么版本的 terraform? terraform -v
的输出是什么?
【参考方案1】:
似乎问题在于我在同一模块中拥有resource "kubectl_server_version" "current"
以及来自hashicorp/kubernetes
资源的其他资源,而terraform 试图从hashicorp/kubectl
加载kubectl
。
当我在 main.tf 中添加 gavinbunney/kubectl
的资源时,一切都很好:)
【讨论】:
【参考方案2】:当我阅读文件cat .terraform/plugins/selections.json
时,我明白这个包并没有很好地安装。
在我的项目中,我做到了:
cp -R .terraform/plugins/registry.terraform.io/gavinbunney/kubectl .terraform/plugins/registry.terraform.io/hashicorp
之后:
terraform init
这样看问题就解决了。
【讨论】:
【参考方案3】:要解决此问题,您可以查看 terraform state replace-provider registry.terraform.io/hashicorp/kubectl gavinbunney/kubectl
【讨论】:
【参考方案4】:似乎如果你只留下 kubernetes 提供者,kubectl 提供者就可以正常工作。意味着,无需声明 kubernetes 和 kubectl 提供程序。
【讨论】:
hmmm ...我没有那样尝试,我会尝试:)谢谢【参考方案5】:在我的情况下,这是由于在模块中引用了 kubectl 资源,但该模块需要提供者添加到模块内的required_providers
:
terraform
required_providers
kubectl =
source = "gavinbunney/kubectl"
version = "x.x.x"
【讨论】:
以上是关于未找到 terraform kubectl 提供程序的主要内容,如果未能解决你的问题,请参考以下文章
在具有私有 GKE 集群的 Terraform 上使用 Kubernetes 提供程序
Terraform 0.15.1 多提供者问题 - 参数“region”是必需的,但未设置
使用 Terraform 创建具有托管标识的 Azure AKS 会导致 AutoUpgradePreview 未启用错误