Deploy the wildcard-tls helm chart on Azure Kubernetes Service (AKS)
TypeScriptTo deploy the wildcard-tls Helm chart on Azure Kubernetes Service (AKS) using Pulumi, you can follow the steps below. We will use the
kubernetes
package for deploying Helm charts and theazure-native
package to represent the AKS cluster resource.Prerequisites:
Before running the program, you should have the following prerequisites:
- An Azure account with the necessary permissions to create AKS clusters
- The
az
CLI tool installed and configured with your Azure account credentials - Node.js and npm installed
- Pulumi CLI installed
- Helm CLI installed (if you want to manage Helm charts directly)
Program Explanation:
This Pulumi program performs the following actions:
- Create an AKS Cluster: Using the
azure-native.containerservice.ManagedCluster
class, we create an instance of AKS. - Deploy a Helm Chart: Once the cluster is available, we deploy the wildcard-tls Helm chart using the
kubernetes.helm.v3.Chart
class from the@pulumi/kubernetes
package.
Let's go ahead and write the program.
import * as pulumi from "@pulumi/pulumi"; import * as azure_native from "@pulumi/azure-native"; import * as kubernetes from "@pulumi/kubernetes"; // Create an Azure Resource Group const resourceGroup = new azure_native.resources.ResourceGroup("aksResourceGroup"); // Create an AKS cluster const cluster = new azure_native.containerservice.ManagedCluster("aksCluster", { // Specify the resource group name resourceGroupName: resourceGroup.name, // Define the properties of the AKS cluster agentPoolProfiles: [{ count: 1, maxPods: 110, mode: "System", name: "agentpool", osDiskSizeGB: 30, vmSize: "Standard_DS2_v2", }], dnsPrefix: "aksk8s", // Enable RBAC for secure Kubernetes interactions enableRbac: true, // Define the Linux profile for the cluster linuxProfile: { adminUsername: "aksuser", ssh: { publicKeys: [{ keyData: "ssh-rsa ...", // replace with your actual SSH public key }], }, }, // Use the latest Kubernetes version available for AKS // This should be replaced with your desired version kubernetesVersion: "1.21.2", }); // Create a Kubernetes provider that uses the AKS cluster credentials const k8sProvider = new kubernetes.Provider("k8sProvider", { kubeconfig: cluster.kubeConfigRaw, }); // Deploy the Helm chart using the AKS cluster as the provider const wildcardTlsChart = new kubernetes.helm.v3.Chart("wildcard-tls", { chart: "wildcard-tls", version: "1.0.0", // Specify the chart version you wish to deploy namespace: "default", // Define the namespace where the Helm chart will be installed // Set any values here that the chart requires values: { // ... }, }, { provider: k8sProvider }); // Export the kubeconfig of the cluster export const kubeConfig = cluster.kubeConfigRaw; // Export the public endpoint of the AKS cluster export const aksClusterEndpoint = cluster.privateFQDN;
The "..." should be replaced with your configuration details. Specifically, you need to replace the SSH public key with your own, and input any required values for the Helm chart deployment.
Deployment:
Once you have this program written, you can deploy it using the Pulumi CLI. Simply navigate to the directory where your Pulumi program is located and run
pulumi up
. This command will provision the resources defined in the program, such as the AKS cluster and the Helm chart.Pulumi will prompt you for confirmation before applying the changes. Once you approve, Pulumi will begin the deployment process. You can monitor the progress in your command line interface or through the Pulumi Console.
Note on Helm Chart:
Ensure that the wildcard-tls Helm chart you mentioned is available in a Helm repository, or you have the necessary configuration to deploy it. You may need to add the repository or specify a custom
fetchOpts
field if the chart is not in the default Helm repositories.