1. Deploy the stateful helm chart on AWS EKS


    To deploy a stateful Helm chart on AWS EKS, you need to perform the following key steps:

    1. Create an EKS cluster: We'll use eks.Cluster from the pulumi/eks package. This sets up your EKS cluster in AWS.
    2. Deploy the Helm chart: The kubernetes.helm.v3.Chart from the @pulumi/kubernetes package can be used for deploying Helm charts to your EKS cluster.

    Let's go through the process of creating an EKS cluster and deploying a stateful Helm chart to it using Pulumi with TypeScript.

    import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; import * as awsx from "@pulumi/awsx"; import * as eks from "@pulumi/eks"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Create an EKS cluster // This will provision an EKS cluster with the default node group and settings. const cluster = new eks.Cluster("my-cluster", { // Specify the desired Kubernetes version version: "1.21", }); // Export the cluster's kubeconfig. export const kubeconfig = cluster.kubeconfig; // Step 2: Deploy a Helm chart on the EKS cluster // For example, let's deploy a Helm chart for a sample stateful application like Redis. // First, we must instantiate a provider that uses the kubeconfig from our cluster. const provider = new k8s.Provider("provider", { kubeconfig: cluster.kubeconfig.apply(JSON.stringify), }); // Next, we use that provider to deploy our Helm chart. const redisChart = new k8s.helm.v3.Chart("redis-helm-chart", { chart: "redis", version: "14.8.8", // ensure you use the correct version fetchOpts: { repo: "https://charts.bitnami.com/bitnami", }, }, { provider }); // Now that you've declared both your cluster and the Helm chart deployment, you can execute `pulumi up` // to provision the resources within AWS and deploy the Redis chart to your EKS cluster. // You can export additional outputs like the EKS cluster name or Redis service endpoint if needed.

    In the above program:

    • We create an EKS cluster using the eks.Cluster resource. The cluster version is specified; you can change it to your desired supported version.
    • We export the kubeconfig of the EKS cluster, which is necessary to interact with the cluster using kubectl or other Kubernetes tools.
    • We define a K8s provider with the kubeconfig to deploy resources to the newly created EKS cluster.
    • We then deploy a Redis Helm chart to our EKS cluster as an example of a stateful application deployment. You can replace redis with the name of your specific stateful Helm chart and adjust the version and repo as necessary.
    • Finally, we specify that the Helm chart deployment should use the provider associated with our EKS cluster.

    After writing the above TypeScript code in a .ts file within a Pulumi project, you would run pulumi up in the command line from within that project directory. Pulumi CLI will then perform the planned operations to provision the EKS cluster and deploy the Redis Helm chart. Make sure you have configured your AWS credentials correctly before running the command.

    For additional details on the resources used, please refer to the following documentation: