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:
- http_application_routing - Configure ingress with automatic public DNS name creation. Only recommended for development.
- monitoring - Container Insights monitoring.
- virtual-node - CNCF virtual nodes open source project.
- azure-policy - Azure Policy for AKS.
- ingress-appgw - Application Gateway Ingress Controller (AGIC).
- open-service-mesh - CNCF Open Service Mesh project.
- azure-keyvault-secrets-provider - Azure Key Vault Secrets Provider for Secret Store CSI Driver.
- web_application_routing - Managed NGINX ingress Controller.
- 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:
- Dapr - CNCF Dapr project.
- Azure ML - Integrate Azure Machine Learning with AKS to train, inference and manage ML models.
- 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.