1. Deploy the seldon-abtest helm chart on Linode Kubernetes Engine


    To deploy the Seldon AB Test Helm chart on Linode Kubernetes Engine using Pulumi, we'll use the Pulumi Kubernetes provider. This provider allows us to interact with Kubernetes resources within a Pulumi program. The Helm chart will be represented as a Pulumi resource of kind kubernetes.helm.v3.Chart.

    Before proceeding, make sure you have the following prerequisites met:

    1. Install Pulumi: Follow the instructions to install Pulumi if it is not already installed.

    2. Set Up Linode CLI: Ensure you have the Linode CLI installed and configured with access to your Kubernetes cluster. Linode CLI documentation can guide you through this process.

    3. Configure Kubernetes for Pulumi: The Pulumi program will use your kubeconfig file to interact with your Kubernetes cluster. This typically resides at ~/.kube/config. Your kubeconfig should be configured to point to your Linode Kubernetes Engine cluster.

    4. Helm Chart Details: Know the name of the Helm chart (seldon-abtest) and the repository it resides in. You'll also need to know any specific configurations you want for the deployment.

    Below is a complete Pulumi TypeScript program that will deploy the Seldon AB Test Helm chart onto a Linode Kubernetes Engine cluster:

    import * as kubernetes from "@pulumi/kubernetes"; // Replace the following variables with the appropriate values for your setup. const chartName = "seldon-abtest"; // The name of your helm chart const chartVersion = "x.x.x"; // Specify the chart version const releaseName = "seldon-abtest-release"; // Name for the helm chart release const namespace = "default"; // The namespace where the chart should be deployed const helmRepoName = "seldonio"; // Helm repo name where the chart is hosted const helmRepoUrl = "https://storage.googleapis.com/seldon-charts"; // Helm repository URL // First, we register the Helm chart repository where the Seldon chart is located const helmRepo = new kubernetes.helm.v3.Repository("seldon-helm-repo", { name: helmRepoName, url: helmRepoUrl, }); // Now, we use the `Chart` class to deploy our Helm chart to the cluster const seldonChart = new kubernetes.helm.v3.Chart(releaseName, { chart: chartName, version: chartVersion, namespace: namespace, fetchOpts: { repo: helmRepoUrl, }, // Here you can add custom values for the Helm chart, which can be // either a path to a file or an inline object. (Use `values` for that) }, { dependsOn: helmRepo }); // Set a dependency to ensure the repo is registered before chart is deployed // Export any necessary resources URLs, IPs, or other data needed to access your deployed services export const seldonServiceUrl = seldonChart.getResourceProperty( "v1/Service", `${namespace}/${releaseName}-seldon-abtest`, "status" );

    This program performs the following steps:

    • It imports the required Pulumi Kubernetes library that provides access to Kubernetes resources.
    • It defines some configuration variables such as the chart name, version, release name, and namespace, which you can adjust according to your chart's details.
    • It registers the Helm repository where the Seldon chart is located using the kubernetes.helm.v3.Repository class.
    • It then uses the kubernetes.helm.v3.Chart class to deploy the chart to the Linode Kubernetes Engine cluster.
    • In the fetchOpts of Chart, we mention the repository URL to fetch the chart from.
    • Optionally, you can use values to provide a configuration for the Helm chart. The configuration can be specified in-line as an object or as a path to a YAML file that contains the values.
    • The dependsOn option ensures that the Helm repository is added before attempting to deploy the chart. This is important for resolving Helm dependencies.
    • Finally, the program exports the URL of the deployed service so you can easily access it.

    Please make sure to replace placeholder values (x.x.x) with the actual values relevant to your deployment. Save this code in a file named index.ts, and then run pulumi up from the command line in the same directory to deploy your Helm chart.

    Always review the execution plan from Pulumi before confirming the deployment to ensure that it correctly identifies the resources that will be created or updated. After deployment, pulumi up will output the exported values, such as the seldonServiceUrl, which you can use to interact with the Seldon AB test service.