Mik*_*erg 2 google-cloud-platform google-kubernetes-engine terraform terraform-provider-gcp infrastructure-as-code
对任何 beta 参数定义的任何 Google Cloud Platform (GCP) 资源进行地形改造都需要提供google-beta程序。是否应该google-beta使用提供者来代替或与提供者一起使用google提供程序一起使用?
换句话说,假设$GKE_CLUSTER_NAMEGCP 项目中存在某个 Google Kubernetes Engine (GKE) 集群$GCP_PROJECT_NAME某个 Google Kubernetes Engine (GKE) 集群:
gcloud container clusters list \\\n--format="value(name)" \\\n--project=$GCP_PROJECT_NAME\n\n#=>\n\n. . .\n$GKE_CLUSTER_NAME\n. . .\nRun Code Online (Sandbox Code Playgroud)\n启用配置连接器后:
\ngcloud container clusters describe $GKE_CLUSTER_NAME \\\n--format=\xe2\x80\x9cvalue(addonsConfig.configConnectorConfig.enabled)\xe2\x80\x9d \\\n--zone=$GKE_CLUSTER_ZONE\n\n#=>\n\nTrue\nRun Code Online (Sandbox Code Playgroud)\nTerraforming$GKE_CLUSTER_NAME需要一个google_container_cluster资源定义,container_cluster.tf其中包括config_connector_config参数(在addons_config块内;更多信息请参见此处)和provider参数(官方参考文档中缺少):
resource "google_container_cluster" "test" {\n addons_config {\n config_connector_config {\n enabled = true\n }\n . . .\n }\n . . .\n provider = google-beta\n . . .\n}\nRun Code Online (Sandbox Code Playgroud)\n但不需要定义:google-beta providerproviders.tf
provider "google" {\n project = ". . ."\n}\n\nterraform {\n required_providers {\n google = {\n version = "~> 3.83.0"\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n由于缺少provider其他资源定义中的参数(例如google_container_node_pool在 中找到的参数container_node_pool.tf),该命令会产生以下输出providers:
terraform providers\n\nProviders required by configuration:\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 provider[registry.terraform.io/hashicorp/google] ~> 3.83.0\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 provider[registry.terraform.io/hashicorp/google-beta]\n\nProviders required by state:\n\n provider[registry.terraform.io/hashicorp/google]\n\n provider[registry.terraform.io/hashicorp/google-beta]\nRun Code Online (Sandbox Code Playgroud)\napply命令刷新状态文件后terraform.tfstate。
使用 beta 参数对 GCP 资源进行地形改造的方法是否更正确、更不易出错?或者,我应该运行一个replace-provider子命令:
terraform state replace-provider \\\n-auto-approve \\\n"hashicorp/google" \\\n"hashicorp/google-beta"\n\n#=>\n\nTerraform will perform the following actions:\n\n ~ Updating provider:\n - registry.terraform.io/hashicorp/google\n + registry.terraform.io/hashicorp/google-beta\n\nChanging 2 resources:\n\n google_container_node_pool.$GKE_NODE_POOL_NAME\n\nSuccessfully replaced provider for 1 resources.\nRun Code Online (Sandbox Code Playgroud)\n并修改providers.tf:
provider "google-beta" {\n project = ". . ."\n}\n\nterraform {\n required_providers {\n google-beta = {\n version = "~> 3.83.0"\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n因此providers命令的输出是:
terraform providers\n\n#=>\n\nProviders required by configuration:\n.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 provider[registry.terraform.io/hashicorp/google-beta] ~> 3.83.0\n\nProviders required by state:\n\n provider[registry.terraform.io/hashicorp/google-beta]\nRun Code Online (Sandbox Code Playgroud)\n命令刷新?apply中的状态后terraform.state
您应该同时 使用google和google-beta提供者。
在同一个 中使用和提供者是安全的。Terraform 将对需要提供程序的任何资源的请求发送到 Beta 端点:;即,使用提供者与使用组类似。googlegoogle-betaproviders.tfgoogle-betahttps://. . .googleapis.com/v1beta1/. . .google-betabeta gcloud
你应该:
\n将google和google-beta提供者都包含在providers.tf:
provider "google" {\n project = ". . ."\n}\n\nprovider "google-beta" {\n project = ". . ."\n}\n\nterraform {\n required_providers {\n google = {\n version = "~> 3.83.0"\n }\n google-beta = {\n version = "~> 3.83.0"\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nprovider对每个GCP 资源使用该参数:google-beta对于至少\n启用一项 Beta 功能的任何资源:
resource "google_container_cluster" "beta_cluster" {\n . . .\n provider = google-beta\n . . .\n}\nRun Code Online (Sandbox Code Playgroud)\n对于google所有其他资源:
resource "google_container_node_pool" "general_availability_node_pool" {\n. . .\n provider = google\n. . .\n}\nRun Code Online (Sandbox Code Playgroud)\n进行上述两项建议的更改并运行a后refresh,该命令的输出providers现在应类似于以下内容:
terraform providers\n\n#=>\n\nProviders required by configuration:\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 provider[registry.terraform.io/hashicorp/google] ~> 3.83.0\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 provider[registry.terraform.io/hashicorp/google-beta] ~> 3.83.0\n\nProviders required by state:\n\n provider[registry.terraform.io/hashicorp/google]\n\n provider[registry.terraform.io/hashicorp/google-beta]\nRun Code Online (Sandbox Code Playgroud)\n您应该阅读官方文档。此处提供提供商版本。
\n| 归档时间: |
|
| 查看次数: |
4795 次 |
| 最近记录: |