AzureClusterConfiguration
Version: deckhouse.io/v1
Describes the configuration of a cloud cluster in Azure.
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:
kubectl -n d8-system exec -ti deploy/deckhouse -- deckhouse-controller edit provider-cluster-configuration
Example:
apiVersion: deckhouse.io/v1
kind: AzureClusterConfiguration
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
vNetCIDR: 10.0.0.0/16
subnetCIDR: 10.0.0.0/24
masterNodeGroup:
replicas: 1
instanceClass:
machineSize: Standard_D4ds_v4
urn: Canonical:UbuntuServer:18.04-LTS:18.04.202207120
enableExternalIP: false
provider:
subscriptionId: "<SUBSCRIPTION_ID>"
location: westeurope
clientId: "<CLIENT_ID>"
clientSecret: "<CLIENT_SECRET>"
tenantId: "<TENANT_ID>"
- apiVersionstring
Required value
Allowed values:
deckhouse.io/v1
,deckhouse.io/v1alpha1
- kindstring
Required value
Allowed values:
AzureClusterConfiguration
- layoutstring
Required value
The way resources are located in the cloud.
Read more about possible provider layouts.
Allowed values:
Standard
- masterNodeGroup
Required value
The definition of the master’s NodeGroup.
Caution! After changing the parameters of the section, you need to run
dhctl converge
for the changes to take effect.- masterNodeGroup.instanceClassobject
Required value
Partial contents of the AzureInstanceClass fields.
- masterNodeGroup.instanceClass.acceleratedNetworkingboolean
Accelerated Networking provides up to 30Gbps in networking throughput.
Default:
false
- object
The additional tags to attach to the instances created (in addition to those specified in the cloud provider configuration).
Example:
project: cms-production severity: critical
- masterNodeGroup.instanceClass.diskSizeGbinteger
Instance root disk size in gibibytes.
Example:
diskSizeGb: 40
- masterNodeGroup.instanceClass.diskTypestring
The type of the volumes to create.
You can view a list of available volume types using the Azure CLI:
az vm list-skus -l westeurope --zone
Example:
diskType: StandardSSD_LRS
- masterNodeGroup.instanceClass.enableExternalIPboolean
Defines whether to enable external IP for an instance or not.
Only available for the
Standard
layout.Default:
false
Allowed values:
true
,false
- masterNodeGroup.instanceClass.etcdDiskSizeGbinteger
Etcd disk size in gibibytes.
Default:
20
Example:
etcdDiskSizeGb: 20
- masterNodeGroup.instanceClass.machineSizestring
Required value
The type of instances to provision.
Getting a list of available types for the specific region using the Azure CLI:
az vm list-sizes --location westeurope -o table
Example:
machineSize: Standard_F4
- masterNodeGroup.instanceClass.urnstring
Required value
The VM image to use for an instance.
More information about virtual machine images can be found in the official documentation.
Getting the urn with Azure CLI (column #4):
az vm image list --location westeurope --publisher Canonical --all --sku 20_04-lts -o table az vm image list --location westeurope --publisher OpenLogic --all --sku 7.5 -o table
By default: The image specified in
AzureCloudDiscoveryData
is used (the master of the cluster is based on this image).Caution! Currently, only
Ubuntu 18.04
,Ubuntu 20.04
,Ubuntu 22.04
,Centos 7
,Centos 8
,Centos 9
,Debian 9
,Debian 10
,Debian 11
are supported and tested to work.
- masterNodeGroup.instanceClass.acceleratedNetworkingboolean
- masterNodeGroup.replicasinteger
Required 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
- masterNodeGroup.zonesarray of strings
A list of zones where master nodes can be created.
You can browse a list of zones available for the selected instance type using the Azure CLI:
az vm list-skus -l westeurope -o table
Default:
[1,2,3]
- masterNodeGroup.instanceClassobject
- nodeGroupsarray of objects
An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).
- nodeGroups.instanceClassobject
Required value
Partial contents of the fields of the AzureInstanceClass.
- nodeGroups.instanceClass.acceleratedNetworkingboolean
Accelerated Networking provides up to 30Gbps in networking throughput.
Default:
false
- object
The additional tags to attach to the instances created (in addition to those specified in the cloud provider configuration).
Example:
project: cms-production severity: critical
- nodeGroups.instanceClass.diskSizeGbinteger
Instance root disk size in gibibytes.
Example:
diskSizeGb: 40
- nodeGroups.instanceClass.diskTypestring
The type of the volumes to create.
You can view a list of available volume types using the Azure CLI:
az vm list-skus -l westeurope --zone
Example:
diskType: StandardSSD_LRS
- nodeGroups.instanceClass.enableExternalIPboolean
Defines whether to enable external IP for an instance or not.
Only available for the
Standard
layout.Default:
false
Allowed values:
true
,false
- nodeGroups.instanceClass.machineSizestring
Required value
The type of instances to provision.
Getting a list of available types for the specific region using the Azure CLI:
az vm list-sizes --location westeurope -o table
Example:
machineSize: Standard_F4
- nodeGroups.instanceClass.urnstring
Required value
The VM image to use for an instance.
More information about virtual machine images can be found in the official documentation.
Getting the urn with Azure CLI (column #4):
az vm image list --location westeurope --publisher Canonical --all --sku 20_04-lts -o table az vm image list --location westeurope --publisher OpenLogic --all --sku 7.5 -o table
By default: The image specified in
AzureCloudDiscoveryData
is used (the master of the cluster is based on this image).Caution! Currently, only
Ubuntu 18.04
,Ubuntu 20.04
,Ubuntu 22.04
,Centos 7
,Centos 8
,Centos 9
,Debian 9
,Debian 10
,Debian 11
are supported and tested to work.
- nodeGroups.instanceClass.acceleratedNetworkingboolean
- nodeGroups.namestring
Required value
The name of the NodeGroup to use for generating node names.
- nodeGroups.nodeTemplate
Parameters of Node objects in Kubernetes to add after registering the node.
- nodeGroups.nodeTemplate.annotationsobject
The same as the
metadata.annotations
standard field.Example:
annotations: ai.fleet.com/discombobulate: "true"
- nodeGroups.nodeTemplate.labelsobject
A list of labels to attach to cluster resources.
The same as the
metadata.labels
standard field.Note that you have to re-create all the machines to add new tags if tags were modified in the running cluster.
Format —
key: value
.Example:
labels: environment: production app: warp-drive-ai
- nodeGroups.nodeTemplate.taintsarray of objects
The same as the
.spec.taints
field of the Node object.Caution! Only the
effect
,key
,values
fields are available.Example:
taints: - effect: NoExecute key: ship-class value: frigate
- nodeGroups.nodeTemplate.taints.effectstring
Allowed values:
NoSchedule
,PreferNoSchedule
,NoExecute
- nodeGroups.nodeTemplate.taints.keystring
- nodeGroups.nodeTemplate.taints.valuestring
- nodeGroups.nodeTemplate.taints.effectstring
- nodeGroups.nodeTemplate.annotationsobject
- nodeGroups.replicasinteger
Required value
The number of nodes to create.
- nodeGroups.zonesarray of strings
A list of zones where static nodes can be created;
You can browse a list of zones available for the selected instance type using the Azure CLI:
az vm list-skus -l westeurope -o table
Default:
[1,2,3]
- nodeGroups.instanceClassobject
- peeredVNetsarray of objects
An array of
VNets
to merge with the cluster network.The service account must have access to all the
VNets
listed above. You have to configure the peering connection manually if no access is available.- peeredVNets.resourceGroupNamestring
Required value
The name of the resource group with the VNet.
- peeredVNets.vnetNamestring
Required value
The name of the VNet.
- peeredVNets.resourceGroupNamestring
- providerobject
Required value
Parameters for connecting to the Azure API.
- provider.clientIdstring
Required value
The client ID.
- provider.clientSecretstring
Required value
The client’s secret.
- provider.locationstring
Required value
The name of the geo location to create all the resources. Getting available locations from Azure CLI:
az account list-locations -o table
- provider.subscriptionIdstring
Required value
The ID of the subscription.
- provider.tenantIdstring
Required value
The ID of the tenant.
- provider.clientIdstring
- serviceEndpointsarray of strings
The list of Service endpoints to associate with the subnet.
Virtual Network (VNet) service endpoint provides secure and direct connectivity to Azure services over an optimized route over the Azure backbone network. Endpoints allow you to secure your critical Azure service resources to only your virtual networks. Service Endpoints enables private IP addresses in the VNet to reach the endpoint of an Azure service without needing a public IP address on the VNet. More information about Service Endpoints can be found in the official documentation.
- Element of the arraystring
Allowed values:
Microsoft.AzureActiveDirectory
,Microsoft.AzureCosmosDB
,Microsoft.ContainerRegistry
,Microsoft.EventHub
,Microsoft.KeyVault
,Microsoft.ServiceBus
,Microsoft.Sql
,Microsoft.Storage
,Microsoft.Storage.Global
,Microsoft.Web
- Element of the arraystring
- sshAllowListarray of strings
A list of CIDR’s allowed to connect to nodes via ssh.
By default,
*
. - sshPublicKeystring
Required value
Public key to access nodes as
azureuser
. - standardobject
Settings for the
Standard
layout.- standard.natGatewayPublicIpCountinteger
The number of IP addresses for the NAT Gateway (pricing).
NAT Gateway
is not used if the value is0
.Default:
0
- standard.natGatewayPublicIpCountinteger
- subnetCIDRstring
Required value
A subnet from the
vNetCIDR
address space 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]))$
Example:
subnetCIDR: 10.1.2.0/24
- object
A list of tags in the
key: value
format to attach to all cluster resources.You have to re-create all the machines to add new tags if tags were modified in the running cluster.
- vNetCIDRstring
Required value
An address space of the virtual network in the CIDR format.
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]))$
Example:
vNetCIDR: 10.0.0.0/16
- zonesarray of strings
The globally restricted set of zones that this Cloud Provider works with.