Available in editions:  CE, BE, SE, SE+, EE

The module lifecycle stageGeneral Availability

The module is configured automatically based on the chosen placement strategy (the AzureClusterConfiguration custom resource). In most cases, you do not need to configure the module manually.

How to explicitly enable the module…

You may explicitly enable or disable the module in one of the following ways:

  • Via Deckhouse web UI. In the “System” → “System Management” → “Deckhouse” → “Modules” section, open the cloud-provider-azure module and enable (or disable) the “Module enabled” toggle. Save changes.

    Example:

    Module enable/disable interface

  • Via Deckhouse CLI (d8).

    Use the d8 system module enable command for enabling, or d8 system module disable command for disabling the module (you need Deckhouse CLI (d8), configured to work with the cluster).

    Example of enabling the module:

    d8 system module enable cloud-provider-azure
    
  • Using ModuleConfig cloud-provider-azure.

    Set spec.enabled to true or false in ModuleConfig cloud-provider-azure (create it if necessary);

    Example of a manifest to enable module cloud-provider-azure:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: cloud-provider-azure
    spec:
      enabled: true
    

How to configure the module…

You can configure the module in one of the following ways:

  • Via Deckhouse web UI.

    In the “System” → “System Management” → “Deckhouse” → “Modules” section, open the cloud-provider-azure module and enable the “Advanced Settings” switch. Fill in the required fields in the “Configuration” tab or specify the module settings in YAML format on the “YAML” tab, excluding the settings section. Save the changes.

    Example:

    Module Setup Interface

    You can also edit the ModuleConfig object cloud-provider-azure on the “YAML” tab in the module settings window (“System” → “System Management” → “Deckhouse” → “Modules”, open the module cloud-provider-azure) by specifying the schema version in the spec.version parameter and the necessary module parameters in the spec.settings section.

  • Via Deckhouse CLI (d8) (requires Deckhouse CLI (d8) configured to work with the cluster).

    Edit the existing ModuleConfig cloud-provider-azure (for more details on configuring Deckhouse, see the documentation) by executing the following command:

    d8 k edit mc cloud-provider-azure
    

    Make the necessary changes in the spec.settings section. If necessary, specify the schema version in the spec.version parameter. Save the changes.

    You can also create a file with manifest for ModuleConfig cloud-provider-azure using the example below. Fill in the spec.settings section with the required module parameters. If necessary, specify the schema version in the spec.version parameter.

    Apply the manifest using the following command (indicate the manifest file name):

    d8 k apply -f <FILENAME>
    

    Example of a manifest for ModuleConfig cloud-provider-azure:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: cloud-provider-azure
    spec:
      version: 1
      enabled: true
      settings: # Module parameters from the "Parameters" section below.
    

You can configure the number and parameters of ordering machines in the cloud via the NodeGroup custom resource of the node-manager module. Also, in this custom resource, you can specify the instance class’s name for the above group of nodes (the cloudInstances.ClassReference parameter). In the case of the Azure cloud provider, the instance class is the AzureInstanceClass custom resource that stores specific parameters of the machines.

The module automatically creates the following StorageClasses:

Name Disk type
managed-standard-ssd StandardSSD_LRS
managed-standard Standard_LRS
managed-premium Premium_LRS

It allows you to configure additional StorageClasses for volumes with configurable IOPS and Throughput. Also, you can filter out the unnecessary StorageClasses via the exclude parameter.

An example of Storage Class configuration:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: cloud-provider-azure
spec:
  version: 1
  enabled: true
  settings:
    storageClass:
      provision:
      - name: managed-ultra-ssd
        diskIOPSReadWrite: 600
        diskMBpsReadWrite: 150
      exclude:
      - managed-standard.*
      - managed-premium
      default: managed-ultra-ssd

Parameters

Schema version: 1

  • settings
    object
    • settings.storageClass
      object
      • settings.storageClass.default
        Deprecated
        string

        The name of StorageClass that will be used in the cluster by default.

        If the parameter is omitted, the default StorageClass is either:

        • existing StorageClass present in the cluster that has the default annotation;
        • the first (in lexicographic order) StorageClass created by the module.

        Parameter is deprecated. Instead, use the global parameter global.defaultClusterStorageClass.

        Example:

        default: pd-ssd-not-replicated
        
      • settings.storageClass.exclude
        array of strings

        A list of StorageClass names (or regex expressions for names) to exclude from the creation in the cluster.

        Example:

        exclude:
        - pd-standard.*
        - pd-ssd-replicated
        
      • settings.storageClass.provision
        array of objects

        Defines additional StorageClasses for Azure ultra disks.

        • settings.storageClass.provision.cachingMode
          string

          String value that corresponds to the desired caching mode. If expected disk size is more than 4 TiB, you have to set cachineMode: None.

          Check out Azure documentation for more information.

          Allowed values: None, ReadOnly, ReadWrite

        • settings.storageClass.provision.diskIOPSReadWrite
          number

          Required value

          Disk IOPS (limit of 300 IOPS/GiB, up to a maximum of 160 K IOPS per disk).

        • settings.storageClass.provision.diskMBpsReadWrite
          number

          Required value

          Disk throughput in MBps (limit of a single disk is 256 KiB/s for each provisioned IOPS).

        • settings.storageClass.provision.name
          string

          Required value

          The name of the class to create.

        • settings.storageClass.provision.tags
          array of objects

          Azure disk tags.

          Example:

          tags:
          - key: key1
            value: val1
          - key: key2
            value: val2
          
          • settings.storageClass.provision.tags.key
            string

            Pattern: ^[A-Za-z0-9][-A-Za-z0-9_.]*$

          • settings.storageClass.provision.tags.value
            string

            Pattern: ^[A-Za-z0-9][-A-Za-z0-9_.]*$

        • settings.storageClass.provision.type
          string

          Required value

          Azure disk storage account type.

          Check out Azure documentation for more information.

          Allowed values: UltraSSD_LRS