Deploy the rox-image-check helm chart on Google Kubernetes Engine (GKE)
TypeScriptTo deploy the
rox-image-check
Helm chart on Google Kubernetes Engine (GKE), you'll use Pulumi to:- Create a GKE cluster.
- Deploy the Helm chart to the GKE cluster.
Each step involves creating Pulumi resources that represent the corresponding Google Cloud resources.
First, you create a GKE cluster using the
Cluster
resource from the Pulumi Google Native provider, which allows you to define a Kubernetes cluster in Google Cloud. In this example, the cluster is created with default configurations which are suitable for a wide range of applications. The cluster will have a default node pool, which is a group of nodes within the Kubernetes cluster, and is managed by GKE to handle pod scheduling and run workloads.After the cluster is up and running, you'll deploy the
rox-image-check
Helm chart using Pulumi'shelm.v3.Release
resource. This represents a Helm chart release and allows you to declare the desired state of the Helm chart within your GKE cluster.Now let's look at the complete Pulumi program in TypeScript:
import * as gcp from "@pulumi/gcp"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Create a GKE cluster const cluster = new gcp.container.Cluster("rox-image-check-cluster", { initialNodeCount: 2, minMasterVersion: "latest", // This will use the latest available version of GKE nodeVersion: "latest", nodeConfig: { machineType: "n1-standard-1", // This specifies what kind of machine to run on each node oauthScopes: [ "https://www.googleapis.com/auth/cloud-platform" ] }, }); // Export the Cluster name export const clusterName = cluster.name; // Export the Kubeconfig to access the Cluster export const kubeConfig = cluster.name.apply(name => { const context = `${gcp.config.project}_${gcp.config.zone}_${name}`; return `apiVersion: v1 clusters: - cluster: certificate-authority-data: ${cluster.masterAuth[0].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 `; }); // Step 2: Deploy the `rox-image-check` Helm chart to the GKE cluster const roxImageCheckChart = new k8s.helm.v3.Release("rox-image-check", { chart: "rox-image-check", version: "1.0.0", // Replace with the desired chart version repositoryOpts: { repo: "https://example-repo/helm/charts", // Replace with the chart's repository URL }, // Values to pass to the Helm chart values: { serviceAccount: { create: true, }, // Insert additional configuration if needed }, }, { provider: new k8s.Provider("k8s-provider", { kubeconfig: kubeConfig }) }); // Export the status of the Helm release export const helmStatus = roxImageCheckChart.status;
In this program:
- A GKE cluster is created with two nodes using
n1-standard-1
machine types. - The
kubeConfig
is dynamically generated and can be used to interact with the new GKE cluster using thekubectl
command-line tool. - The Helm chart
rox-image-check
is deployed using thehelm.v3.Release
resource. This requires specifying the chart name, version, and repository URL. - You can add specific values you may want to override in the Helm chart within the
values
property.
To apply this Pulumi program:
- Save the code above to a file named
index.ts
. - Run
pulumi up
from the same directory to create the GKE cluster and deploy the Helm chart.
Remember that you need to replace
"https://example-repo/helm/charts"
with the actual Helm chart repository URL and"1.0.0"
with the chart version that you want to deploy.This Pulumi program is a template, and you might need to modify the chart version, values, or machine type depending on your specific needs and the specifications of the
rox-image-check
Helm chart.