Deploy the vrouter helm chart on Azure Kubernetes Service (AKS)
TypeScriptTo deploy the vrouter Helm chart on an Azure Kubernetes Service (AKS) cluster, we will perform the following steps:
-
Provision an AKS cluster: Before deploying any Helm charts, we need a Kubernetes cluster. We'll provide the AKS cluster using the
azure-native.containerservice.ManagedCluster
resource. -
Install the Helm chart: With the AKS cluster in place, we'll deploy the vrouter Helm chart using Pulumi's
kubernetes.helm.v3.Chart
resource. This resource is a representation of a Helm chart that can be deployed to a Kubernetes cluster.
The following program is a complete Pulumi program written in TypeScript. It creates an AKS cluster and deploys the vrouter Helm chart to it. I'll describe each part of the program below.
import * as pulumi from "@pulumi/pulumi"; import * as azure_native from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Provision an AKS cluster // Replace <RESOURCE_GROUP_NAME> and <AKS_CLUSTER_NAME> with your desired resource group and AKS cluster names. const resourceGroupName = "<RESOURCE_GROUP_NAME>"; const aksClusterName = "<AKS_CLUSTER_NAME>"; const resourceGroup = new azure_native.resources.ResourceGroup("resourceGroup", { resourceGroupName: resourceGroupName, }); const aksCluster = new azure_native.containerservice.ManagedCluster("aksCluster", { resourceGroupName: resourceGroup.name, resourceName: aksClusterName, identity: { type: "SystemAssigned", }, agentPoolProfiles: [{ count: 2, maxPods: 110, mode: "System", name: "agentpool", osDiskSizeGB: 30, osType: "Linux", vmSize: "Standard_DS2_v2", }], dnsPrefix: pulumi.interpolate`${aksClusterName}-dns`, kubernetesVersion: "1.18.14", location: resourceGroup.location, }); // Step 2: Deploy the vrouter Helm chart // Assume that you have already configured the Helm chart repository that contains your vrouter chart. // If you haven't, you can do so using the `helm repo add` command with the Helm CLI tool. const vrouterChart = new k8s.helm.v3.Chart("vrouter-chart", { chart: "vrouter", version: "1.0.0", // Replace with the correct version of the chart fetchOpts: { repo: "http://<your-helm-chart-repo>", // Replace with the correct Helm chart repository URL }, }, { provider: new k8s.Provider("k8sProvider", { kubeconfig: aksCluster.kubeConfigRaw }) }); // Export the Kubeconfig and a service URL to access vRouter export const kubeConfig = aksCluster.kubeConfigRaw; export const vrouterServiceUrl = vrouterChart.getResourceProperty("v1/Service", "vrouter-service", "status").apply(status => status.loadBalancer.ingress[0].ip);
In the program above:
- We import the necessary Pulumi packages.
- We define the resource group and AKS cluster resources with
azure_native.resources.ResourceGroup
andazure_native.containerservice.ManagedCluster
, respectively. You need to replace<RESOURCE_GROUP_NAME>
and<AKS_CLUSTER_NAME>
with your actual values. - We then create a new Helm chart resource using
k8s.helm.v3.Chart
, which represents the vrouter Helm chart we wish to deploy. Make sure to replace"http://<your-helm-chart-repo>"
with the actual repository URL for your Helm chart. - The
kubeConfig
andvrouterServiceUrl
exports allow you to retrieve the kubeconfig for your AKS cluster and the IP address to access the vrouter service once deployed.
Note: It's essential to ensure that your Pulumi stack is configured with the required Azure credentials before running this program.
To apply this Pulumi program, save the code in a
index.ts
file, ensure you've installed Pulumi and logged in, initialized a new Pulumi project withpulumi new azure-typescript
, replaced placeholders with actual values, and then runpulumi up
. This will provision the specified AKS cluster and deploy the vrouter Helm chart on it.-