
A few weeks ago we announced that Isovalent Enterprise for Cilium is now available to Azure Kubernetes Service (AKS) customers as a one-click upgrade in the Microsoft Azure Marketplace and provide the full set of advanced Cilium features available to Azure customers. Today, In this tutorial you will learn how to deploy Isovalent Enterprise for Cilium on your AKS cluster from Azure Marketplace, Azure CLI, and Azure Resource Manager (ARM) templates. The tutorial will walk through installation on a new cluster and how to upgrade an existing AKS cluster running Azure CNI powered by Cilium to Isovalent Enterprise for Cilium.
What is Isovalent Enterprise for Cilium?
Isovalent Enterprise for Cilium is an enterprise-grade, hardened distribution of open-source projects Cilium, Hubble, and Tetragon, built and supported by the Cilium creators. Cilium enhances networking and security at the network layer, while Hubble ensures thorough network observability and tracing. Tetragon ties it all together with runtime enforcement and security observability, offering a well-rounded solution for connectivity, compliance, multi-cloud, and security concerns.
Why Isovalent Enterprise for Cilium?
For enterprise customers requiring support and usage of Advanced Networking, Security, and Observability features, “Isovalent Enterprise for Cilium” is recommended with the following benefits:
- Container Networking (CNI)
- Kubernetes Network Policy & Services
- Collaborative Support Agreement
- Advanced Network Policy & Encryption (DNS, L7, TLS/SNI, …)
- Ingress, Gateway API, & Service Mesh
- Multi-Cluster, Egress Gateway, BGP, Non-Kubernetes Workloads
- Hubble Network Observability (Metrics, Logs, Prometheus, Grafana, OpenTelemetry)
- SIEM Integration & Timescape Observability Storage
- Tetragon Runtime Security
- Enterprise-hardened Cilium Distribution, Training, 24×7 Enterprise Grade Support
Headline/Feature
This offering brings complete flexibility regarding access to Cilium features while retaining the advantageous ease of use and integration with Azure seamlessly. There are three ways to deploy Isovalent Enterprise for Cilium:
- Azure Marketplace
- Azure ARM Template
- Azure CLI
Installation via Azure Marketplace
Azure Marketplace is an online store that contains thousands of IT software applications and services built by industry-leading technology companies. In Azure Marketplace, you can find, try, buy, and deploy the software and services that you need to build new solutions and manage your cloud infrastructure. The catalog includes solutions for different industries and technical areas, free trials, and consulting services from Microsoft partners. Included among these solutions are Kubernetes application-based container offers. These offers contain applications that are meant to run on Kubernetes clusters such as Azure Kubernetes Service (AKS).
Pre-Requisites
The following prerequisites need to be taken into account before you proceed with this tutorial:
- An Azure account with an active subscription- Create an account for free
- AKS Cluster is up and running with Azure CNI powered by Cilium using either of the two options:
- The cluster can be created by Assigning IP addresses from an overlay network
- The cluster can be created by Assigning IP addresses from a virtual network
- Azure CLI version 2.41.0 or later. Run
az --version
to see the currently installed version. If you need to install or upgrade, see Install Azure CLI. - If using ARM templates or the REST API, the AKS API version must be 2022-09-02-preview or later.
- The kubectl command line tool is installed on your device. The version can be the same as or up to one minor version earlier or later than the Kubernetes version of your cluster. For example, if your cluster version is 1.26, you can use kubectl version 1.25, 1.26, or 1.27 with it. To install or upgrade kubectl, see Installing or updating kubectl.
- Isovalent Enterprise for Cilium as a marketplace extension is currently supported only in the following regions.
- Isovalent Enterprise for Cilium cannot be installed on AKS clusters that have been created with Service Principals.
- You need to upgrade your AKS clusters to managed identities.
- You need to ensure that the following network and FQDN/application rules are required for AKS cluster extensions to work seamlessly.
- In the case of a private AKS cluster, configure rules to access an Azure container registry behind a firewall. The endpoints could be:
- REST endpoints.
- Dedicated data endpoints.
- Example:
arcmktplaceprod.centralindia.data.azurecr.io
- Example:
- Registry FQDN ’s.
- New namespace being created:
- When an AKS cluster is either being created or upgraded to Isovalent Enterprise for Cilium, it results in the creation of an additional namespace
azure-extensions-usage-system
. Make sure that your Azure Policy whitelists this namespace. - When hubble is installed, it creates pods in the kube-system namespace by default. In case you have a SIEM like Microsoft Defender, you can see an error similar to “New container ‘hubble-relay’ in the kube-system namespace detected”.
- It is an ideal installation process for Cilium and Hubble components. With the default alerting rules, these errors are expected. Cilium and Hubble’s components use best practices to run within the kube-system namespace within the cluster.
- Adding an exception for such events on Microsoft Defender’s alerting rules can help in mitigating the errors. For such modifications, you can get in touch with Microsoft Support. This is true for any alternative External Attack Surface Management tools.
- When an AKS cluster is either being created or upgraded to Isovalent Enterprise for Cilium, it results in the creation of an additional namespace
Register resource providers
Before you deploy a container offer, you must register the Microsoft.ContainerService and Microsoft.KubernetesConfiguration providers on your subscription by using the az provider register
command:
Create a new AKS cluster with Isovalent Enterprise for Cilium
- In the Azure portal, search for Marketplace on the top search bar. In the results, under Services, select Marketplace.
- You can search for an offer or publisher directly by name, or you can browse all offers. To find Kubernetes application offers, on the left side under Categories select Containers.

