Enabling Azure as a cloud provider

To enable Azure as a cloud provider, review the Azure requirements. Then configure your IBM® Cloud Private cluster to update the Kubernetes, Calico, and cloud provider settings.

Update the Kubernetes and Calico settings

  1. Open the config.yaml file in the /<installation_directory>/cluster folder.
  2. To modify the Kubernetes settings, update the file with the following parameters:

     kube_controller_manager_extra_args:
     - --allocate-node-cidrs=true
     kubelet_extra_args:
     - --enable-controller-attach-detach=true
    
  3. To modify the Calico settings, update the file with the following parameters:

     calico_ip_autodetection_method: can-reach=<ip>
     calico_ipam_subnet: usePodCidr
     calico_ipam_type: host-local
     calico_ipip_mode: Always
     calico_networking_backend: none
    

The following table contains information about the Calico parameters:

Parameters Example Description
calico_ip_autodetection_method can-reach= The method to use to autodetect the IPv4 address for this host.

Note: Be sure to review the network documentation on the parameter. See Network settings for more information.

calico_ipam_subnet usePodCidr The IPAM subnet cidr. Set this value to usePodCidr.
calico_ipam_type host-local The filename of the IPAM plugin executable. Set this value to host-local.
calico_ipip_mode Always Allows Calico to be run on IP over IP mode. This setting is also needed in some cloud environment such as OpenStack, where virtual machines are not allowed to work as routers. Set this value to Never.
calico_networking_backend none Describes which BGP networking backend to use. Set this value to none.

Configure the Azure provider settings

  1. Open the config.yaml file in the /<installation_directory>/cluster folder.
  2. Add the azure key with the following subkeys:

     azure:
       cloud_provider_conf:
       cloud_provider
    
    • The cloud_provider_conf section describes the cloud provider settings that are passed to the kubelet service and Kubernetes apiserver.
    • The cloud_provider_controller_conf section describes the settings that are passed to the Kubernetes controller manager.
    • Installing creates the corresponding JSON file with the listed values and placed into the /etc/cfc/conf folder.
  3. In the config.yaml file, update the cloud_provider_conf and cloud_provider_controller_conf key with the Azure cloud provider configuration parameters.

See the Azure cloud provider configuration Opens in a new tab documentation for a description of all the supported cloud provider parameters for the Azure provider.

Your config.yaml file might resemble the following content:

  azure:
    cloud_provider_conf:
      resourceGroup: "<name>"
      subscriptionId: "0000000-0000-0000-0000-000000000000"
      tenantId: "0000000-0000-0000-0000-000000000000"
      useManagedIdentityExtension: true
      useInstanceMetadata: true
    cloud_provider_controller_conf:
      aadClientId: "0000000-0000-0000-0000-000000000000"
      aadClientSecret: "0000000-0000-0000-0000-000000000000"
      cloud: "AzurePublicCloud"
      cloudProviderBackoff: false
      location: "eastus"
      resourceGroup: "<name>"
      routeTableName: "<name>"
      securityGroupName: "<name>"
      subscriptionId: "0000000-0000-0000-0000-000000000000"
      subnetName: "<name>"
      tenantId: "0000000-0000-0000-0000-000000000000"
      useManagedIdentityExtension: false
      useInstanceMetadata: true
      vnetName: "<name>"
      vnetResourceGroup: ""

Azure Cloud Provider is enabled.

IBM Cloud Private on Azure starts incorrectly in a high availability environment. For more information, see IBM Cloud Private on Azure starts incorrectly after installation.