Поддерживаются две схемы размещения. Ниже подробнее о каждой их них.
Standard
- Для кластера создаётся отдельная VPC с Cloud NAT;
- Узлы в кластере не имеют публичных IP-адресов;
- Публичные IP-адреса можно назначить на master и статические узлы:
- При этом будет использоваться One-to-One NAT для отображения публичного IP-адреса в IP-адрес узла (следует помнить, что CloudNAT в этом случае использоваться не будет);
- Если master не имеет публичного IP-адреса, то для установки и доступа в кластер необходим дополнительный инстанс с публичным IP-адресом (например, bastion-хост);
- Между VPC кластера и другими VPC можно настроить пиринговое соединение;
Пример конфигурации схемы размещения:
apiVersion: deckhouse.io/v1
kind: GCPClusterConfiguration
layout: Standard
standard:
cloudNATAddresses: # optional, compute address names from this list are used as addresses for Cloud NAT
- example-address-1
- example-address-2
subnetworkCIDR: 10.0.0.0/24 # required
peeredVPCs: # optional, list of GCP VPC Networks with which Kubernetes VPC Network will be peered
- default
sshKey: "ssh-rsa <SSH_PUBLIC_KEY>" # required
labels:
kube: example
masterNodeGroup:
replicas: 1
zones: # optional
- europe-west4-b
instanceClass:
machineType: n1-standard-4 # required
image: projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20190911 # required
diskSizeGb: 20 # optional, local disk is used if not specified
disableExternalIP: false # optional, by default master has externalIP
additionalNetworkTags: # optional
- tag1
additionalLabels: # optional
kube-node: master
nodeGroups:
- name: static
replicas: 1
zones: # optional
- europe-west4-b
instanceClass:
machineType: n1-standard-4 # required
image: projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20190911 # required
diskSizeGb: 20 # optional, local disk is used if not specified
disableExternalIP: true # optional, by default nodes do not have externalIP
additionalNetworkTags: # optional
- tag1
additionalLabels: # optional
kube-node: static
provider:
region: europe-west4 # required
serviceAccountJSON: | # required
{
"type": "service_account",
"project_id": "sandbox",
"private_key_id": "98sdcj5e8c7asd98j4j3n9csakn",
"private_key": "-----BEGIN PRIVATE KEY-----",
"client_id": "342975658279248",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/k8s-test%40sandbox.iam.gserviceaccount.com"
}
WithoutNAT
- Для кластера создаётся отдельная VPC, все узлы кластера имеют публичные IP-адреса;
- Между VPC кластера и другими VPC можно настроить пиринговое соединение.
Пример конфигурации схемы размещения:
apiVersion: deckhouse.io/v1
kind: GCPClusterConfiguration
layout: WithoutNAT
subnetworkCIDR: 10.0.0.0/24 # required
peeredVPCs: # optional, list of GCP VPC Networks with which Kubernetes VPC Network will be peered
- default
labels:
kube: example
masterNodeGroup:
replicas: 1
zones: # optional
- europe-west4-b
instanceClass:
machineType: n1-standard-4 # required
image: projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20190911 # required
diskSizeGb: 20 # optional, local disk is used if not specified
additionalNetworkTags: # optional
- tag1
additionalLabels: # optional
kube-node: master
nodeGroups:
- name: static
replicas: 1
zones: # optional
- europe-west4-b
instanceClass:
machineType: n1-standard-4 # required
image: projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20190911 # required
diskSizeGb: 20 # optional, local disk is used if not specified
additionalNetworkTags: # optional
- tag1
additionalLabels: # optional
kube-node: static
provider:
region: europe-west4 # required
serviceAccountJSON: | # required
{
"type": "service_account",
"project_id": "sandbox",
"private_key_id": "98sdcj5e8c7asd98j4j3n9csakn",
"private_key": "-----BEGIN PRIVATE KEY-----",
"client_id": "342975658279248",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/k8s-test%40sandbox.iam.gserviceaccount.com"
}