Deploy the elasticsearch-sed helm chart on AWS EKS
TypeScriptTo deploy an Elasticsearch helm chart on an AWS EKS cluster using Pulumi, you'll need to follow these steps:
- Create an EKS Cluster: This is a managed Kubernetes service on AWS. You create a cluster which forms the control plane.
- Install the Helm Chart: Helm is a package manager for Kubernetes that allows you to deploy applications defined by a Helm chart. In this case, you'll use the Elasticsearch helm chart.
Below is a complete Pulumi TypeScript program that performs these steps. We will use the
@pulumi/eks
package to create the cluster and the@pulumi/kubernetes
package to deploy the Helm chart.Before you begin, ensure you have Pulumi and the AWS CLI installed and configured on your local machine. You'll also need
kubectl
to interact with the EKS cluster.First, install the necessary Pulumi packages by running:
npm install @pulumi/pulumi @pulumi/aws @pulumi/awsx @pulumi/eks @pulumi/kubernetes
Now, here is the complete program to deploy Elasticsearch on AWS EKS:
import * as eks from "@pulumi/eks"; import * as k8s from "@pulumi/kubernetes"; import * as awsx from "@pulumi/awsx"; // Create a new VPC for our cluster or use an existing one. const vpc = new awsx.ec2.Vpc("vpc", {}); // Create an EKS cluster. const cluster = new eks.Cluster("cluster", { vpcId: vpc.id, publicSubnetIds: vpc.publicSubnetIds, // Specify additional settings here if needed. }); // Create a Kubernetes provider instance that uses our EKS cluster. const provider = new k8s.Provider("provider", { kubeconfig: cluster.kubeconfig.apply(JSON.stringify), }); // Deploy Elasticsearch using a Helm chart. const elasticsearchHelmChart = new k8s.helm.v3.Chart("elasticsearch", { chart: "elasticsearch", version: "7.10.0", // specify the version you need fetchOpts: { repo: "https://helm.elastic.co", }, }, { provider: provider }); export const kubeconfig = cluster.kubeconfig;
In the program above:
- We first set up a VPC with
awsx.ec2.Vpc
to create network isolation for the EKS Cluster. - We create the EKS cluster using the
eks.Cluster
class. - We set up the Kubernetes provider using credentials from our newly created EKS cluster.
- We deploy Elasticsearch using the
k8s.helm.v3.Chart
class, specifying the Elasticsearch Helm chart by its name and version. ThefetchOpts
field contains the repository URL where the Helm chart is hosted. - Finally, we export the
kubeconfig
, so you can usekubectl
to interact with your cluster.
To deploy this configuration, save it to a file
index.ts
. To initialize a new Pulumi project in the same directory, runpulumi new
. Choosetypescript
as the template language when prompted.After initializing the project, run the Pulumi deployment command with
pulumi up
. This will start the deployment process, which includes provisioning the EKS cluster and installing the Elasticsearch Helm chart on it. Once the command completes, your Elasticsearch cluster should be up and running.For more information on the Pulumi EKS package, you can check out the documentation here, and for the Helm chart deployment, you can find additional details here.