Я терраформировал (Terraform версия 11.10) частный кластер Kubernetes в Google Kubernetes Engine (GKE), используя следующее .tf
:
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, предоставляя узлам доступ к Интернету), и машины в моем офисе могут запускать команды kubectl
, чтобы взаимодействовать с ним без проблем.
Проблема, с которой я сейчас сталкиваюсь, заключается в интеграции любой непрерывной интеграции (CI) или непрерывного развертывания (CD) на основе веб-интерфейса. Частные кластеры являются новой функцией облачной платформы Google (GCP), и в этой области документации немного не хватает.
Мои попытки пока полностью провалились, мои сетевые знания просто недостаточны. Я попытался это решение , но кажется, что автомат должен быть в той же сети, что и прокси.
Я нашел этот похожий вопрос SO (почти такой же, но он специфичен для Cloud Build). В комментариях к одному из ответов на этот вопрос OP упоминает, что он нашел обходной путь, где он временно изменяет основные авторизованные сети машины сборки, но он не указал точно, как он это выполняет.
Я попытался повторить его обходной путь, но соответствующие gcloud
команды, похоже, могут update
список сетей или полностью удалить все из них, а не добавлять / удалять по одной за раз, как предполагает его комментарий.
Помощь сетевых мастеров была бы очень признательна.