我已使用以下.tf
将Google Kubernetes引擎(GKE)上的Terrain私有Kubernetes集群(Terraform版本11.10):
module "nat" {
source = "GoogleCloudPlatform/nat-gateway/google"
region = "europe-west1"
network = "default"
subnetwork = "default"
}
resource "google_container_node_pool" "cluster_1_np" {
name = "cluster-1-np"
region = "europe-west1"
cluster = "${google_container_cluster.cluster_1.name}"
initial_node_count = 1
lifecycle {
ignore_changes = ["node_count"]
}
autoscaling {
min_node_count = 1
max_node_count = 50
}
management {
auto_repair = true
auto_upgrade = true
}
node_config {
oauth_scopes = [
"https://www.googleapis.com/auth/compute",
"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/pubsub",
]
tags = ["${module.nat.routing_tag_regional}"]
}
}
resource "google_container_cluster" "cluster_1" {
provider = "google-beta"
name = "cluster-1"
region = "europe-west1"
remove_default_node_pool = true
private_cluster_config {
enable_private_endpoint = false
enable_private_nodes = true
master_ipv4_cidr_block = "172.16.0.0/28"
}
ip_allocation_policy {
create_subnetwork = true
}
lifecycle {
ignore_changes = ["initial_node_count", "network_policy", "node_config", "node_pool"]
}
node_pool {
name = "default-pool"
}
addons_config {
http_load_balancing {
disabled = false
}
horizontal_pod_autoscaling {
disabled = false
}
}
master_authorized_networks_config {
cidr_blocks = [
{
cidr_block = "<MY_OFFICE_CIDR>"
display_name = "Office"
},
]
}
}
哪一个工作得很好,可以给我一个私有集群(而NAT可以工作,使节点可以访问Internet),并且我办公室中的机器可以运行kubectl
命令来与之交互。
我现在面临的问题是集成任何基于Web的持续集成(CI)或持续部署(CD)。私有集群是Google Cloud Platform(GCP)的一项新功能,在此领域中缺少相关文档。
到目前为止,我的尝试完全失败了,我的网络知识简直是不足。我尝试了this solution,但似乎自动化机器必须与代理位于同一网络上。
我发现this similar SO question(几乎完全一样,但他特定于Cloud Build)。在对该问题的答案之一的评论中,OP提到他找到了一种解决方法,在该方法中,他临时修改了构建计算机的主授权网络,但是他没有确切说明自己如何执行此操作。
我试图复制他的解决方法,但是相关的gcloud
命令似乎能够update
列出网络,或完全删除所有网络,而不是一次添加/删除一个网络评论建议。
非常感谢网络向导的帮助。
答案 0 :(得分:2)
与公共云中的CircleCI或Travis之类的CI系统接口时,这是一个常见问题。您可以使用此命令来更新您的master authorized networks
gcloud container clusters update [CLUSTER_NAME] \
--enable-master-authorized-networks \
--master-authorized-networks=<MY_OFFICE_CIDR>,<NEW-CIDR-FROM-CI> \
--zone=<your-zone>
要删除CI系统网络,您可以执行以下操作(只需从cli中删除网络):
gcloud container clusters update [CLUSTER_NAME] \
--enable-master-authorized-networks \
--master-authorized-networks=<MY_OFFICE_CIDR> \
--zone=<your-zone>
要完全删除所有授权网络(禁用):
gcloud container clusters update [CLUSTER_NAME] \
--no-enable-master-authorized-networks
您也可以通过用户界面进行操作
它实际上已记录在here中。