Deploy the litmus-agent helm chart on Azure Kubernetes Service (AKS)
TypeScriptDeploying the
litmus-agent
Helm chart on an Azure Kubernetes Service (AKS) cluster involves several steps. First, we'll provision an AKS cluster using Pulumi'sazure-native
package. After the cluster is up and running, we will configure the Kubernetes provider to deploy the Helm chart to the AKS cluster.Here's how you can achieve this using Pulumi with TypeScript:
-
Setting Up the AKS Cluster: This involves creating a new AKS cluster with the necessary configurations such as the location, node count, VM size, and Kubernetes version.
-
Installing the Helm chart: Once the AKS cluster is provisioned, we'll install the
litmus-agent
Helm chart into our cluster. We will use thekubernetes
package'shelm.v3.Chart
resource which allows you to install Helm charts in a Kubernetes cluster.
Here is the complete Pulumi program for deploying
litmus-agent
on AKS:import * as pulumi from '@pulumi/pulumi'; import * as azure_native from '@pulumi/azure-native'; import * as k8s from '@pulumi/kubernetes'; // Create a resource group if it doesn't exist const resourceGroup = new azure_native.resources.ResourceGroup('myResourceGroup', { resourceGroupName: 'myResourceGroup', location: 'East US', // Select the appropriate region }); // Deploy an AKS cluster const aksCluster = new azure_native.containerservice.ManagedCluster('myAKSCluster', { resourceGroupName: resourceGroup.name, location: resourceGroup.location, agentPoolProfiles: [{ count: 3, // Number of nodes (VMs) in the pool. Can be 1 for dev/test scenarios or more for production vmSize: 'Standard_DS2_v2', // The size of the Virtual Machines to use for the agents/node pools name: 'agentpool', osType: 'Linux', mode: 'System', }], dnsPrefix: 'myakscluster', // DNS prefix which is used to create the FQDN for the AKS cluster kubernetesVersion: '1.20.9', // Specify the version of Kubernetes }); // Export the AKS cluster's kubeconfig export const kubeconfig = pulumi.all([resourceGroup.name, aksCluster.name]).apply(([rgName, clusterName]) => { return azure_native.containerservice.listManagedClusterUserCredentials({ resourceGroupName: rgName, resourceName: clusterName, }); }).apply(creds => Buffer.from(creds.kubeconfigs[0].value, 'base64').toString()); // Set up the Kubernetes provider to deploy the Helm chart const k8sProvider = new k8s.Provider('k8sProvider', { kubeconfig: kubeconfig, }); // Deploy the litmus-agent Helm chart into the AKS cluster const litmusChart = new k8s.helm.v3.Chart('litmus-agent', { chart: 'litmus', version: '1.13.3', // Use the appropriate chart version fetchOpts: { repo: 'https://litmuschaos.github.io/litmus-helm/', // Helm chart repository URL }, }, { provider: k8sProvider }); export const litmusChartResourceName = litmusChart.metadata.apply(metadata => metadata.name);
Explanation:
- We start by importing the necessary Pulumi libraries for the Azure platform and Kubernetes.
- We create an Azure Resource Group, which is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed.
- We then define and create an AKS cluster using the
azure_native.containerservice.ManagedCluster
resource. The AKS cluster is configured with a specific DNS prefix, a node count, and VM size for the agent pool, and the version of Kubernetes you want to run. - After the AKS Cluster has been provisioned, we use
listManagedClusterUserCredentials
to retrieve thekubeconfig
, which is necessary to interact with your Kubernetes cluster. - We configure the Pulumi Kubernetes provider to communicate with the AKS cluster using the
kubeconfig
. - Using the Kubernetes provider, we deploy the
litmus-agent
Helm chart using thek8s.helm.v3.Chart
resource, specifying the chart name, version, and repository. - The resource names of the deployed Helm chart are exported as stack outputs.
Please ensure you replace the placeholder values like the Kubernetes version, node count, and the Helm chart version with values suitable for your use case. Note that before running this Pulumi program, you must have Pulumi and the necessary cloud provider CLI installed and configured with appropriate access rights.
-