Deploy the simple-mongodb helm chart on Google Kubernetes Engine (GKE)
TypeScriptTo deploy the
simple-mongodb
Helm chart on Google Kubernetes Engine (GKE), you'll need to follow these general steps:-
Set up GKE Cluster: You will create a GKE cluster where your MongoDB instance will run.
-
Install Helm on your Local Machine: Helm is a package manager for Kubernetes, which allows you to define, install, and upgrade even the most complex Kubernetes applications.
-
Deploy Helm Chart: Once Helm is set up, you will add the Helm chart repository that contains
simple-mongodb
and install it to your GKE cluster.
Below is a Pulumi program written in TypeScript that sets up the GKE cluster. We are assuming that you have already set up and authenticated Pulumi and the Google Cloud CLI (
gcloud
) for your project.import * as pulumi from "@pulumi/pulumi"; import * as gcp from "@pulumi/gcp"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Create a GKE cluster const cluster = new gcp.container.Cluster("my-gke-cluster", { initialNodeCount: 2, nodeVersion: "latest", minMasterVersion: "latest", nodeConfig: { machineType: "n1-standard-1", // Adjust the machine type according to your needs 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 after the cluster is created, so it can be used // to connect to the cluster with kubectl, Helm or a Kubernetes client. 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 config-helper --format=json cmd-path: gcloud expiry-key: '{.credential.token_expiry}' token-key: '{.credential.access_token}' name: gcp `; }); // Step 2: Install Helm and add your Helm chart repository locally using the Helm CLI. // This step is not part of the Pulumi program and needs to be done on your local machine. // Step 3: Deploy the `simple-mongodb` Helm chart on the GKE cluster using Pulumi's Kubernetes provider. const k8sProvider = new k8s.Provider("k8s-provider", { kubeconfig: kubeconfig, // Use the generated kubeconfig }); const mongoDbChart = new k8s.helm.v3.Chart("simple-mongodb-chart", { chart: "simple-mongodb", version: "1.0.0", // Use the version number that you want to deploy fetchOpts: { repo: "http://charts.your-organization.com", // Replace with the actual repo URL }, }, { provider: k8sProvider });
This program does the following:
- It creates a new GKE cluster with the specified settings, including the machine type and OAuth scopes for the nodes.
- It exports the Kubernetes configuration (
kubeconfig
) needed to interact with the cluster. - It installs the
simple-mongodb
chart from a Helm repository (replace with the actual repository you are using).
Please ensure that you have Helm installed on your local machine. You can download it from the official Helm website.
Once you have Helm installed, add your Helm chart repository using the following command:
helm repo add <your-repo-name> http://charts.your-organization.com
After you have set up the GKE cluster with Pulumi and added your Helm repository, you can use the following Helm command to deploy your chart to the cluster:
helm install my-mongodb <your-repo-name>/simple-mongodb
To execute the Pulumi program, save the code to a file with a
.ts
extension, and runpulumi up
in the terminal from the directory where the file is located. Make sure to inspect the plan that Pulumi prints out before confirming the deployment.Please replace placeholders like
http://charts.your-organization.com
and version1.0.0
with the actual values that apply to your situation.-