Deploy the redhat-perl-imagestreams helm chart on Google Kubernetes Engine (GKE)
TypeScriptTo deploy the
redhat-perl-imagestreams
Helm chart on Google Kubernetes Engine (GKE), you need to set up a few things:- A GKE cluster
- The Helm chart deployment
Step 1: Creating a GKE Cluster
We'll start by creating a GKE cluster. In this program, I'll be using the
google-native.container/v1.Cluster
resource which allows us to define a Kubernetes cluster in Google Cloud Platform (GCP). This resource represents a Kubernetes cluster configuration including the nodes and node pools configurations.Learn more about
google-native.container/v1.Cluster
Step 2: Deploying a Helm Chart
For deploying a Helm chart, we'll use the
harness.service.Helm
resource which is part of the Harness provider. This resource allows you to deploy applications on Kubernetes using Helm charts. Using Helm charts is a common way to package, configure, and deploy applications on Kubernetes clusters.Learn more about
harness.service.Helm
Below, we have a Pulumi TypeScript program that sets up a GKE cluster and deploys the
redhat-perl-imagestreams
Helm chart to it:import * as gcp from "@pulumi/gcp"; import * as kubernetes from "@pulumi/kubernetes"; import * as pulumi from "@pulumi/pulumi"; // Step 1: Create a GKE cluster const cluster = new gcp.container.Cluster("pulumi-gke-cluster", { initialNodeCount: 2, nodeVersion: "latest", minMasterVersion: "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; // Get the kubeconfig from the GKE cluster const kubeconfig = pulumi. all([cluster.name, cluster.endpoint, cluster.masterAuth]). apply(([name, endpoint, masterAuth]) => { const context = `${gcp.config.project}_${gcp.config.zone}_${name}`; return `apiVersion: v1 clusters: - cluster: certificate-authority-data: ${masterAuth.clusterCaCertificate} server: https://${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 `; }); // Step 2: Deploy the Helm chart using the kubeconfig obtained from the GKE cluster const chart = new kubernetes.helm.v3.Chart("redhat-perl-imagestreams", { chart: "redhat-perl-imagestreams", version: "x.x.x", // Replace with the actual chart version fetchOpts: { repo: "https://<chart-repo-url>", // Replace with the actual Helm chart repository URL }, }, { provider: new kubernetes.Provider("k8s-provider", { kubeconfig }) }); // Export the Chart name export const chartName = chart.getResourceName("redhat-perl-imagestreams");
Replace the placeholders
x.x.x
andhttps://<chart-repo-url>
with the actual version of theredhat-perl-imagestreams
chart and the URL of the Helm chart repository where the chart is hosted. You can find this information on the Helm repository or Chart documentation.The above program does the following:
- It declares a GKE cluster with two nodes.
- It generates a kubeconfig file which is required for the Kubernetes provider to interact with the GKE cluster.
- It creates a Helm chart resource that deploys the
redhat-perl-imagestreams
Helm chart using thekubeconfig
generated from the GKE cluster.
To run this program, save it in a TypeScript file, e.g.,
index.ts
. You need to have Pulumi and the GCP SDK installed and configured on your machine.Use
pulumi up
from your command line in the directory with this file to create the GKE cluster and deploy the Helm chart.Let me know if you need help on how to proceed with the setup, installation of Pulumi and the necessary SDKs, or configuring access to the Google Cloud Platform.