Deploy the dapr-dashboard helm chart on Google Kubernetes Engine (GKE)
TypeScriptTo deploy the Dapr Dashboard Helm chart on Google Kubernetes Engine (GKE) using Pulumi, you'll need to follow these steps:
-
Set up a GKE cluster: You first need to have a GKE cluster where you can deploy your applications. You can create a GKE cluster using Pulumi's
google-native.container/v1.Cluster
resource. -
Install Helm and the Helm chart: Pulumi provides a resource called
kubernetes.helm.sh/v3.Chart
that allows you to deploy Helm charts to a Kubernetes cluster.
Here's a Pulumi program in TypeScript that performs these steps:
import * as gcp from "@pulumi/gcp"; import * as k8s from "@pulumi/kubernetes"; const name = "dapr-dashboard"; // Create a GKE cluster const cluster = new gcp.container.Cluster(name, { initialNodeCount: 2, minMasterVersion: "latest", nodeVersion: "latest", nodeConfig: { preemptible: true, machineType: "n1-standard-1", oauthScopes: [ "https://www.googleapis.com/auth/compute", "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring" ], }, }); // Export the Cluster name export const clusterName = cluster.name; // Export the Kubeconfig export const kubeconfig = cluster.name.apply(name => { const cluster = gcp.container.getCluster({ name: name, location: gcp.config.region, }); const context = `${gcp.config.project}_${gcp.config.zone}_${name}`; return `apiVersion: v1 clusters: - cluster: certificate-authority-data: ${cluster.masterAuth.clusterCaCertificate} server: https://${cluster.endpoint} name: ${context} contexts: - context: cluster: ${context} user: ${context} name: ${context} current-context: ${context} kind: Config preferences: {} users: - name: ${context} user: auth-provider: config: cmd-args: config config-helper --format=json cmd-path: gcloud expiry-key: '{.credential.token_expiry}' token-key: '{.credential.access_token}' name: gcp `; }); // Create a Kubernetes Provider using the GKE cluster as context const provider = new k8s.Provider(name, { kubeconfig: kubeconfig, }); // Deploy the Dapr Dashboard Helm chart const daprDashboardChart = new k8s.helm.v3.Chart("dapr-dashboard", { chart: "dapr-dashboard", version: "0.6.0", // specify the version you want to deploy fetchOpts: { repo: "https://dapr.github.io/helm-charts/", }, }, { provider }); // Export the Dapr Dashboard service endpoint export const daprDashboardServiceEndpoint = daprDashboardChart.getResourceProperty("v1/Service", "dapr-dashboard", "status").loadBalancer.ingress[0].ip;
Here's what each part of the code is doing:
-
GKE Cluster: It begins by creating a GKE cluster using the
gcp.container.Cluster
resource from the@pulumi/gcp
package. TheinitialNodeCount
specifies the number of nodes for the cluster, whileminMasterVersion
andnodeVersion
are set tolatest
to use the latest available version of GKE. -
Kubeconfig: Once the cluster is created, the code exports a kubeconfig file that will be used to interact with the cluster via kubectl or any Kubernetes client.
-
Kubernetes Provider: The
@pulumi/kubernetes
package is utilized to create a Pulumi Kubernetes provider, which is scoped using the provided kubeconfig. This is necessary for Pulumi to perform operations on the Kubernetes cluster. -
Dapr Dashboard Chart: Using the
k8s.helm.v3.Chart
resource, the Dapr Dashboard chart is deployed from the specified Helm chart repository. -
Service Endpoint: It then exports the Dapr Dashboard service endpoint. This service exposes an IP address that you can use to access the Dapr Dashboard UI.
Remember to install the required Pulumi packages for GCP and Kubernetes before you run this program:
npm install @pulumi/gcp @pulumi/kubernetes
Run the program using the Pulumi CLI:
pulumi up
This will provision the resources and deploy the Dapr Dashboard onto your GKE cluster.
-