Deploy the knative-installer helm chart on Google Kubernetes Engine (GKE)
TypeScriptTo deploy the
knative-installer
Helm chart on Google Kubernetes Engine (GKE), you'll first need to create a GKE cluster. After the cluster is up and running, you can use Pulumi's Kubernetes provider to deploy the Helm chart to that cluster.Below is a TypeScript program using Pulumi to accomplish this. This program will:
- Create a GKE cluster using GCP's
container.Cluster
resource. - Deploy the
knative-installer
Helm chart using Pulumi'skubernetes.helm.v3.Chart
resource.
Make sure you have Pulumi installed and configured to use your GCP credentials before running this program.
Detailed Steps:
-
Define the GKE Cluster: This uses the
gcp.container.Cluster
resource to create a new GKE cluster with the necessary configuration for Knative. -
Define the Kubernetes Provider: Once the GKE cluster is ready, we set up a Kubernetes provider that points to the created GKE cluster. This provider is used for subsequent Kubernetes-related operations.
-
Deploy Knative Helm Chart: We use the
kubernetes.helm.v3.Chart
resource to deploy Knative to our GKE cluster using a Helm chart. The Helm chart's name isknative-installer
, and you'll need to provide the Helm repository where this chart is hosted.
Please note that Helm charts often have their own set of configurable values. You may need to set specific values for the
knative-installer
chart depending on your requirements. In the example below, replaceCHART_VERSION
with the actual version of the chart you wish to deploy, and similarly, replaceHELM_REPO_URL
with the URL of the Helm repository containing theknative-installer
chart.Here's the complete program:
import * as pulumi from "@pulumi/pulumi"; import * as gcp from "@pulumi/gcp"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Create the GKE cluster const cluster = new gcp.container.Cluster("knative-gke-cluster", { initialNodeCount: 3, nodeConfig: { 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 and Kubeconfig export const clusterName = cluster.name; export 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 view --minify --flatten --output=jsonpath='{.users[].user.auth-provider.config}' cmd-path: gcloud expiry-key: '{.credential.token_expiry}' token-key: '{.credential.access_token}' name: gcp `; }); // Step 2: Setup the Kubernetes Provider const k8sProvider = new k8s.Provider("k8s-provider", { kubeconfig: kubeconfig, }); // Step 3: Deploy Knative using Helm Chart const knative = new k8s.helm.v3.Chart("knative", { chart: "knative-installer", version: "CHART_VERSION", // Specify the chart version fetchOpts: { repo: "HELM_REPO_URL", // Specify the Helm repository URL }, }, { provider: k8sProvider }); // Export the Helm chart name export const knativeChartName = knative.releaseName;
You’ll run this program using the Pulumi CLI. When you execute
pulumi up
, Pulumi will communicate with GCP to create the resources you’ve declared in the program. After the GKE cluster is up and running, Pulumi will deploy Knative to that cluster using the Helm chart.Keep in mind that Knative also requires Istio or a similar service mesh to work correctly, so you might need to deploy that into your cluster as well, depending on the configurations of the
knative-installer
chart.This program should get you started, but remember that you will need to configure your resources and Helm chart according to your specific needs, which may require setting additional properties or adjusting the provided configuration.
- Create a GKE cluster using GCP's