Deploy the grafana-stakewise-dashboards helm chart on Azure Kubernetes Service (AKS)
TypeScriptTo accomplish the deployment of the
grafana-stakewise-dashboards
Helm chart on Azure Kubernetes Service (AKS), we'll first need an AKS cluster where we can install our Helm chart. We'll use Pulumi'sazure-native
package to achieve this. After the cluster is provisioned, we'll use Pulumi'skubernetes
package to deploy the Helm chart to the AKS cluster.Follow these steps in the program below:
- Provision an AKS cluster using Pulumi's
azure-native
resources. - Configure Pulumi to use the Kubernetes provider that connects to the newly created AKS cluster.
- Deploy the
grafana-stakewise-dashboards
Helm chart onto the AKS cluster.
The following Pulumi TypeScript program demonstrates these steps:
import * as pulumi from "@pulumi/pulumi"; import * as azure_native from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Provision an AKS cluster const resourceGroup = new azure_native.resources.ResourceGroup("myResourceGroup"); const aksCluster = new azure_native.containerservice.ManagedCluster("myAksCluster", { resourceGroupName: resourceGroup.name, agentPoolProfiles: [{ count: 1, maxPods: 110, mode: "System", name: "agentpool", osType: "Linux", vmSize: "Standard_DS2_v2", }], dnsPrefix: "myakscluster", kubernetesVersion: "1.18.14", linuxProfile: { adminUsername: "adminuser", ssh: { publicKeys: [{ keyData: "<SSH_PUBLIC_KEY>", // Replace with a valid SSH public key }], }, }, servicePrincipalProfile: { clientId: "<SP_APP_ID>", // Replace with the service principal's app ID secret: "<SP_SECRET>", // Replace with the service principal's secret }, }); // Export the kubeconfig for the AKS cluster export const kubeConfig = pulumi.all([resourceGroup.name, aksCluster.name]).apply(([rgName, clusterName]) => azure_native.containerservice.listManagedClusterUserCredentials({ resourceGroupName: rgName, resourceName: clusterName, }).then(creds => Buffer.from(creds.kubeconfigs[0].value, 'base64').toString()) ); // Step 2: Configure Pulumi to use the Kubernetes provider const k8sProvider = new k8s.Provider("k8sProvider", { kubeconfig: kubeConfig, }); // Step 3: Deploy the `grafana-stakewise-dashboards` Helm chart onto the AKS cluster const grafanaChart = new k8s.helm.v3.Chart("grafana-stakewise-dashboards", { chart: "grafana", version: "6.1.17", // Specify the chart version you want to deploy fetchOpts: { repo: "https://.../", // Add the Helm chart repository URL here }, values: { // Define any custom chart values here }, }, { provider: k8sProvider }); // Exporting the Grafana service endpoint export const grafanaServiceEndpoint = grafanaChart.getResourceProperty("v1/Service", "grafana-stakewise-dashboards", "status").apply(status => status.loadBalancer.ingress[0].ip);
In this code:
- We define an AKS cluster named
myAksCluster
with one system node pool. The node pool is running Linux on aStandard_DS2_v2
sized VM. You'll need to replace<SSH_PUBLIC_KEY>
with your own SSH public key, and theclientId
andsecret
with your service principal's details. - We then export the kubeconfig for the cluster, which will be used to set up a Pulumi Kubernetes provider.
- Next, we instantiate a Pulumi Kubernetes provider
k8sProvider
with the kubeconfig we exported. This provider is used to deploy Kubernetes resources to the AKS cluster. - We deploy the
grafana-stakewise-dashboards
Helm chart using Pulumi's Helm support in the Kubernetes provider. You must specify the version of the Helm chart you want to deploy and replace therepo
with the URL where the chart is hosted. - Finally, we export the IP address of the Grafana service, assuming it's exposed with a LoadBalancer service. You can change the service type and configuration by altering the values in the
values
property.
Please ensure you replace placeholders like
<SSH_PUBLIC_KEY>
,<SP_APP_ID>
, and<SP_SECRET>
with actual values.To run the Pulumi program:
- Ensure you have the Azure CLI installed and configured with the appropriate permissions and credentials.
- Install Pulumi and set up the TypeScript environment.
- Save the above code into a file called
index.ts
. - Run
npm install
to install the necessary packages. - Deploy the Pulumi program using
pulumi up
.
Note: Make sure you review and understand the code, as deploying it will create resources in Azure, which may incur costs.
Also, if you're new to Pulumi, familiarize yourself with the Pulumi's TypeScript language SDK and the
azure-native
andkubernetes
packages.- Provision an AKS cluster using Pulumi's