Deploy the prometheus-ci-metadata-exporter helm chart on Azure Kubernetes Service (AKS)
TypeScriptTo deploy the
prometheus-ci-metadata-exporter
Helm chart on Azure Kubernetes Service (AKS), you will need to perform the following steps:- Set up an AKS cluster in Azure if you don't already have one.
- Install and configure
kubectl
to interact with the AKS cluster. - Install the Pulumi CLI and set up Pulumi to work with your Azure account.
- Use Pulumi to deploy the Helm chart onto the AKS cluster.
Below is a Pulumi TypeScript program that will create an AKS cluster and deploy the requested Helm chart onto it. Please ensure you have the necessary prerequisites installed (Pulumi CLI, Azure CLI,
kubectl
) and configured before running this program.Here is a step-by-step explanation of the TypeScript program:
- We first import the necessary modules from
@pulumi/azure-native
,@pulumi/kubernetes
, and@pulumi/pulumi
. - We then create an AKS cluster by defining a new
azure-native.containerservice.ManagedCluster
resource. - Once the cluster is created, we retrieve the credentials required to configure
kubectl
usingpulumi.all
method. - After configuring
kubectl
, we can create akubernetes.Provider
instance. This is necessary for Pulumi to communicate with the AKS cluster to manage Kubernetes resources. - Finally, we use the
kubernetes.helm.v3.Chart
resource to deploy theprometheus-ci-metadata-exporter
Helm chart onto the AKS cluster.
import * as azure from "@pulumi/azure-native"; import * as kubernetes from "@pulumi/kubernetes"; import * as pulumi from "@pulumi/pulumi"; // Create an Azure Resource Group const resourceGroup = new azure.resources.ResourceGroup("my-resource-group"); // Create an AKS cluster const cluster = new azure.containerservice.ManagedCluster("my-aks-cluster", { resourceGroupName: resourceGroup.name, agentPoolProfiles: [{ count: 1, vmSize: azure.containerservice.VMSizeTypes.Standard_DS2_v2, mode: "System", name: "agentpool" // Name of the default node pool }], dnsPrefix: pulumi.interpolate`${resourceGroup.name}-kube`, enableRBAC: true, // Ensure that Kubernetes RBAC is enabled for security }); // Export the AKS cluster name export const clusterName = cluster.name; // Export the kubeconfig to access the AKS cluster export const kubeconfig = pulumi.all([cluster.name, resourceGroup.name]) .apply(([clusterName, rgName]) => azure.containerservice.listManagedClusterUserCredentials({ resourceName: clusterName, resourceGroupName: rgName, })).apply(creds => { const encoded = creds.kubeconfigs[0].value; const buff = Buffer.from(encoded, 'base64'); return buff.toString('utf-8'); }); // Use the kubeconfig to create a new kubernetes provider for this cluster const k8sProvider = new kubernetes.Provider("k8s-provider", { kubeconfig: kubeconfig, }); // Deploy the `prometheus-ci-metadata-exporter` Helm chart on AKS const chart = new kubernetes.helm.v3.Chart("prometheus-ci-metadata-exporter", { chart: "prometheus-ci-metadata-exporter", version: "1.0.0", // Replace with the appropriate chart version fetchOpts: { // Assuming the chart is within the 'stable' repository; change according to the actual location repo: "https://kubernetes-charts.storage.googleapis.com/" }, }, { provider: k8sProvider }); // Optionally, export URLs or other outputs from the chart, such as a service's LoadBalancer IP export const chartResources = chart.getResource("v1/Service", "prometheus-ci-metadata-exporter"); // Run `pulumi up` to deploy this stack.
Running the Pulumi Program
- Save the above program in a file called
index.ts
. - Open a terminal in the same directory as your
index.ts
file. - Run
pulumi stack init
to create a new stack, which is an isolated environment for your project. - Run
pulumi up
. This command will show you a preview of the resources Pulumi plans to create. - If the preview looks correct, select
yes
to deploy your infrastructure.
Once the deployment is successful, Pulumi will output any exported variables, such as the AKS cluster name and kubeconfig.
Notes
- Replace
1.0.0
and therepo
infetchOpts
with the correct version and Helm repository URL for theprometheus-ci-metadata-exporter
chart. - Make sure to have the correct permissions and configurations set for your Azure account to create these resources.
- Kubernetes RBAC is enabled in this program for security purposes. Ensure you have a plan for managing Kubernetes RBAC for your cluster.
- Consider factors such as desired node count, VM size, and Kubernetes version as per your application's needs when creating an AKS cluster. They can be adjusted in the
agentPoolProfiles
property.
This program will set up the AKS cluster and configure Pulumi to deploy the specified Helm chart. After deployment, you can use
kubectl
with the exported kubeconfig to manage your Kubernetes cluster and deployed resources.