- Type “Isovalent” in the search window and select the offer.

- On the Plans + Pricing tab, select an option. Ensure that the terms are acceptable, and then select Create.
- Select the respective subscription in which the new AKS cluster needs to be created.
- Select the resource group to deploy the cluster in. If a resource group doesn’t exist, click “Create New”.
- Click Create New Dev Cluster, select “Yes” and click on Next: Cluster Details.

- Provide a name for the AKS cluster and click “Next: Review + Create”

- Once Final validation is complete, click “Create”

- When the application is deployed, the portal will show “Your deployment is complete”, along with details of the deployment.

- Check the extensions installed on the cluster from Azure Portal. On the AKS cluster, navigate to “Extensions + applications” menu to verify the same.

- Verify the deployment by using the following command to list the extensions that are running on your cluster:
- Log in to the Azure portal, browse to Kubernetes Services, select the respective Kubernetes service created ( AKS Cluster), and click on connect. This will help you connect to your AKS cluster and set the individual Kubernetes context.
- Validate the version of Isovalent Enterprise for Cilium on your newly created cluster
Note– cee-indicates Cilium Enterprise Edition which is the Enterprise Version of Cilium offered by Isovalent that was installed on the cluster.
Upgrade an existing cluster
Note-
- You can upgrade an existing AKS cluster running Azure CNI powered by Cilium in the same region from where the upgrade is being attempted. The cluster being upgraded can be running Azure CNI powered by Cilium using either of the two options:
- The cluster can be created by Assigning IP addresses from an overlay network
- The cluster can be created by Assigning IP addresses from a virtual network
- The version on your cluster can be verified by:
Preparing for the upgrade
This section will guide you through the steps required to upgrade an existing AKS cluster running Azure CNI powered by Cilium to Isovalent Enterprise for Cilium.
- In the Azure portal, search for Marketplace on the top search bar. In the results, under Services, select Marketplace.
- You can search for an offer or publisher directly by name, or you can browse all offers. To find Kubernetes application offers, on the left side under Categories select Containers.

- Type “Isovalent” In the search window and select the offer.

