1. Deploy the delta-sharing-server helm chart on AWS EKS


    To deploy the delta-sharing-server Helm chart on AWS EKS using Pulumi, you need to accomplish a few tasks:

    1. Set up an EKS cluster in AWS.
    2. Deploy the delta-sharing-server Helm chart onto that cluster.

    For the EKS cluster setup, we will create an EKS cluster resource and necessary IAM roles. Once the cluster is up and running, we can proceed to deploy a Helm chart. Pulumi provides a Kubernetes provider that understands how to interact with Kubernetes clusters, and a Helm release resource to deploy charts.

    EKS Cluster Setup

    We first define the IAM roles required for the EKS cluster, and then we create the cluster itself. The aws-iam.EKSRole is a high-level Pulumi component that simplifies the creation of an IAM role with the correct trust relationships for the cluster.

    Deploying the Helm Chart

    Once the EKS cluster is up, we will configure Pulumi to use the newly created EKS cluster as the Kubernetes provider. Then, we use the kubernetes.helm.v3.Chart resource to deploy the delta-sharing-server Helm chart from its repository.

    Now let's look at the Pulumi TypeScript program to accomplish this:

    import * as pulumi from '@pulumi/pulumi'; import * as aws from '@pulumi/aws'; import * as eks from '@pulumi/eks'; import * as k8s from '@pulumi/kubernetes'; // Create an EKS cluster with the default configuration. const cluster = new eks.Cluster('my-cluster'); // Export the cluster kubeconfig. export const kubeconfig = cluster.kubeconfig; // Set up the K8s provider to use the kubeconfig from the EKS cluster we created. const k8sProvider = new k8s.Provider('k8s-provider', { kubeconfig: kubeconfig, }); // Deploy the delta-sharing-server Helm chart onto the EKS cluster. const chart = new k8s.helm.v3.Chart('delta-sharing-server', { chart: 'delta-sharing-server', version: '0.1.0', // Replace with the desired chart version fetchOpts:{ repo: 'http://path-to-helm-repo', // Replace with the actual Helm repo URL }, }, { provider: k8sProvider }); // Use this command to apply the Pulumi program: pulumi up

    A few important notes about the program:

    • eks.Cluster: Creates an EKS cluster. The default configuration will set up all the necessary AWS resources like VPC, subnets, and worker nodes.
    • k8s.Provider: This creates a Pulumi Kubernetes provider which is necessary for interacting with the cluster.
    • k8s.helm.v3.Chart: This deploys a Helm chart to our Kubernetes cluster. You need to specify the Chart name and version, and you must provide the URL of the Helm repository that hosts the chart.

    You can customize the chart values, EKS configurations, and more based on your requirements.

    Once you have this Pulumi program ready:

    1. Install the Pulumi CLI and set up your AWS credentials.
    2. Create a new Pulumi project with pulumi new aws-typescript.
    3. Replace the content of index.ts with the program shown above.
    4. Run pulumi up to deploy your infrastructure.
    5. Monitor your deployment on the Pulumi Console, which provides detailed graphical insights into your infrastructure.

    Remember to tear down your infrastructure with pulumi destroy if you're just testing this out to avoid incurring unnecessary costs.