GCPClusterConfiguration
Version: deckhouse.io/v1
Describes the configuration of a cloud cluster in GCP.
Used by the cloud provider if a cluster’s control plane is hosted in the cloud.
Run the following command to change the configuration in a running cluster:
d8 system edit provider-cluster-configuration
After updating the node parameters, you need to run the dhctl converge command to apply the changes.
Example:
apiVersion: deckhouse.io/v1
kind: GCPClusterConfiguration
layout: WithoutNAT
sshKey: "<SSH_PUBLIC_KEY>"
subnetworkCIDR: 10.36.0.0/24
masterNodeGroup:
  replicas: 1
  zones:
  - europe-west3-b
  instanceClass:
    machineType: n1-standard-4
    image: projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20250313
    diskSizeGb: 50
nodeGroups:
- name: static
  replicas: 1
  zones:
  - europe-west3-b
  instanceClass:
    machineType: n1-standard-4
    image: projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20250313
    diskSizeGb: 50
    additionalNetworkTags:
    - tag1
    additionalLabels:
      kube-node: static
provider:
  region: europe-west3
  serviceAccountJSON: "<SERVICE_ACCOUNT_JSON>"
- stringapiVersionRequired value Allowed values: deckhouse.io/v1,deckhouse.io/v1alpha1
- stringkindRequired value Allowed values: GCPClusterConfiguration
- objectlabelsA list of labels to attach to cluster resources. Note that you have to re-create all the machines to add new tags if tags were modified in the running cluster. You can learn more about the labels in the official documentation. Format — key: value.
- stringlayoutRequired value The way resources are located in the cloud. Standard- set Cloud NAT mode. More info…WithoutNAT- a dedicated VPC is created for the cluster. All cluster nodes have public IP addresses. More info…Allowed values: Standard,WithoutNAT
- objectmasterNodeGroupRequired value Parameters of the master’s NodeGroup. For the changes to take effect, run dhctl convergeafter modifying the parameters of themasterNodeGroupsection.- objectmasterNodeGroup.instanceClass.additionalLabelsAdditional labels. For details on labels, refer to the Google Cloud documentation. Example: project: cms-production severity: critical
- array of stringsThe list of additional network tags. You can use network tags to apply firewall rules to instances. The detailed description of network tags is available in the Google Cloud documentation. 
- booleanmasterNodeGroup.instanceClass.disableExternalIPDefines whether to disable external IP for an instance or not. This parameter is only available for the Standardlayout.True means that nodes do not have public addresses and connect to the Internet over CloudNAT;False means that static public addresses are created for nodes, they are also used for One-to-one NAT.; Default: trueAllowed values: true,false
- integermasterNodeGroup.instanceClass.diskSizeGbInstance disk size in gibibytes. Example: diskSizeGb: 50
- integermasterNodeGroup.instanceClass.etcdDiskSizeGbEtcd disk size in gibibytes. Default: 20Example: etcdDiskSizeGb: 20
- stringmasterNodeGroup.instanceClass.imageRequired value Image to use while provisioning GCP servers. You can find a list of available images in the provider documentation. The list of OS and their versions supported by Deckhouse can be found in the Deckhouse documentation (take into account the Deckhouse version used). Example: image: projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20250313
- stringmasterNodeGroup.instanceClass.machineTypeRequired value Machine type of GCP instance. Caution! Make sure that this type is present in all zones specified in the zonesparameter.GCP lets you specify a custom amount of resources (CPU and RAM), e.g., custom-8-40960orn2-custom-8-40960.Example: machineType: n1-standard-4
 
- integermasterNodeGroup.replicasRequired value The number of master nodes to create. It is important to have an odd number of masters to ensure a quorum. Allowed values: 1 <= X
- array of stringsmasterNodeGroup.zonesA limited set of zones in which master nodes can be created. The order in which zones are specified does not influence the sequence of node creation. Nodes are assigned to zones in alphabetical order: the first node is placed in the alphabetically first zone, the second node in the second zone, and so forth. If there are more nodes than zones, the assignment process restarts from the beginning of the zone list after placing a node in the last alphabetical zone. 
 
