Deploy the universal-crossplane helm chart on Kubernetes
TypeScriptTo deploy the Universal Crossplane (UXP) Helm chart on Kubernetes using Pulumi, you can make use of the
kubernetes.helm.sh/v3.Chart
resource. This resource allows you to deploy Helm charts into a Kubernetes cluster.The Universal Crossplane (UXP) is an extension of the open-source Crossplane project, which enables you to manage your infrastructure through Kubernetes CRDs (Custom Resource Definitions). UXP provides additional features and integrations on top of Crossplane, making it a more enterprise-ready option.
You will need a Kubernetes cluster already up and running to deploy UXP. If you haven't done this, you can use Pulumi's EKS, AKS, or GKE libraries to create one.
Below is the program in TypeScript that deploys the UXP Helm chart into a Kubernetes cluster. We will use the
kubernetes.helm.Chart
resource, which is Pulumi's representation of a Helm chart.import * as k8s from "@pulumi/kubernetes"; // Define the settings for the UXP Helm chart. const uxpChart = new k8s.helm.v3.Chart("universal-crossplane", { chart: "universal-crossplane", version: "1.5.0", // Specify the version of UXP Helm chart you wish to deploy fetchOpts: { repo: "https://charts.crossplane.io/universal", // UXP Helm chart repository URL }, // Values applied to the Chart, these are the typical values you would set using Helm's --set command values: { // You can customize the resources as necessary }, }); // Export the URL for the crossplane instance export const crossplaneUrl = uxpChart.getResourceProperty( "v1/Service", "universal-crossplane", "status", "loadBalancer", "ingress", "0", "hostname" );
Here's a breakdown of what this Pulumi program will do:
- We import the Pulumi Kubernetes package which enables us to interact with Kubernetes resources in our Pulumi program.
- We create a new Helm chart resource called
universal-crossplane
using theChart
class from the@pulumi/kubernetes
package. - We specify the name of the chart, the version, and the repository from where to fetch the chart.
- We also specify a values object that can be used to customize the Helm chart with the same settings you'd usually provide in a
values.yaml
file or with thehelm set
CLI command.
The
export
statement at the end is used to output the load balancer URL for the deployed UXP service, assuming it creates a Service of type LoadBalancer. This URL can be used to interact with Universal Crossplane outside the cluster.To apply this Pulumi program, you need to save it into a
.ts
file, install the necessary dependencies usingnpm
oryarn
, and then run it using the Pulumi CLI. This assumes you have Pulumi installed and configured, as well as a working Kubernetes cluster context set up in your localkubeconfig
file.Please note that the version number '1.5.0' and the values specified are placeholders. You will need to check the Crossplane Helm Chart for the latest chart version and update the values according to your requirements.