GKE Terraformed 集群发布通道设置
Posted
技术标签:
【中文标题】GKE Terraformed 集群发布通道设置【英文标题】:GKE Terraformed Cluster Release Channel Setting 【发布时间】:2021-10-03 15:01:39 【问题描述】:根据THIS documentation 就在这里,我可以在集群上设置发布通道。然而它根本不起作用。它在应用摘要期间“看到”该设置,但它最终并未实际应用于新集群。我错过了什么?文档中没有给出示例,所以我只需要在这里猜测。在控制台中我看到了这个:
没有设置,甚至不能手动设置:
我正在尝试将其设置为 RAPID
release_channel
channel = "RAPID"
这是我的完整 TF:
resource "google_container_cluster" "standard-cluster"
enable_binary_authorization = false
enable_kubernetes_alpha = false
enable_legacy_abac = false
enable_shielded_nodes = false
initial_node_count = 0
location = local.ws_vars["zone"]
logging_service = "logging.googleapis.com/kubernetes"
monitoring_service = "monitoring.googleapis.com/kubernetes"
name = local.ws_vars["cluster-name"]
network = "projects/$local.ws_vars["project-id"]/global/networks/$local.ws_vars["environment"]"
project = local.ws_vars["project-id"]
subnetwork = "projects/$local.ws_vars["project-id"]/regions/us-east4/subnetworks/$local.ws_vars["environment"]"
release_channel
channel = local.ws_vars["channel"]
ip_allocation_policy
#cluster_ipv4_cidr_block = local.ws_vars["cidr-block"]
cluster_secondary_range_name = "subnet-pods"
services_secondary_range_name = "subnet-services"
addons_config
horizontal_pod_autoscaling
disabled = false
http_load_balancing
disabled = false
network_policy_config
disabled = false
database_encryption
state = "DECRYPTED"
maintenance_policy
daily_maintenance_window
start_time = "01:00"
network_policy
enabled = true
provider = "CALICO"
node_pool
initial_node_count = 1
name = "scoped-two-cpu-high-mem-preemptible"
node_locations = [
local.ws_vars["zone"],
]
autoscaling
max_node_count = 30
min_node_count = 0
management
auto_repair = true
auto_upgrade = true
node_config
disk_size_gb = 100
disk_type = "pd-standard"
guest_accelerator = []
image_type = "COS"
labels =
local_ssd_count = 0
machine_type = "n1-highmem-4"
metadata =
"disable-legacy-endpoints" = "true"
workload_metadata_config = "GKE_METADATA_SERVER"
oauth_scopes = [
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
"https://www.googleapis.com/auth/ndev.clouddns.readwrite",
"https://www.googleapis.com/auth/service.management.readonly",
"https://www.googleapis.com/auth/servicecontrol",
"https://www.googleapis.com/auth/trace.append",
]
preemptible = true
service_account = "default"
tags = []
taint = []
shielded_instance_config
enable_integrity_monitoring = true
enable_secure_boot = false
upgrade_settings
max_surge = 1
max_unavailable = 0
private_cluster_config
enable_private_endpoint = false
enable_private_nodes = true
master_ipv4_cidr_block = "172.16.0.0/28"
vertical_pod_autoscaling
enabled = true
workload_identity_config
identity_namespace = "$local.ws_vars["project-id"].svc.id.goog"
【问题讨论】:
【参考方案1】:我认为关键在于 GUI 给你的错误信息。今天将发布通道设置为“RAPID”意味着跳转到 GKE 1.20,这是比您的集群新的 2 个主要版本,这似乎不受支持。
如果将其设置为 "STABLE" 会发生什么?这仍然是 1.18,应该不会设置失败。
【讨论】:
答案是状态文件和 GKE 的问题。将其设置为稳定会导致错误和常规错误。仅支持特定版本,这意味着您必须为频道设置最低支持版本。这违背了 terraform 的目的,因为您必须在每次要构建集群并且支持的版本发生变化时更新 terraform。【参考方案2】:答案分为两部分:
-
状态文件有一个以前支持但不再支持的版本集。版本一直设置为以前支持的版本,因此 RAPID 设置无法生效。
GKE 需要与这些受支持版本之一匹配的最低版本设置,才能正确设置通道。这违背了 terraform 和基础设施即代码的目的,因为最终必须在 terraform 中更改此版本才能应用通道。这总是意味着 TF 中的漂移。这是 GKE 的一个明显缺陷。理想情况下,它应该将版本设置为支持的任何版本。
【讨论】:
以上是关于GKE Terraformed 集群发布通道设置的主要内容,如果未能解决你的问题,请参考以下文章