使用 Config Connector 对 Google Kubernetes Engine 集群进行地形改造
Posted
技术标签:
【中文标题】使用 Config Connector 对 Google Kubernetes Engine 集群进行地形改造【英文标题】:Terraforming a Google Kubernetes Engine Cluster with Config Connector Enabled 【发布时间】:2021-11-09 06:04:19 【问题描述】:Google Kubernetes Engine 集群 $GKE_CLUSTER_NAME
在 Google Cloud Platform (GCP) 项目 $GCP_PROJECT_NAME
内运行,并在 container_cluster.tf
内存储了匹配的 Terraform 配置,可以通过以下方式进行检查:
terraform plan
#=>
No changes. Your infrastructure matches the configuration.
Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.
我希望通过向container_cluster.tf
添加以下参数,使用 Terraform 为 $GKE_CLUSTER_NAME
启用配置连接器(更多关于 here):
resource "google_container_cluster" ". . ."
addons_config
config_connector_config
enabled = true
. . .
但是当我转到plan
这个更改时,我遇到了以下错误:
terraform plan
#=>
╷
│ Error: Unsupported block type
│
│ on container_cluster.tf line 3, in resource "google_container_cluster" ". . .":
│ 3: config_connector_config
│
│ Blocks of type "config_connector_config" are not expected here.
尽管官方文档,发现 here,声明 config_connector_config
受 addons_config
块支持。
我正在使用最新版本的 Terraform 和 google
提供程序:
terraform version
#=>
Terraform v1.0.6
on . . .
+ provider registry.terraform.io/hashicorp/google v3.84.0
我需要进行哪些更改才能使用 Terraform 成功为 $GKE_CLUSTER_NAME
启用配置连接器?
【问题讨论】:
【参考方案1】:config_connector_config
参数仍处于测试版,因此您需要为$GKE_CLUSTER_NAME
使用google-beta
提供程序:
为每个资源添加provider
参数:
为任何资源(例如,$GKE_CLUSTER_NAME
)指定 google-beta
,至少
一个 Beta 参数:
resource "google_container_cluster" ". . ."
. . .
provider = google-beta
. . .
为所有其他资源指定google
:
resource resource "google_container_node_pool" ". . ."
. . .
provider = google
. . .
即使 provider
参数。在官方参考文献中没有
google_container_cluster
here 的文档。
将google-beta
提供程序与google
提供程序一起添加
providers.tf
文件:
. . .
provider "google"
project = ". . ."
provider "google-beta"
project = ". . ."
. . .
terraform
required_providers
. . .
google =
version = "~> 3.84.0"
google-beta =
version = "~> 3.84.0"
. . .
在同一个 Terraform 中同时使用 google
和 google-beta
提供程序是安全
配置。更多关于 here.
注意:在上面的提供者定义中设置您的 GCP 项目名称可以让您
在不指定您的项目的情况下运行 import
命令(找到 here)。
到目前为止,尝试 plan
或 apply
您的更改可能会导致以下结果:
terraform plan
#=>
╷
│ Error: Could not load plugin
│
│
│ Plugin reinitialization required. Please run "terraform init".
│
│ Plugins are external binaries that Terraform uses to . . .
所以你可能必须再次init
:
terraform init
#=>
Initializing the backend...
Initializing provider plugins...
- Finding latest version of hashicorp/google-beta...
- Reusing previous version of hashicorp/google from the dependency lock file
- Installing hashicorp/google-beta v3.84.0...
- Installed hashicorp/google-beta v3.84.0 (signed by HashiCorp)
- Using previously-installed hashicorp/google v3.84.0
Terraform has made some changes to the provider dependency selections recorded
in the .terraform.lock.hcl file. Review those changes and commit them to your
version control system if they represent changes you intended to make.
Terraform has been successfully initialized!
You may now begin working with Terraform. . . .
providers
命令应该现在确认您需要 google-beta
当前配置:
terraform providers
#=>
Providers required by configuration:
.
├── provider[registry.terraform.io/hashicorp/google] ~> 3.84.0
└── provider[registry.terraform.io/hashicorp/google-beta] ~> 3.84.0
Providers required by state:
provider[registry.terraform.io/hashicorp/google]
运行plan
以确认将启用配置连接器:
terraform plan
#=>
. . .
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
~ update in-place
Terraform will perform the following actions:
# google_container_cluster.$GKE_CLUSTER_NAME will be updated in-place
~ resource "google_container_cluster" ". . ."
. . .
~ addons_config
+ config_connector_config
+ enabled = true
. . .
Plan: 0 to add, 1 to change, 0 to destroy.
. . .
然后apply
您的更改:
terraform apply
#=>
google_container_cluster.. . .: Modifying... [id=projects/$GCP_PROJECT_NAME/locations/$GKE_CLUSTER_ZONE/clusters/$GKE_CLUSTER_NAME]
. . .
google_container_cluster.. . .: Modifications complete after xmxxs [id=projects/$GCP_PROJECT_NAME/locations/$GKE_CLUSTER_ZONE/clusters/$GKE_CLUSTER_NAME]
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
检查是否为您的集群启用了配置连接器:
gcloud container clusters describe $GKE_CLUSTER_NAME \
--format="value(addonsConfig.configConnectorConfig.enabled)" \
--zone=$GKE_CLUSTER_ZONE
#=>
True
想了解有关使用google-beta
提供程序的更多信息吗?访问here和here。
【讨论】:
以上是关于使用 Config Connector 对 Google Kubernetes Engine 集群进行地形改造的主要内容,如果未能解决你的问题,请参考以下文章
Kafka HDFS Sink Connector Protobuf 未写入
python3使用MySQL connector对MySQL数据库进行操作