1. Deploy the auditbeat helm chart on AWS EKS


    Deploying an Auditbeat Helm chart on AWS Elastic Kubernetes Service (EKS) involves several steps with Pulumi. You will need to create an EKS cluster, configure the Kubernetes provider to connect to the created EKS cluster, and then deploy the Helm chart on the cluster.

    Here are the steps we'll follow in the Pulumi TypeScript program:

    1. Create an EKS cluster using the awsx higher-level library, which simplifies the process.
    2. Set up the Kubernetes provider to interact with our EKS cluster.
    3. Deploy the Auditbeat Helm chart to the cluster using the Kubernetes API in Pulumi.

    Please ensure that you have the following prerequisites before running the Pulumi program:

    • Pulumi CLI installed and configured with the appropriate AWS credentials.
    • kubectl installed locally to interact with the EKS cluster.
    • Helm CLI installed locally (if you want to manipulate Helm charts directly).
    • AWS CLI installed and configured.

    Now, let's move on to the Pulumi program:

    import * as awsx from "@pulumi/awsx"; import * as pulumi from "@pulumi/pulumi"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Create an AWS EKS cluster using the awsx library. const cluster = new awsx.eks.Cluster("my-cluster", { desiredCapacity: 2, // Desired number of worker nodes. minSize: 1, // Minimum number of worker nodes. maxSize: 3, // Maximum number of worker nodes. instanceType: "t2.medium" // Type of instance to use for the worker nodes. }); // For more customization options, visit: https://www.pulumi.com/registry/packages/awsx/api-docs/eks/cluster/ // Step 2: Configure the Kubernetes provider to use the kubeconfig from the created EKS cluster. const provider = new k8s.Provider("provider", { kubeconfig: cluster.kubeconfig.apply(JSON.stringify), }); // Step 3: Deploy the Auditbeat Helm chart to the EKS cluster. const auditbeatChart = new k8s.helm.v3.Chart("auditbeat", { chart: "auditbeat", version: "7.9.3", // Make sure to use the version you require. namespace: "kube-system", // Usually, system-level services are deployed in the "kube-system" namespace. fetchOpts: { repo: "https://helm.elastic.co", // Auditbeat Helm chart repository. }, }, { provider: provider }); // Ensure that the Helm chart is deployed using the correct Kubernetes provider. // Export the cluster's kubeconfig and endpoint to interact with it using kubectl and other tools. export const kubeconfig = cluster.kubeconfig; export const clusterEndpoint = cluster.core.endpoint;

    In this Pulumi program:

    • We define and create an EKS cluster with a desired capacity of 2 worker nodes where you can adjust the count and size to your needs.
    • The Kubernetes provider is configured using the kubeconfig generated by the EKS cluster.
    • The Auditbeat Helm chart is deployed to the kube-system namespace. The repo option specifies the repository where the Auditbeat Helm chart is located.

    To run this program, save it in a file index.ts, and then execute the following commands in your terminal:

    1. pulumi up - to preview and deploy the changes.
    2. kubectl --kubeconfig <kubeconfig-path> get pods -n kube-system - to verify that the Auditbeat pods are running. Replace <kubeconfig-path> with the path to your generated kubeconfig file from Pulumi's stack output.

    Remember to examine the Helm chart values and provide any necessary values that align with your particular use case. The example provided uses default configurations which may need to be adapted.