1. Deploy the jx helm chart on Digital Ocean Kubernetes Service


    In order to deploy the JX (Jenkins X) Helm chart on the Digital Ocean Kubernetes Service, we need to do two things: first, we will provision a Kubernetes cluster in Digital Ocean using Pulumi, and then we will deploy the JX Helm chart onto that cluster. We'll use the @pulumi/digitalocean package to create the cluster, and the @pulumi/kubernetes package to deploy the Helm chart.

    Here's a step-by-step guide on what we will be doing:

    1. Provision a DigitalOcean Kubernetes Cluster: We will create a new Kubernetes cluster on Digital Ocean.
    2. Deploy the JX Helm Chart: Once we have the Kubernetes cluster, we will use the Helm package from @pulumi/kubernetes to deploy the JX Helm chart to the cluster.


    Before we begin, you need to install the following:

    • Pulumi CLI: The Pulumi Command-Line Interface (CLI) is a tool that allows you to manage Pulumi projects and stacks.
    • Node.js: Pulumi requires Node.js to run the JavaScript/TypeScript SDK.
    • Configure DigitalOcean access: Make sure your Pulumi account is authenticated with DigitalOcean. You can achieve this by setting up the DIGITALOCEAN_TOKEN environment variable with your access token.

    Assuming these prerequisites are in place, we will now proceed with the Pulumi program.

    Pulumi Program to Deploy JX on DigitalOcean

    import * as digitalocean from "@pulumi/digitalocean"; import * as kubernetes from "@pulumi/kubernetes"; // Step 1: Provision a DigitalOcean Kubernetes Cluster // https://www.pulumi.com/registry/packages/digitalocean/api-docs/kubernetescluster/ const cluster = new digitalocean.KubernetesCluster("do-cluster", { region: "nyc3", // New York 3 data center, choose a region that is close to you version: "1.21.5-do.0", // Kubernetes version nodePool: { name: "default", size: "s-2vcpu-2gb", // This is the node size. For larger workloads, choose a larger node size nodeCount: 2, // Number of nodes in the pool }, }); // Step 2: Deploy the JX Helm Chart to the cluster // First, we set up a K8s provider with the kubeconfig from the newly created DigitalOcean K8s cluster. // https://www.pulumi.com/registry/packages/kubernetes/api-docs/helm/v3/chart/ const k8sProvider = new kubernetes.Provider("k8s-provider", { kubeconfig: cluster.kubeConfigs[0].rawConfig, }); // Provide the details for the JX Helm chart const jxChart = new kubernetes.helm.v3.Chart("jx", { chart: "jenkins-x-platform", version: "2.0.1289", // specify the version you want to deploy repositoryOpts: { repo: "https://jenkins-x.github.io/jx-charts/", // Helm chart repository }, }, { provider: k8sProvider }); // Export the cluster kubeconfig and endpoint. export const kubeconfig = cluster.kubeConfigs[0].rawConfig; export const clusterEndpoint = cluster.endpoint;

    This program will create a cluster named do-cluster in the nyc3 region with a node pool of 2 s-2vcpu-2gb nodes at the provided Kubernetes version. It then sets up a Kubernetes provider using the generated kubeconfig from this newly created cluster. Finally, it deploys the JX Helm chart to the cluster using Pulumi's Helm Chart resource.

    After creating this program, save it to a file (for example index.ts) and run the following commands in your terminal:

    pulumi stack init jx-on-digitalocean pulumi up

    The pulumi up command will deploy the resources as per the program. You'll be able to see the progress and any output in your terminal, including the exported kubeconfig and cluster endpoint.

    Once the deployment is complete, you can start using Jenkins X on your new DigitalOcean Kubernetes cluster by using the provided kubeconfig to interact with your cluster via kubectl or other Kubernetes tooling.

    Remember to keep your kubeconfig secure, as it provides administrative access to your Kubernetes cluster.