Deploy the ts3-manager helm chart on Google Kubernetes Engine (GKE)
TypeScriptTo deploy the
ts3-manager
Helm chart on Google Kubernetes Engine (GKE), you'll need to perform a few steps:- Create a GKE cluster.
- Configure
kubectl
to connect to the GKE cluster. - Use the Pulumi
kubernetes
provider to deploy a Helm chart onto that GKE cluster.
Below is an example TypeScript program using Pulumi that:
- Defines a new GKE cluster.
- Configures the
kubernetes
provider using the outputs of the created cluster. - Installs the
ts3-manager
Helm chart into the GKE cluster.
Make sure you have Pulumi installed and configured with Google Cloud credentials. You'll also need to have
kubectl
installed to interact with the cluster.Here's a program that accomplishes these tasks:
import * as gcp from "@pulumi/gcp"; import * as k8s from "@pulumi/kubernetes"; import * as pulumi from "@pulumi/pulumi"; // Create a GKE cluster const cluster = new gcp.container.Cluster("ts3-manager-cluster", { initialNodeCount: 2, minMasterVersion: "latest", // use the latest available version of GKE nodeVersion: "latest", nodeConfig: { machineType: "n1-standard-1", // adjust the machine type as needed 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 to access the created cluster using kubectl 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 `; }); // Create a Kubernetes provider instance that uses our cluster from above. const k8sProvider = new k8s.Provider("gkeK8s", { kubeconfig: kubeConfig, }); // Deploy the ts3-manager Helm chart using the kubernetes provider const ts3ManagerChart = new k8s.helm.v3.Chart("ts3-manager", { // Assuming "ts3-manager" is in one of the repositories configured in Helm // Replace '<repository>' with the Helm repository name that contains the 'ts3-manager' chart // and '<chart_version>' with the version of the chart you want to deploy. chart: "ts3-manager", version: "<chart_version>", fetchOpts: { repo: "https://<repository>", }, }, { provider: k8sProvider }); // Export the Helm chart deployment name export const ts3ManagerDeploymentName = ts3ManagerChart.name;
Explanation:
-
GKE Cluster: We create a new GKE cluster with two nodes using the
gcp.container.Cluster
resource. The cluster's master version and node version are both set to "latest" to use the newest stable release. -
Kubeconfig: We generate a config file that can be used by
kubectl
to communicate with the cluster. This config is exported askubeConfig
, which you can use directly with yourkubectl
client. -
Kubernetes Provider: We instantiate a new Pulumi Kubernetes provider configured to communicate with the GKE cluster.
-
Helm Chart: We deploy the
ts3-manager
Helm chart from the specified Helm repository using the Kubernetes provider. Replace<repository>
and<chart_version>
placeholders with the actual repository URL and chart version ofts3-manager
.
To execute this Pulumi program, save the code to a file
index.ts
, then runpulumi up
from the command line in the same directory. This will provision the GKE cluster and deploy thets3-manager
Helm chart.