Deploy the redis-cart helm chart on AWS EKS
TypeScriptTo deploy the
redis-cart
Helm chart on AWS EKS using Pulumi, we'll follow these steps:-
Create an EKS Cluster: We'll use the
eks.Cluster
component from theeks
package to create a managed Kubernetes cluster on AWS. This resource abstracts away a lot of the details needed to set up an EKS cluster and makes it very simple to get a cluster up and running. -
Define EKS Role: You will need to set up the necessary IAM roles for EKS with the
aws-iam.EKSRole
resource from theaws-iam
package. This typically includes a role that the EKS service will assume to create AWS resources such as EC2 instances for the Kubernetes nodes. -
Create Node Group: We'll add a node group to the EKS cluster using the
eks.NodeGroup
resource to define the EC2 instances that will serve as worker nodes for the Kubernetes cluster. -
Deploy Helm Chart: Finally, we’ll use the
helm.v3.Chart
resource to deploy theredis-cart
Helm chart on the EKS cluster that we've created.
Below is the TypeScript program that accomplishes this. Each step includes inline comments explaining what the code does:
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'; // Create an EKS cluster with the default configuration const cluster = new eks.Cluster('my-eks-cluster', {}); // Exports the kubeconfig to connect to the cluster export const kubeconfig = cluster.kubeconfig; // Deploy the `redis-cart` helm chart on the EKS cluster const redisCartChart = new k8s.helm.v3.Chart('redis-cart', { chart: 'redis-cart', version: '1.2.3', // replace with the specific chart version you want to deploy fetchOpts: { repo: 'http://charts.myhelmrepo.com', // replace with the actual helm chart repository URL }, }, { provider: cluster.provider }); // Export the endpoint of the EKS cluster export const clusterEndpoint = cluster.core.endpoint; // We must export the cluster's kubeconfig so that a client can easily access our cluster. export const kubeconfig = pulumi.secret(cluster.kubeconfig); // Run `pulumi up` to deploy the resources and helm chart // The `kubeconfig` will be printed as an output that you can use with `kubectl` to interact with your EKS cluster // The `clusterEndpoint` is the entry point for your EKS cluster's API server, useful for connecting Kubernetes tools such as `kubectl`
Make sure the
version
and therepo
in theredisCartChart
declaration accurately reflect the version and repository of the Helm chart you wish to deploy.After running the
pulumi up
command, Pulumi will provision the required AWS and Kubernetes resources and deploy your chart.Once the command completes successfully, it will output the
kubeconfig
that you can use to manage your Kubernetes cluster withkubectl
. To ensure the security of your cluster, remember to treat yourkubeconfig
with the same caution and security considerations as you would with any other credential.-