Deploy the quay helm chart on Azure Kubernetes Service (AKS)
TypeScriptTo deploy the Quay Helm chart on Azure Kubernetes Service (AKS), you'll follow the steps:
- Set Up AKS: You'll begin by provisioning an AKS cluster where your applications will run.
- Install Helm: Helm is a package manager for Kubernetes, which you'll need to install on your local machine or wherever you're running Pulumi from to manage Helm charts.
- Deploy Quay Helm Chart: With the cluster set up and Helm installed, you will use Pulumi to deploy the Quay Helm chart to the AKS cluster.
Below is a Pulumi program in TypeScript that carries out these steps. In this example, we'll use the
azure-native
package because it provides native Azure resources that Pulumi can manage effectively.import * as pulumi from "@pulumi/pulumi"; import * as azureNative from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Create a new AKS cluster const resourceGroup = new azureNative.resources.ResourceGroup("aksResourceGroup"); const managedCluster = new azureNative.containerservice.ManagedCluster("aksCluster", { resourceGroupName: resourceGroup.name, agentPoolProfiles: [{ count: 1, vmSize: "Standard_DS2_v2", name: "agentpool", mode: "System", }], dnsPrefix: "aks-example", enableRBAC: true, kubernetesVersion: "1.18.14", // Additional AKS configuration here }); // Export the kubeconfig to access the AKS cluster export const kubeConfig = pulumi. all([managedCluster.name, resourceGroup.name]). apply(([clusterName, rgName]) => { return azureNative.containerservice.listManagedClusterUserCredentials({ resourceGroupName: rgName, resourceName: clusterName, }); }). apply(creds => Buffer.from(creds.kubeconfigs[0].value, "base64").toString()); // Step 2: Set up the Kubernetes provider using the AKS kubeconfig const k8sProvider = new k8s.Provider("k8sProvider", { kubeconfig: kubeConfig, }); // Step 3: Deploy Quay Helm chart using the k8s provider const quayChart = new k8s.helm.v3.Chart("quay", { chart: "quay", version: "3.3.0", // specify the version of the Quay chart you want to deploy fetchOpts:{ repo: "https://charts.bitnami.com/bitnami", // specify the repository hosting the Quay chart }, // Additional configurations such as value overrides can be provided here }, { provider: k8sProvider }); // Export the required resources and Endpoints export const aksClusterName = managedCluster.name; export const quayServiceHostname = quayChart.getResourceProperty("v1/Service", "quay-quay", "status").apply(status => status.loadBalancer.ingress[0].hostname);
-
Resources:
ResourceGroup
: A logical container for your Azure resources.ManagedCluster
: Represents the AKS cluster where your containerized applications run.Provider
(from@pulumi/kubernetes
): Configures the Kubernetes provider with the generated kubeconfig from your AKS cluster, which is necessary to interact with your AKS cluster through Pulumi.Chart
(from@pulumi/kubernetes/helm/v3
): Represents the Helm chart you wish to deploy, in this case, the Quay chart.
-
Exports:
kubeConfig
is the kubeconfig file necessary to interact with the AKS cluster. This confidential data can be used to administer the cluster withkubectl
or other Kubernetes management tools.aksClusterName
is the name of the AKS cluster generated by Pulumi for reference.quayServiceHostname
is the hostname for the Quay service, which can be used to access the Quay application once the Helm chart is deployed.
Note: Before running this Pulumi program, ensure you have authenticated with Azure and set up your Pulumi project. The Pulumi CLI should be configured appropriately with your Azure credentials.