1. Deploy the ibm-nodejs-express helm chart on AWS EKS


    To deploy the ibm-nodejs-express Helm chart on AWS Elastic Kubernetes Service (EKS), we'll follow these steps:

    1. Set up an EKS cluster: We're going to create a new EKS cluster on AWS where our Kubernetes workloads will run.
    2. Deploy the Helm Chart: Once we have the Kubernetes cluster ready, we can use Pulumi's Helm Chart resource to deploy ibm-nodejs-express.

    Let's walk through this process step by step.

    1. Set Up an AWS EKS Cluster

    We'll start by defining the EKS cluster. To manage EKS, we'll use the @pulumi/eks package, which provides a high-level interface for creating and managing an AWS EKS cluster and its associated resources such as the node groups.

    2. Deploy the Helm Chart

    After the EKS cluster is set up, we'll deploy the ibm-nodejs-express Helm chart onto our EKS cluster. For this, we'll leverage the @pulumi/kubernetes package which allows us to manage Kubernetes resources, including the deployment of Helm charts.

    Now, let's get to the code. First, ensure you have Pulumi installed and configured with AWS credentials.

    Here’s the TypeScript program that accomplishes both steps:

    import * as eks from "@pulumi/eks"; import * as pulumi from "@pulumi/pulumi"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Create a new EKS cluster const cluster = new eks.Cluster("my-cluster", { desiredCapacity: 2, // Number of worker nodes minSize: 1, // Minimum number of worker nodes maxSize: 3, // Maximum number of worker nodes storageClasses: "gp2", // EBS storage class type deployDashboard: false, // By default, AWS EKS no longer recommends deploying the Kubernetes dashboard }); // Export the cluster's kubeconfig. export const kubeconfig = cluster.kubeconfig; // Step 2: Deploy the ibm-nodejs-express Helm chart const chart = new k8s.helm.v3.Chart("ibm-nodejs-express", { chart: "ibm-nodejs-express", version: "1.0.0", // Specify the version of the chart fetchOpts:{ repo: "https://charts.your-repo.com/", // Replace with the actual repository URL that hosts the ibm-nodejs-express Helm chart }, namespace: "default", }, { provider: cluster.provider }); // We're using Helm v3, so ensure your local Helm client is up to date.

    Let's break down what each part of our Pulumi program is doing:

    • We create an instance of an EKS cluster by using the eks.Cluster class, setting the desired, minimum, and maximum capacities for the number of worker nodes, as well as the EBS storage class type. We don't deploy the Kubernetes dashboard as it is no longer recommended by AWS EKS for security reasons.

    • We export the kubeconfig of our EKS cluster which allows us to interact with our cluster using kubectl or any other Kubernetes tooling.

    • We deploy the ibm-nodejs-express Helm chart to the default namespace in our EKS cluster. To do this, we create an instance of k8s.helm.v3.Chart, which represents a Helm chart deployment within the cluster managed by our instance of the EKS provider.

    Make sure to replace "https://charts.your-repo.com/" with the actual repository URL that contains the ibm-nodejs-express Helm chart. If needed, modify the version to fit the version of the chart you intend to use.

    To apply this program and deploy your infrastructure, run the pulumi up command from within the directory containing your program.

    Keep in mind that administrative access to the AWS account is required to provision the resources and Pulumi will create resources that may cost money. Always review the output of pulumi preview before running pulumi up to understand the changes that will be made to your infrastructure.