- array of objectsnodeGroupsAn array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways). - objectnodeGroups.instanceClass.additionalLabelsAdditional labels. For details on labels, refer to the Google Cloud documentation. Example: project: cms-production severity: critical
- array of stringsThe list of additional network tags. You can use network tags to apply firewall rules to instances. The detailed description of network tags is available in the Google Cloud documentation. 
- booleannodeGroups.instanceClass.disableExternalIPDefines whether to disable external IP for an instance or not. This parameter is only available for the Standardlayout.True means that nodes do not have public addresses and connect to the Internet over CloudNAT;False means that static public addresses are created for nodes, they are also used for One-to-one NAT.; Default: trueAllowed values: true,false
- integernodeGroups.instanceClass.diskSizeGbInstance disk size in gibibytes. Example: diskSizeGb: 50
- stringnodeGroups.instanceClass.imageRequired value Image to use while provisioning GCP servers. You can find a list of available images in the provider documentation. The list of OS and their versions supported by Deckhouse can be found in the Deckhouse documentation (take into account the Deckhouse version used). Example: image: projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20250313
- stringnodeGroups.instanceClass.machineTypeRequired value Machine type of GCP instance. Caution! Make sure that this type is present in all zones specified in the zonesparameter.GCP lets you specify a custom amount of resources (CPU and RAM), e.g., custom-8-40960orn2-custom-8-40960.Example: machineType: n1-standard-4
 
- stringnodeGroups.nameRequired value The name of the NodeGroup to use for generating node names. 
- objectnodeGroups.nodeTemplateParameters of Node objects in Kubernetes to add after registering the node. - objectnodeGroups.nodeTemplate.annotationsThe same as the metadata.annotations(https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta).
- objectnodeGroups.nodeTemplate.labelsThe same as the metadata.labelsstandard (https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta).
- array of objectsnodeGroups.nodeTemplate.taintsThe same as the .spec.taintsfield of the Node object(https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#taint-v1-core).Available fields: effect,key, andvalues.- stringnodeGroups.nodeTemplate.taints.effectAllowed values: NoSchedule,PreferNoSchedule,NoExecute
- stringnodeGroups.nodeTemplate.taints.key
- stringnodeGroups.nodeTemplate.taints.value
 
 
- integernodeGroups.replicasRequired value The number of nodes to create. 
- array of stringsnodeGroups.zonesA limited set of zones in which master nodes can be created. The order in which zones are specified does not influence the sequence of node creation. Nodes are assigned to zones in alphabetical order: the first node is placed in the alphabetically first zone, the second node in the second zone, and so forth. If there are more nodes than zones, the assignment process restarts from the beginning of the zone list after placing a node in the last alphabetical zone. 
 
- array of stringspeeredVPCsA list of GCP VPC networks to peer with the cluster network. The service account must have access to all the VPCs listed. You have to configure the peering connection manually if no access is available. 
- objectproviderRequired value Parameters for connecting to the GCP API. - stringprovider.regionRequired value The name of the region where instances will be provisioned. 
- stringprovider.serviceAccountJSONRequired value A key to the Service Account with Project Admin privileges ( service account key) in the JSON format.How to create it a service account key.
 
- array of stringssshAllowListA list of CIDR’s allowed to connect to nodes via SSH. By default, from any. 
- stringsshKeyRequired value A public key to access nodes as user.
- objectstandardSettings for the Standardlayout.- array of stringsstandard.cloudNATAddressesA list of public static IP addresses for Cloud NAT.
 
- stringsubnetworkCIDRA subnet to use for cluster nodes. Pattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- objectwithoutNATSettings for the WithoutNATlayout.
- array of stringszonesA limited set of zones in which master nodes can be created. The order in which zones are specified does not influence the sequence of node creation. Nodes are assigned to zones in alphabetical order: the first node is placed in the alphabetically first zone, the second node in the second zone, and so forth. If there are more nodes than zones, the assignment process restarts from the beginning of the zone list after placing a node in the last alphabetical zone.