Deploy the higress-core helm chart on Kubernetes
TypeScriptTo deploy a Helm chart on Kubernetes using Pulumi, we'll need to utilize the
Chart
resource from the@pulumi/kubernetes
package. This allows us to specify the Helm chart that we want to deploy, along with any configuration options we want to set.In the example below, I will guide you through deploying the
higress-core
Helm chart on a Kubernetes cluster using Pulumi. We'll assume that you have a local Kubernetes cluster running, such asminikube
, or a cluster accessible via your kubeconfig file.Here is a step-by-step explanation of how the program works:
-
Import the Required Modules: Import the
pulumi
and@pulumi/kubernetes
to work with Pulumi and Kubernetes cluster, respectively. -
Create the Helm Chart Resource: Create an instance of the
Chart
class from the Kubernetes provider. You need to specify at least the resource name and chart details. Other parameters likevalues
,version
,namespace
, etc. can be specified to customize the deployment. -
Export Any Stack Outputs: If there are any resources or endpoints you want to be readily available, such as a service IP or hostname, you can export them using
pulumi.export()
. This will make them easy to access after deployment.
Below is a program in TypeScript that implements the deployment:
import * as pulumi from "@pulumi/pulumi"; import * as k8s from "@pulumi/kubernetes"; // Create a Kubernetes Namespace const ns = new k8s.core.v1.Namespace("higress-ns", { metadata: { name: "higress-core" }, }); // Deploy the 'higress-core' Helm chart into the namespace created above const higressChart = new k8s.helm.v3.Chart("higress-core", { namespace: ns.metadata.name, // Use the namespace created earlier chart: "higress-core", // The name of the chart // Specify any custom values for the Helm chart here, if needed // `values` is a JavaScript object that overrides values in the chart's `values.yaml` values: { // For example, if you want to change the service type to NodePort: // service: { // type: "NodePort", // }, }, // If your Helm chart is not from a public repository, you can specify additional options // like repo, version, etc. For instance: // repo: "https://charts.example.com/", // The repository URL where the chart is located // version: "1.2.3", // The version of the chart to deploy }, { dependsOn: [ns] }); // Export the Namespace name and the Helm Chart status export const namespaceName = ns.metadata.name; export const chartStatus = higressChart.status;
In this program, we:
- Import the necessary Pulumi modules
- Define a Kubernetes namespace where we will deploy the chart
- Create a new instance of the Helm chart, specifying the chart name and namespace.
- Export the created namespace name and chart status so they can be easily retrieved later.
To run this Pulumi program:
- Save the code to a file called
index.ts
. - Open a terminal and navigate to the directory containing the
index.ts
file. - Run
pulumi up
to preview and deploy the resources.
Remember that this is a basic example that assumes you have access to a Kubernetes cluster and the
higress-core
chart is publicly available. Adjust therepo
andversion
properties in theChart
resource if you're using a specific chart version or a private helm repository. You would also typically pass configuration to the Helm chart through thevalues
property, which directly maps to the values you would typically set in avalues.yaml
file for Helm.Please ensure you have Pulumi and Kubernetes configured correctly before running this program. If you have further questions or need assistance with more advanced deployments, feel free to ask.
-