Deploy the stunnel helm chart on Oracle Kubernetes Engine (OKE)
TypeScriptTo deploy the
stunnel
Helm chart on Oracle Kubernetes Engine (OKE), you'll need to write a Pulumi program that performs several tasks:- Establishes a connection to your OKE cluster.
- Deploys the
stunnel
Helm chart to your cluster.
First, you'll connect to the OKE cluster using Pulumi's Kubernetes provider. This is facilitated by using the
kubernetes.Provider
resource, which configures the Kubernetes API endpoint and other access credentials. To interact with OKE, you will typically have akubeconfig
file that contains the necessary details to connect to your Kubernetes cluster. If you're running Pulumi on a machine wherekubectl
is already configured to communicate with your OKE cluster, Pulumi can use the same configuration.Second, you'll use the
kubernetes.helm.v3.Chart
resource provided by the Pulumi Kubernetes provider to deploy thestunnel
Helm chart. This resource allows you to deploy Helm charts in a very similar way to how you would use thehelm
CLI tool.Make sure you have Pulumi set up on your machine and you are logged into your Oracle Cloud Infrastructure (OCI) account. Ensure that your environment is authenticated with OKE and that you have Helm installed. You also need the Helm repository that contains the
stunnel
chart added to your local Helm configuration.Here's how you could write this program in TypeScript:
import * as k8s from '@pulumi/kubernetes'; // Create a Kubernetes provider instance using the context of the current kubeconfig. const provider = new k8s.Provider('oke-provider', { // Assuming kubeconfig is configured to connect to your OKE cluster, Pulumi can use it directly. // You can also explicitly specify a kubeconfig file or its contents here. // kubeconfig: fs.readFileSync('/path/to/kubeconfig/file').toString(), }); // Define the release name and chart details for stunnel. const stunnelReleaseName = 'stunnel'; const stunnelChart = 'stunnel'; // This should be the exact name of the chart in the repository. const stunnelRepo = 'https://charts.example.com/'; // Replace with the actual Helm repo URL containing stunnel. const stunnelVersion = 'x.y.z'; // Replace with the specific version of the stunnel chart you wish to deploy. // Deploy stunnel Helm chart using the kubernetes.helm.v3.Chart resource. const stunnelHelmChart = new k8s.helm.v3.Chart(stunnelReleaseName, { chart: stunnelChart, version: stunnelVersion, fetchOpts: { // Fetch the chart from the specified Helm repo. repo: stunnelRepo, }, // values: { // // Specify any custom values required for your stunnel configuration here. // key: value, // }, }, { provider }); // Export the Helm chart status, which can help confirm deployment. export const helmChartStatus = stunnelHelmChart.status;
Now, let's go through what the code does:
-
The
k8s.Provider
resource is created to tell Pulumi how to communicate with your Kubernetes cluster. It's calledoke-provider
here. -
The
k8s.helm.v3.Chart
resource represents thestunnel
Helm chart you want to deploy. You need to specify the chart name, version number, and repository URL. -
When the
k8s.helm.v3.Chart
resource is created, Pulumi will orchestrate the necessary actions to deploy thestunnel
Helm chart to your OKE cluster, just like thehelm
command-line tool would do. -
The
export
statement at the end is a way for Pulumi to output important information. Here it outputs the status of the Helm chart deployment, which can be useful for you to verify that everything was deployed correctly.
Run this program with the
pulumi up
command in the terminal. It will display a preview of the changes, which you can then confirm to apply. Once the deployment finishes, you will see any exported values, such as the Helm chart status, printed in the terminal.Keep in mind that for the above program to work, you need to replace the placeholder repository URL (
https://charts.example.com/
) andstunnel
chart version with appropriate values you'd be using. Also, if you need to customize thestunnel
deployment further, you can provide additional configuration through thevalues
object in thek8s.helm.v3.Chart
resource.