- On the Plans + Pricing tab, select an option. Ensure that the terms are acceptable, and then select Create.
- Select the resource group in which the cluster exists that we will be upgraded.
- Click Create New Dev Cluster, select “No” and click Next: Cluster Details.

- As “No” was selected, this will result in an upgrade of an already existing cluster in that region
- The name for the AKS cluster will be auto-populated by clicking on the drop-down selection.
- Click “Next: Review + Create” Details.

- Once Final validation is complete, click “Create”

- When the application is deployed, the portal will show “Your deployment is complete”, along with details of the deployment.

- Check the extensions installed on the cluster from Azure Portal. On the AKS cluster, navigate to “Extensions + applications” menu to verify the same.

- Verify the deployment by using the following command to list the extensions that are running on your cluster:
- Log in to the Azure portal and browse to Kubernetes Services, select the respective Kubernetes service that was created ( AKS Cluster), and click on connect. This will help you connect to your AKS cluster and set the respective Kubernetes context.
- Validate the version of Isovalent Enterprise for Cilium on your newly upgraded cluster
Note– cee-indicates Cilium Enterprise Edition which is the Enterprise Version of Cilium offered by Isovalent that the cluster was upgraded to.
Manage the offer lifecycle
For lifecycle management, an Azure Kubernetes offer is represented as a cluster extension for AKS. For more information, see Cluster extensions for AKS.
Purchasing an offer from Azure Marketplace creates a new extension instance on your AKS cluster. View the extension instance from the cluster by using the following command:
Note– extension-name in this case is cilium
Remove an offer
You can delete a purchased plan for an Azure container offer by deleting the extension instance on the cluster. For example:
Installation via Azure Resource Manager (ARM) Template
With the move to the cloud, many teams have adopted agile development methods. These teams iterate quickly. They need to repeatedly deploy their solutions to the cloud, and know their infrastructure is in a reliable state.
To implement infrastructure as code for your Azure solutions, you can use Azure Resource Manager (ARM) templates. The template is a JavaScript Object Notation (JSON) file that defines the infrastructure and configuration for your project. The template uses declarative syntax, which lets you state what you intend to deploy without having to write the sequence of programming commands to create it. In the template, you specify the resources to deploy and the properties for those resources.
To deploy a Kubernetes application programmatically through ARM templates, a user needs to select the Kubernetes application and settings, generate an ARM template, accept legal terms and conditions, and finally deploy the ARM template.
Pre-Requisites
The following prerequisites need to be taken into account before you proceed with this tutorial:
- An Azure account with an active subscription- Create an account for free
- AKS Cluster is up and running with Azure CNI powered by Cilium using either of the two options:
- The cluster can be created by Assigning IP addresses from an overlay network
- The cluster can be created by Assigning IP addresses from a virtual network
- Azure CLI version 2.41.0 or later. Run az –version to see the currently installed version. If you need to install or upgrade, see Install Azure CLI.
- Templates are JavaScript Object Notation (JSON) files. To create templates, you need a good JSON editor. We recommend Visual Studio Code with the Azure Resource Manager Tools extension. If you need to install these tools, see Quickstart: Create ARM templates with Visual Studio Code.
- The kubectl command line tool is installed on your device. The version can be the same as or up to one minor version earlier or later than the Kubernetes version of your cluster. For example, if your cluster version is 1.26, you can use kubectl version 1.25, 1.26, or 1.27 with it. To install or upgrade kubectl, see Installing or updating kubectl.
- You need to ensure that the following network and FQDN/application rules are required for AKS cluster extensions to work seamlessly.
- Isovalent Enterprise for Cilium cannot be installed on AKS clusters that have been created with Service Principals.
- You need to upgrade your AKS clusters to managed identities.
- In the case of a private AKS cluster, configure rules to access an Azure container registry behind a firewall. The endpoints could be:
- REST endpoints.
- Dedicated data endpoints.
- Example:
arcmktplaceprod.centralindia.data.azurecr.io
- Example:
- Registry FQDN’s.
- New namespace being created:
- When an AKS cluster is either being created or upgraded to Isovalent Enterprise for Cilium, it results in the creation of an additional namespace
azure-extensions-usage-system
. Make sure that your Azure Policy whitelists this namespace. - When hubble is installed, it creates pods in the kube-system namespace by default. In case you have a SIEM like Microsoft Defender, you can see an error similar to “New container ‘hubble-relay’ in the kube-system namespace detected”.
- It is an ideal installation process for Cilium and Hubble components. With the default alerting rules, these errors are expected. Cilium and Hubble’s components use best practices to run within the kube-system namespace within the cluster.
- Adding an exception for such events on Microsoft Defender’s alerting rules can help in mitigating the errors. For such modifications, you can get in touch with Microsoft Support. This is true for any alternative External Attack Surface Management tools.
- When an AKS cluster is either being created or upgraded to Isovalent Enterprise for Cilium, it results in the creation of an additional namespace
Register resource providers
Before you deploy a container offer, you must register the Microsoft.ContainerService
and Microsoft.KubernetesConfiguration
providers on your subscription by using the az provider register command:
Select Kubernetes Application
First, you need to select the Kubernetes application that you want to deploy/upgrade in the Azure portal.
- In the Azure portal, search for Marketplace on the top search bar. In the results, under Services, select Marketplace.
- You can search for an application or publisher directly by name, or you can browse all applications. To find Kubernetes application applications, on the left side under Categories select Containers.

