Deploy the rancher-vsphere-csi helm chart on Azure Kubernetes Service (AKS)
TypeScriptIn this program, we are deploying a Helm chart for the Rancher vSphere CSI on an Azure Kubernetes Service (AKS) cluster. The vSphere Container Storage Interface (CSI) plugin provides a means for orchestrating storage provisioning in a vSphere environment for container orchestrators that implement CSI like Kubernetes.
The program has the following steps:
- Provision an Azure Kubernetes Service (AKS) cluster using the
ProvisionedCluster
resource. This will establish your Kubernetes environment where workloads can be deployed. - After the AKS cluster is up and running, you will be able to deploy applications using Helm charts to the Kubernetes cluster. Pulumi provides a
Chart
resource within its Kubernetes provider that allows you to deploy a Helm chart easily.
Let's go through the code. This Pulumi TypeScript program will create an AKS cluster and then deploy the Rancher vSphere CSI Helm chart onto it:
import * as pulumi from "@pulumi/pulumi"; import * as azure_native from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; // Create an AKS cluster. const cluster = new azure_native.containerservice.ManagedCluster("aksCluster", { // Specify the required resource arguments. resourceGroupName: "myResourceGroup", // Your Azure resource group kubernetesVersion: "1.18.14", // Specify your desired Kubernetes version agentPoolProfiles: [{ count: 3, // The number of workers nodes vmSize: "Standard_DS2_v2", // The size of the worker nodes name: "agentpool", // Name of the agent pool mode: "System", // Mode of the agent pool }], dnsPrefix: "myakscluster", // A DNS prefix for your AKS cluster }); // After creating the AKS cluster, we use its kubeconfig to create a Pulumi Kubernetes provider. const k8sProvider = new k8s.Provider("k8sProvider", { kubeconfig: cluster.kubeConfigRaw, }); // Using the Kubernetes provider, we can now create resources within the AKS cluster. // Here we use the Chart resource to deploy the Rancher vSphere CSI helm chart. const vsphereCsiChart = new k8s.helm.v3.Chart("rancher-vsphere-csi", { chart: "rancher-vsphere-csi", // Name of the Helm chart version: "2.0.0", // Version of the Helm chart fetchOpts: { repo: "https://charts.rancher.io", // Helm chart repository URL }, }, { provider: k8sProvider }); // Export the Kubernetes cluster name and its configuration export const kubeconfig = cluster.kubeConfigRaw; export const clusterName = cluster.name;
Ensure you have Pulumi CLI installed and configured for Azure. You'll also need Node.js and npm to run this TypeScript program. Run
npm install
to install the necessary packages including Pulumi SDKs for Azure and Kubernetes.Replace the placeholder values such as
myResourceGroup
andmyakscluster
with your specific values for resource group and DNS prefix. You may also need to adjust the Kubernetes version and node sizes to match the ones supported by your Azure subscription and your workload requirements.This program will not work as-is if the required Helm chart or the version is not available in the specified repo. You may need to change the
chart
andversion
accordingly.After deployment is complete, you can verify the
rancher-vsphere-csi
Helm chart has been deployed. Thekubeconfig
of the created AKS can be used to manipulate the cluster viakubectl
.- Provision an Azure Kubernetes Service (AKS) cluster using the