Skip to main content

ยท 4 min read
Jorge Arteiro

Welcome to Day 4 of Week 4 of #CloudNativeNewYear!

The theme for this week is going further with Cloud Native. Yesterday we talked about Windows Containers. Today we'll explore addons and extensions available to Azure Kubernetes Services (AKS).

What We'll Coverโ€‹

  • Introduction
  • Add-ons
  • Extensions
  • Add-ons vs Extensions
  • Resources

Introductionโ€‹

Azure Kubernetes Service (AKS) is a fully managed container orchestration service that makes it easy to deploy and manage containerized applications on Azure. AKS offers a number of features and capabilities, including the ability to extend its supported functionality through the use of add-ons and extensions.

There are also integrations available from open-source projects and third parties, but they are not covered by the AKS support policy.

Add-onsโ€‹

Add-ons provide a supported way to extend AKS. Installation, configuration and lifecycle are managed by AKS following pre-determine updates rules.

As an example, let's enable Container Insights with the monitoring addon. on an existing AKS cluster using az aks enable-addons --addons CLI command

az aks enable-addons \
--name MyManagedCluster \
--resource-group MyResourceGroup \
--addons monitoring

or you can use az aks create --enable-addons when creating new clusters

az aks create \
--name MyManagedCluster \
--resource-group MyResourceGroup \
--enable-addons monitoring

The current available add-ons are:

  1. http_application_routing - Configure ingress with automatic public DNS name creation. Only recommended for development.
  2. monitoring - Container Insights monitoring.
  3. virtual-node - CNCF virtual nodes open source project.
  4. azure-policy - Azure Policy for AKS.
  5. ingress-appgw - Application Gateway Ingress Controller (AGIC).
  6. open-service-mesh - CNCF Open Service Mesh project.
  7. azure-keyvault-secrets-provider - Azure Key Vault Secrets Provider for Secret Store CSI Driver.
  8. web_application_routing - Managed NGINX ingress Controller.
  9. keda - CNCF Event-driven autoscaling project.

For more details, get the updated list of AKS Add-ons here

Extensionsโ€‹

Cluster Extensions uses Helm charts and integrates with Azure Resource Manager (ARM) to provide installation and lifecycle management of capabilities on top of AKS.

Extensions can be auto upgraded using minor versions, but it requires extra management and configuration. Using Scope parameter, it can be installed on the whole cluster or per namespace.

AKS Extensions requires an Azure CLI extension to be installed. To add or update this CLI extension use the following commands:

az extension add --name k8s-extension

and to update an existing extension

az extension update --name k8s-extension

There are only 3 available extensions:

  1. Dapr - CNCF Dapr project.
  2. Azure ML - Integrate Azure Machine Learning with AKS to train, inference and manage ML models.
  3. Flux (GitOps) - CNCF Flux project integrated with AKS to enable cluster configuration and application deployment using GitOps.

As an example, you can install Azure ML using the following command:

az k8s-extension create \
--name aml-compute --extension-type Microsoft.AzureML.Kubernetes \
--scope cluster --cluster-name <clusterName> \
--resource-group <resourceGroupName> \
--cluster-type managedClusters \
--configuration-settings enableInference=True allowInsecureConnections=True

For more details, get the updated list of AKS Extensions here

Add-ons vs Extensionsโ€‹

AKS Add-ons brings an advantage of been fully managed by AKS itself, and AKS Extensions are more flexible and configurable but requires extra level of management.

Add-ons are part of the AKS resource provider in the Azure API, and AKS Extensions are a separate resource provider on the Azure API.

Resourcesโ€‹

It's not too late to sign up for and complete the Cloud Skills Challenge!