Generate ARM Template
- Type “Isovalent” in the search window and select the application.

- On the Plans + Pricing tab, select an option. Ensure that the terms are acceptable, and then select Create.
- Select the respective subscription in which the existing AKS cluster has already been created with Azure CNI powered by Cilium.
- Select the resource group to deploy the cluster in.
- Click Create New Dev Cluster, select “No” and click Next: Cluster Details.

Note- In case you would like to create a new AKS cluster, you need to click on the resource group and then select “Create New” under Resource Group. Also, if you would like to create a new cluster with Isovalent Enterprise for Cilium, you need to select the option “Yes” at the “Create new dev cluster” step.
- The AKS cluster name will be available through the drop-down and click on “Next: Review + Create”

- Once Final validation is complete, click > “View Automation Template” > click “Download”


- If all the validations have passed, you’ll see the ARM template in the editor.

- Download the ARM template and save it to a location on your computer.
- You need to note the following values which will be used later on in this tutorial
Plan-publisher
Plan-offerID
andPlan-name
- You need to exit out of the Azure portal screen and not Click on Create in the UI workflow as ARM templates will now take over the part of installing the “Cilium” extension and enabling the Enterprise features.
Editing the json file
- Unzip the ARM template file which will include a parameters.json file and edit the following fields:
- ClusterResourceName– The description should be the name of the AKS cluster that is either being created or an existing AKS cluster running on Azure CNI powered by Cilium.
- createNewCluster– Default value is set to false which means that there is an existing AKS cluster running on Azure CNI powered by Cilium which will be upgraded to Isovalent Enterprise for Cilium. The user can turn it to True in case they are creating a new cluster on Isovalent Enterprise for Cilium.
- extensionResourceName– The description should be the cilium extension and should not be edited.
- location– Description of the location of the AKS resource should be the location where the AKS resource has been created/ upgraded.
Accept terms and agreements
Before you can deploy a Kubernetes application, you need to accept its terms and agreements. To do so, use Azure CLI or Azure PowerShell. For this tutorial, we will be using Azure CLI to deploy the ARM template.
Be sure to use the values you copied prior to downloading the ARM template for plan-publisher
, plan-offerID
, and plan-name
in your command.
Values.yaml to enable Enterprise Features
- To enable Enterprise features, you can create a sample yaml file as shown in the example below:
Setting Enterprise Values for the ARM template
- You can download yq and inject custom helm values into the ARM template as Azure ARM templates follow a
key:value
pair syntax notation.- Users can use a tool of their choice as well to inject helm values.
- The output of this will be a json file which will be used to deploy the ARM template. Sample json file would look like as shown below which you have to copy.
Note– The output below is truncated.
Deploy ARM Template
- To start working with ARM templates, sign in with your Azure credentials in Azure CLI.
- If you have multiple Azure subscriptions, choose the subscription you want to use.
- Replace
SubscriptionName
with your subscription name. - You can also use your subscription ID instead of your subscription name.
- Replace
- To deploy the template, use either Azure CLI or Azure PowerShell. Use the resource group you created while creating the cluster on Azure CNI powered by Cilium.
- Template-File type is “json”.
- The deployment command returns results. Look for
ProvisioningState
to see whether the deployment succeeded.
Note– The output below is truncated.
Verify Deployment
- You can verify the deployment by exploring the resource group from the Azure portal.
- Sign in to the Azure portal.
- From the left menu, select Resource Groups.
- Check the box to the left of the resource group in which the AKS cluster resides.
- Select the resource group you used in the earlier procedure.
- Check the extensions installed on the cluster from Azure Portal. On the AKS cluster, go to the “Extensions + applications” menu to verify the settings.

