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 svc/deckhouse-leader -c deckhouse -- deckhouse-controller 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: AzureClusterConfiguration
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
vNetCIDR: 10.0.0.0/16
nameservers:
  addresses:
  - 8.8.8.8
  - 8.8.4.4
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>"
  • apiVersion
    string

    Required value

    Allowed values: deckhouse.io/v1, deckhouse.io/v1alpha1

  • kind
    string

    Required value

    Allowed values: AzureClusterConfiguration

  • layout
    string

    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.

    Warning. After changing the parameters of the section, you need to run dhctl converge for the changes to take effect.

    • masterNodeGroup.instanceClass
      object

      Required value

      Partial contents of the AzureInstanceClass fields.

      • masterNodeGroup.instanceClass.acceleratedNetworking
        boolean

        Accelerated Networking provides up to 30Gbps in networking throughput.

        Default: false

      • masterNodeGroup.instanceClass.additionalTags
        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.diskSizeGb
        integer

        Instance root disk size in gibibytes.

        Example:

        diskSizeGb: 40
        
      • masterNodeGroup.instanceClass.diskType
        string

        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.enableExternalIP
        boolean

        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.etcdDiskSizeGb
        integer

        Etcd disk size in gibibytes.

        Default: 20

        Example:

        etcdDiskSizeGb: 20
        
      • masterNodeGroup.instanceClass.machineSize
        string

        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.urn
        string

        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).

        The list of OS and their versions supported by Deckhouse can be found in the documentation (take into account the Deckhouse version used).

    • masterNodeGroup.replicas
      integer

      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.zones
      array 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]

  • nameservers
    object

    DNS server configuration for the Azure virtual network used by the cluster nodes.

    • nameservers.addresses
      array of strings

      A list of DNS servers.

      Example:

      addresses:
      - 8.8.8.8
      - 8.8.4.4
      
      • Element of the array
        string

        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])$

  • nodeGroups
    array of objects

    An array of additional NodeGroups for creating static nodes (e.g., for dedicated front nodes or gateways).

    • nodeGroups.instanceClass
      object

      Required value

      Partial contents of the fields of the AzureInstanceClass.

      • nodeGroups.instanceClass.acceleratedNetworking
        boolean

        Accelerated Networking provides up to 30Gbps in networking throughput.

        Default: false

      • nodeGroups.instanceClass.additionalTags
        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.diskSizeGb
        integer

        Instance root disk size in gibibytes.

        Example:

        diskSizeGb: 40
        
      • nodeGroups.instanceClass.diskType
        string

        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.enableExternalIP
        boolean

        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.machineSize
        string

        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.urn
        string

        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).

        The list of OS and their versions supported by Deckhouse can be found in the documentation (take into account the Deckhouse version used).

    • nodeGroups.name
      string

      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.annotations
        object

        The same as the metadata.annotations standard field.

        Example:

        annotations:
          ai.fleet.com/discombobulate: "true"
        
      • nodeGroups.nodeTemplate.labels
        object

        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.taints
        array of objects

        The same as the .spec.taints field of the Node object.

        Warning. Only the effect, key, values fields are available.

        Example:

        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
        
        • nodeGroups.nodeTemplate.taints.effect
          string

          Allowed values: NoSchedule, PreferNoSchedule, NoExecute

        • nodeGroups.nodeTemplate.taints.key
          string
        • nodeGroups.nodeTemplate.taints.value
          string
    • nodeGroups.replicas
      integer

      Required value

      The number of nodes to create.

    • nodeGroups.zones
      array 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]

  • peeredVNets
    array 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.resourceGroupName
      string

      Required value

      The name of the resource group with the VNet.

    • peeredVNets.vnetName
      string

      Required value

      The name of the VNet.

  • provider
    object

    Required value

    Parameters for connecting to the Azure API.

    • provider.clientId
      string

      Required value

      The client ID.

    • provider.clientSecret
      string

      Required value

      The client’s secret.

      Keep in mind the expiration date of the secret. By default, it is valid for one year. Refer to the official documentation to create a service account with a longer secret expiration date.

    • provider.location
      string

      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.subscriptionId
      string

      Required value

      The ID of the subscription.

    • provider.tenantId
      string

      Required value

      The ID of the tenant.

  • serviceEndpoints
    array 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 array
      string

      Allowed values: Microsoft.AzureActiveDirectory, Microsoft.AzureCosmosDB, Microsoft.ContainerRegistry, Microsoft.CognitiveServices, Microsoft.EventHub, Microsoft.KeyVault, Microsoft.ServiceBus, Microsoft.Sql, Microsoft.Storage, Microsoft.Storage.Global, Microsoft.Web

  • sshAllowList
    array of strings

    A list of CIDR’s allowed to connect to nodes via SSH.

    By default, *.

  • sshPublicKey
    string

    Required value

    Public key to access nodes as azureuser.

  • standard
    object

    Settings for the Standard layout.

    • standard.natGatewayPublicIpCount
      integer

      The number of IP addresses for the NAT Gateway (pricing). NAT Gateway is not used if the value is 0.

      Default: 0

  • subnetCIDR
    string

    Required value

    A subnet from the vNetCIDR address space for cluster nodes.

    A virtual network can be segmented into one or more subnets up to the limits.

    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
    
  • tags
    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.

  • vNetCIDR
    string

    Required value

    An address space of the virtual network in the CIDR format.

    A virtual network is a virtual, isolated portion of the Azure public network. Each virtual network is dedicated to your subscription.

    Warning. If you are setting up peering, using vpn or linking networks of other clusters, network address spaces should not overlap.

    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
    
  • zones
    array of strings

    The globally restricted set of zones that this Cloud Provider works with.