1. Answers
  2. Deploy Zookeeper Helm Chart on AWS EKS

How Do I Deploy the Zookeeper-Helm-Chart on AWS EKS?

Introduction

In this guide, you will learn how to deploy the Zookeeper Helm chart on an AWS EKS cluster using Pulumi. This process involves setting up an EKS cluster and deploying the Helm chart using Pulumi’s powerful infrastructure as code capabilities. By the end of this guide, you will have a Zookeeper instance running on AWS EKS, managed through Pulumi.

Step-by-Step Deployment Process

  1. Create an EKS Cluster: Set up the necessary infrastructure on AWS to support Kubernetes, which includes creating an EKS cluster.

  2. Deploy the Zookeeper Helm Chart: Use the Helm provider to deploy the Zookeeper chart on the EKS cluster.

Below is a detailed explanation of each step and the corresponding Pulumi program written in TypeScript to accomplish this.

Detailed Explanation

  1. EKS Cluster: We utilize the eks.Cluster resource from the @pulumi/eks package to create an EKS cluster. This simplifies the process by abstracting away much of the complexity involved in setting up an EKS cluster, offering a high-level interface for configuration.

  2. IAM Role: An IAM role is created to allow the EKS cluster to manage AWS resources effectively. This role is essential for granting the necessary permissions.

  3. Helm Chart Deployment: The kubernetes.helm.v3.Chart resource from the @pulumi/kubernetes package is used to deploy the Zookeeper Helm chart. This resource simplifies the deployment of Helm charts on Kubernetes by handling the necessary configurations.

Pulumi Program

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
const cluster = new eks.Cluster("zookeeper-cluster", {
    instanceType: "t2.medium",
    desiredCapacity: 2,
    minSize: 1,
    maxSize: 3,
    // Enable the default node group
    skipDefaultNodeGroup: false,
});

// Create an IAM Role for the EKS cluster
const role = new aws.iam.Role("eksRole", {
    assumeRolePolicy: aws.iam.assumeRolePolicyForPrincipal({
        Service: "eks.amazonaws.com",
    }),
});

// Attach the AmazonEKSClusterPolicy to the role
new aws.iam.RolePolicyAttachment("eksRolePolicyAttachment", {
    role: role.name,
    policyArn: "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy",
});

// Export the cluster's kubeconfig
export const kubeconfig = cluster.kubeconfig;

// Deploy the Zookeeper Helm Chart
const zookeeperChart = new k8s.helm.v3.Chart("zookeeper", {
    chart: "zookeeper",
    version: "6.2.3",
    fetchOpts: {
        repo: "https://charts.bitnami.com/bitnami",
    },
    values: {
        // Any custom values for the Helm chart
    },
}, { provider: cluster.provider });

// Export the cluster's name
export const clusterName = cluster.eksCluster.name;

Key Points

  • EKS Cluster Creation: Use the eks.Cluster for simplified EKS cluster setup.
  • IAM Role Configuration: Essential for granting the EKS cluster permissions to manage AWS resources.
  • Helm Chart Deployment: The kubernetes.helm.v3.Chart resource allows for straightforward deployment of Helm charts.

Conclusion

By following this guide, you have successfully deployed the Zookeeper Helm chart on an AWS EKS cluster using Pulumi. This setup provides a scalable and manageable way to run Zookeeper on AWS, leveraging Pulumi’s infrastructure as code capabilities for efficient resource management.

Deploy this code

Want to deploy this code? Sign up for a free Pulumi account to deploy in a few clicks.

Sign up

New to Pulumi?

Want to deploy this code? Sign up with Pulumi to deploy in a few clicks.

Sign up