Deploy the airbyte-workload-api-server helm chart on Google Kubernetes Engine (GKE)
TypeScriptTo deploy the Airbyte workload API server using a Helm chart on Google Kubernetes Engine (GKE), we'll need to take the following steps:
-
Set up a Google Kubernetes Engine (GKE) cluster: We will define and create a GKE cluster where the Airbyte server will run.
-
Install the Helm Chart: We will leverage the
harness.service.Helm
resource to install the Airbyte Helm Chart onto our GKE cluster.
Below is a detailed Pulumi program written in TypeScript that accomplishes these steps. This will create a GKE cluster and deploy the Airbyte workload API server using Helm:
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("airbyte-workload-gke-cluster", { // Define the properties for the GKE cluster here initialNodeCount: 2, minMasterVersion: "latest", // Use the latest available version of Kubernetes nodeVersion: "latest", nodeConfig: { preemptible: true, // Use preemptible VMs for cost savings machineType: "n1-standard-1", // Choose the machine type according to your workload requirements 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", ], }, }); // Get cluster credentials so Pulumi can manage Kubernetes resources in the 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 `; }); // Create a provider for the GKE cluster const provider = new k8s.Provider("gke-k8s", { kubeconfig }); // Deploy the Airbyte workload API server using Helm const airbyteChart = new k8s.helm.v3.Chart("airbyte", { chart: "airbyte", version: "0.29.15" // Replace with the desired version of Airbyte // Configure more Helm chart values and settings here if necessary }, { provider }); // Export the cluster information export const kubeconfigOutput = kubeconfig; export const clusterName = cluster.name; // If the Airbyte Helm chart exposes a service with an external IP, you may want to export that IP too // For example, if there is a service called 'airbyte-web-svc' exposed by the chart, you could write: // // export const airbyteWebSvcExternalIp = airbyteChart.getResourceProperty("v1/Service", "airbyte-web-svc", "status").apply(status => status.loadBalancer.ingress[0].ip);
Explanation:
-
The GKE cluster resource (
gcp.container.Cluster
) defines the properties of your Kubernetes cluster. These include things like the number of nodes, the machine type for each node, and the Kubernetes version. -
The
kubeconfig
is a necessary Kubernetes configuration that allows Pulumi to connect and interact with your GKE cluster to manage resources. -
The
k8s.Provider
tells Pulumi to use the kubeconfig we generated to manage Kubernetes resources. -
The
k8s.helm.v3.Chart
resource is used to deploy Airbyte using its Helm chart to the Kubernetes cluster. -
In the end, we export the
kubeconfig
and details of the GKE cluster, which would be used to interact with the cluster directly if necessary. Optionally, if the Airbyte Helm chart exposes services with external IPs, you can also export them for easy access.
You should replace the placeholder values in the
cluster
andairbyteChart
resources above with the actual properties that match your requirements and the Airbyte Helm chart version you wish to deploy.Before running this Pulumi program, ensure that you have set up the Pulumi CLI and have authenticated with Google Cloud. Additionally, you need the Helm CLI installed on your machine as Pulumi uses it to deploy Helm charts.
To run the Pulumi program, save it to a file named
index.ts
and execute it using the Pulumi CLI.For more information on the resources used in this program, you can refer to the documentation:
Make sure to review the Airbyte documentation and the Helm chart values to customize the deployment based on your needs.
-