Deploy the pipeline-enterprise helm chart on Oracle Kubernetes Engine (OKE)
TypeScriptTo deploy the
pipeline-enterprise
Helm chart on Oracle Kubernetes Engine (OKE), we'll use Pulumi with the Kubernetes and OCI (Oracle Cloud Infrastructure) providers.The process involves:
- Setting up an OCI provider to interact with Oracle Cloud Infrastructure.
- Provisioning an OKE Kubernetes cluster.
- Deploying a Helm chart to that OKE cluster.
Below is a Pulumi program in TypeScript that demonstrates these steps. Ensure you have the necessary OCI credentials configured in your environment for Pulumi to use.
We'll be using the following Pulumi resources:
oci.ContainerEngine.Cluster
: This resource will set up the OKE cluster. OCI ContainerEngine.Cluster Docskubernetes.helm.v3.Chart
: Once the Kubernetes cluster is up and running, this resource helps us deploy the Helm chart. Kubernetes Helm Chart Docs
Here's how you can write the Pulumi program to accomplish this:
import * as pulumi from "@pulumi/pulumi"; import * as oci from "@pulumi/oci"; import * as k8s from "@pulumi/kubernetes"; // Create an OCI provider const provider = new oci.Provider("oci", {/* ... your OCI configuration ... */ }); // Provision an OKE Kubernetes cluster const cluster = new oci.ContainerEngine.Cluster("okeCluster", { /* ... cluster configuration ... */ // Add any additional configuration needed for your OKE cluster here. // For example, the compartment ID, the VCN configuration, node pool setup, etc. }, { provider }); // Once our cluster is up and running, we need to retrieve the Kubeconfig to interact with it. const kubeconfig = pulumi.all([cluster.name, cluster.id]).apply(([name, id]) => { // TODO: Insert the logic to fetch or construct a kubeconfig for your OKE cluster // Depending on your cloud provider's way of handling access to Kubernetes clusters, // you might need to fetch the Kubeconfig file via an OCI API call, or construct it // manually using the cluster's endpoint and appropriate certificates/tokens. }); // Create a Kubernetes provider instance using the cluster's kubeconfig const k8sProvider = new k8s.Provider("k8sProvider", { kubeconfig: kubeconfig, }); // Using the k8s provider, we deploy the pipeline-enterprise Helm chart const helmChart = new k8s.helm.v3.Chart("pipeline-enterprise", { repo: "my-repo", // replace with the Helm chart repository chart: "pipeline-enterprise", version: "x.y.z", // replace with the specific chart version // values: Use this field to provide configuration to the chart. }, { provider: k8sProvider }); // To use any output from Helm chart, such as the service address: export const frontendAddress = helmChart.getResourceProperty("v1/Service", "my-service", "status").apply(status => status.loadBalancer.ingress[0].hostname);
This Pulumi program outlines the setup. Here's the step-by-step breakdown:
- An OCI provider is instantiated to interact with Oracle Cloud.
- An OKE cluster is provisioned using
oci.ContainerEngine.Cluster
. - The kubeconfig for the new cluster is retrieved, which allows you to communicate with the cluster through a Kubernetes provider.
- Using
k8s.helm.v3.Chart
, thepipeline-enterprise
Helm chart is deployed to the cluster. - Optionally, we export a computed value (like the service address) that might be exposed by the deployed Helm chart.
Please note that the exact details of
kubeconfig
retrieval and the chart deployment will depend on your specific Oracle Cloud setup and the requirements of thepipeline-enterprise
Helm chart. You need to replace placeholders likemy-repo
,pipeline-enterprise
, andx.y.z
with the actual values, and add additional configurations as necessary for your setup.After writing your Pulumi program, install the required packages with npm or Yarn, and then you can run
pulumi up
to launch the described infrastructure. Make sure to examine the preview and confirm the operations before applying the changes.