1. Deploy the k8s-infra helm chart on AWS EKS


    Deploying a Helm chart on an AWS EKS cluster involves several steps. We will use Pulumi to provision an EKS cluster and deploy a Helm chart called k8s-infra. The steps are as follows:

    1. Create an EKS cluster: The first step is to create an EKS cluster where our Kubernetes resources will be deployed.
    2. Deploy Helm chart: Once the cluster is up and running, we will use the Pulumi Kubernetes provider to deploy the k8s-infra Helm chart.

    Below is a detailed Pulumi program written in TypeScript that performs these operations.

    import * as pulumi from '@pulumi/pulumi'; import * as aws from '@pulumi/aws'; import * as eks from '@pulumi/eks'; import * as k8s from '@pulumi/kubernetes'; // Step 1: Create an EKS cluster // We begin by creating an EKS cluster. This is a managed Kubernetes service provided by AWS. const cluster = new eks.Cluster('my-cluster', { // Configure the desired number of cluster nodes and specify the instance type to use. desiredCapacity: 2, minSize: 1, maxSize: 3, instanceType: 't2.medium', }); // Obtain the Kubeconfig after the cluster is created. const kubeconfig = cluster.kubeconfig.apply(JSON.stringify); // Step 2: Deploy the k8s-infra Helm chart on the EKS cluster // We will use the Pulumi Kubernetes provider to interact with our EKS cluster. const provider = new k8s.Provider('k8s-provider', { kubeconfig }); // Now we can deploy our Helm chart. We do not specify a version here, which means the latest version will be installed. // You can specify a version if needed, and pass in any required configurations via the `values` property. const helmChart = new k8s.helm.v3.Chart('k8s-infra-chart', { chart: 'k8s-infra', // Replace 'my-repo' with the specific Helm chart repository that we need to use. fetchOpts: { repo: 'https://charts.mycompany.com/' }, }, { provider }); // Export the EKS cluster's kubeconfig. export const kubeconfigOutput = kubeconfig; // Export the Helm chart's status export const helmChartStatus = helmChart.status;

    This program first initializes a new EKS cluster named my-cluster with a selected instance type and the desired number of nodes. It then sets up a new Kubernetes provider with the generated kubeconfig from the EKS cluster, which allows Pulumi to interact with the cluster. Afterward, it deploys a Helm chart named k8s-infra using the latest version available from the specified Helm chart repository. Finally, the program exports the kubeconfig, allowing you to interact with the cluster using kubectl or other Kubernetes tools, and it exports the status of the Helm deployment.

    Keep in mind that you will need access to an appropriate Helm repository that hosts the k8s-infra chart, and you should replace 'https://charts.mycompany.com/' with the actual repository URL. If the k8s-infra chart requires custom values, you can provide them in the values property within the Chart resource options.

    Run this program using Pulumi CLI by executing pulumi up. This will start the provisioning process, and you will be presented with a preview of the resources Pulumi plans to create. Confirm the deployment to proceed with the actual resource creation in AWS. After the deployment has completed, you can use the exported kubeconfig to manage your Kubernetes cluster and resources.