Deploy the argo-app-bootstrap helm chart on Azure Kubernetes Service (AKS)
TypeScriptTo deploy the
argo-app-bootstrap
Helm chart on an Azure Kubernetes Service (AKS) cluster using Pulumi, we'll need to follow these steps:- Initialize a new Pulumi project for the appropriate cloud and programming language (TypeScript in our case).
- Set up an Azure Resource Group which will be a container that holds related resources for an Azure solution.
- Define an AKS cluster using Pulumi's AKS resource types.
- Configure the Kubernetes provider to interact with the AKS cluster.
- Use the Helm chart resource to install the
argo-app-bootstrap
chart into the AKS cluster.
Below is the TypeScript code that will create an AKS cluster and deploy the
argo-app-bootstrap
Helm chart on it. Before running this program, ensure that you have set up your Azure credentials with Pulumi. This program also assumes that you haveargo-app-bootstrap
Helm chart available in a Helm repository which Pulumi can access.Now let's see the Pulumi program that accomplishes this:
import * as azure from "@pulumi/azure"; import * as azuread from "@pulumi/azuread"; import * as pulumi from "@pulumi/pulumi"; import * as k8s from "@pulumi/kubernetes"; // Create an Azure Resource Group const resourceGroup = new azure.core.ResourceGroup("myResourceGroup", { location: "West US", }); // Create an Azure AD Application for AKS const app = new azuread.Application("myApp", {}); // Create a service principal for the AD application const sp = new azuread.ServicePrincipal("myServicePrincipal", { applicationId: app.applicationId, }); // Generate a random password for the service principal const spPassword = new azuread.ServicePrincipalPassword("myServicePrincipalPassword", { servicePrincipalId: sp.id, endDate: "2099-01-01T00:00:00Z", // This could also be defined using Pulumi's `pulumi.interpolate` function }); // Now define the Kubernetes cluster itself using AKS const cluster = new azure.containerservice.KubernetesCluster("myK8sCluster", { resourceGroupName: resourceGroup.name, defaultNodePool: { name: "default", nodeCount: 2, vmSize: "Standard_D2_v2", // You can size this appropriately for your workload }, dnsPrefix: "mykube", // Replace with a prefix of your choice linuxProfile: { adminUsername: "adminuser", sshKey: { keyData: "<YOUR_SSH_PUBLIC_KEY_HERE>", // Replace with a SSH public key }, }, servicePrincipal: { clientId: app.applicationId, clientSecret: spPassword.value, }, }); // Export the cluster kubeconfig export const kubeconfig = cluster.kubeConfigRaw; // Using the cluster kubeconfig, configure a Kubernetes provider const k8sProvider = new k8s.Provider("k8sProvider", { kubeconfig: kubeconfig, }); // Now deploy the `argo-app-bootstrap` Helm chart const argoAppBootstrapChart = new k8s.helm.v3.Chart("argo-app-bootstrap", { chart: "argo-app-bootstrap", // Assuming the chart is in a Helm repo added to your Helm client // Lastly, verify the correct path or url and version for your chart fetchOpts: { repo: "https://charts.argo.com/app-bootstrap", }, version: "1.0.0", // Specify the exact chart version }, {provider: k8sProvider}); // Output the public URL for the Argo CD frontend service if it's part of your Helm chart export const argoFrontendServiceUrl = argoAppBootstrapChart.getResourceProperty("v1/Service", "my-argo-cd-argo-cd-server", "status");
Notes:
- Replace
<YOUR_SSH_PUBLIC_KEY_HERE>
with your actual SSH public key. - The Helm chart version and repo URL are placeholders; specify the correct values for your use case.
- The code above assumes you have permissions to create these resources in Azure.
To run this program:
- Install Pulumi.
- Set up the Azure CLI and log in with
az login
to ensure the Pulumi can authenticate with Azure. - Create a new directory for the Pulumi project, change into it, and run
pulumi new typescript
. - Replace the generated
index.ts
file with the code provided above. - Run
pulumi up
to create the resources and deploy the Helm chart.
The
pulumi up
command will show you a preview of the resources that will be created. Confirm the deployment to proceed. After the deployment has finished, you will receive the outputs that you can use to interact with your AKS cluster and the Argo CD application.