- Optional– Log in to the Azure portal and browse to Kubernetes Services> select the respective Kubernetes service that was created ( AKS Cluster) and click on connect. This will help you connect to your AKS cluster and set the respective Kubernetes context.
- Verify the deployment by using the following command to list the extension and features that were enabled on your cluster after the successful deployment of the ARM template:
- Validating the version of Isovalent Enterprise for Cilium on your newly created cluster
Installation via Azure CLI
A user can create extension instances in an AKS cluster, setting required and optional parameters including options related to updates and configurations. You can also view, list, update, and delete extension instances.
Pre-Requisites
The following prerequisites need to be taken into account before you proceed with this tutorial:
- An Azure subscription.
- While creating the extension- Users need to make sure that they have an AKS Cluster up and running with Azure CNI powered by Cilium
- The cluster can be created by Assigning IP addresses from an overlay network
- The cluster can be created by Assigning IP addresses from a virtual network
- While updating the extension- Users need to make sure that they have an AKS Cluster up and running with Isovalent Enterprise for Cilium from the Azure marketplace.
- Isovalent Enterprise for Cilium as a marketplace extension is currently supported only in the following regions.
- You need to ensure that the following network and FQDN/application rules are required for AKS cluster extensions to work seamlessly.
- Isovalent Enterprise for Cilium cannot be installed on AKS clusters that have been created with Service Principals.
- You need to upgrade your AKS clusters to managed identities.
- In the case of a private AKS cluster, configure rules to access an Azure container registry behind a firewall. The endpoints could be:
- REST endpoints.
- Dedicated data endpoints.
- Example:
arcmktplaceprod.centralindia.data.azurecr.io
- Example:
- Registry FQDN’s.
- New namespace being created:
- When an AKS cluster is either being created or upgraded to Isovalent Enterprise for Cilium, it results in the creation of an additional namespace
azure-extensions-usage-system
. Make sure that your Azure Policy whitelists this namespace. - When hubble is installed, it creates pods in the kube-system namespace by default. In case you have a SIEM like Microsoft Defender, you can see an error similar to “New container ‘hubble-relay’ in the kube-system namespace detected”.
- It is an ideal installation process for Cilium and Hubble components. With the default alerting rules, these errors are expected. Cilium and Hubble’s components use best practices to run within the kube-system namespace within the cluster.
- Adding an exception for such events on Microsoft Defender’s alerting rules can help in mitigating the errors. For such modifications, you can get in touch with Microsoft Support. This is true for any alternative External Attack Surface Management tools.
- When an AKS cluster is either being created or upgraded to Isovalent Enterprise for Cilium, it results in the creation of an additional namespace
- The
Microsoft.ContainerService
andMicrosoft.KubernetesConfiguration
resource providers must be registered on your subscription. - To register these providers, run the following command:
- The latest version of the
k8s-extension
Azure CLI extensions. Install the extension by running the following command:
- If the extension is already installed, make sure you’re running the latest version by using the following command:
Select the Kubernetes application
You need to select the Kubernetes application that they want to deploy in the Azure portal. You also need to copy some of the details for later use.
- In the Azure portal, go to the Marketplace page.
- Select the Kubernetes application.
- Select the required plan.
- Select the Create button.
- Fill out all the application (extension) details.
- In the Review + Create tab, select Download a template for automation. If all the validations are passed, you’ll see the ARM template in the editor.
- Examine the ARM template:
- In the variables section, copy the
plan-name
,plan-publisher
,plan-offerID
, andclusterExtensionTypeName
values for later use. - In the resource
Microsoft.KubernetesConfiguration/extensions
‘ section, copy theconfigurationSettings
section for later use.
- In the variables section, copy the
Accept terms and agreements
- Before you can deploy a Kubernetes application, you need to accept its terms and agreements. To do so, use Azure CLI or Azure PowerShell. In this section, we will be using Azure CLI to deploy the ARM template.
- Be sure to use the values you copied prior to downloading the ARM template for
plan-publisher
,plan-offerID
, andplan-name
in your command.
Setting the correct Context
Log in to the Azure portal and browse to Kubernetes Services> select the respective Kubernetes service that was created ( AKS Cluster) and click on connect. This will help you connect to your AKS cluster and set the respective Kubernetes context.
Creating the extension
You can create a new extension instance with k8s-extension create
, passing in values for the mandatory parameters.
Update the extension
You can update an existing extension (Cilium) installed on an AKS cluster with Isovalent Enterprise for Cilium.
- Listing an existing extension
Enabling Enterprise Features
- You will be prompted for a prompt while enabling these features, select Yes.
Verifying the extension
Verify the k8s-extension
by using the following command to list the extension and features that were enabled on your cluster using Azure CLI.
Validation-Isovalent Enterprise for Cilium
Cluster and Cilium Health Check
- Check the status of the nodes and make sure they are in a “Ready” state
cilium-health
is a tool available in Cilium that provides visibility into the overall health of the cluster’s networking connectivity. Usecilium-health
to get visibility into the overall health of the cluster’s networking connectivity.
Cilium Connectivity Test
- Run
cilium connectivity test
(an automated test that checks that Cilium has been deployed correctly and tests intra-node connectivity, inter-node connectivity, and network policies) to verify that everything is working as expected.
Troubleshooting
You can always refer this article of how to troubleshoot errors that occur when you deploy cluster extensions for Azure Kubernetes Service (AKS).
Conclusion
Hopefully, this post gave you a good overview of how to deploy Isovalent Enterprise for Cilium in your AKS clusters. If you have any feedback on the solution, please share it with us. You’ll find us on the Cilium Slack channel.
Try it out
- Isovalent Enterprise for Cilium on the Azure marketplace.
Further Reading
- Tutorial on installing an AKS cluster running Azure CNI powered by Cilium
- Azure and Isovalent main partner page

Amit Gupta is a Senior Technical Marketing Engineer at Isovalent that is powering eBPF cloud-native networking and security. Amit has 20+ years of experience in Networking, Telecommunications, Cloud, Security, and Open-Source and has worked in the past with companies like Motorola, Juniper, Avi Networks (acquired by VMware), and Prosimo. He is keen to learn and try out new technologies that aid in solving day-to-day problems for operators and customers.
He has worked in the Indian start-up ecosystem for a long time and helps new folks in that area in his time outside of work. Amit is an avid runner and cyclist and also spends a considerable amount of time helping kids in orphanages.