Deploy the shortlink-template helm chart on AWS EKS
TypeScriptDeploying a Helm chart on an Amazon EKS (Elastic Kubernetes Service) cluster involves several steps:
- Provision the EKS cluster itself.
- Ensure you have an IAM role that grants EKS permission to make calls to other AWS services on your behalf.
- Configure
kubectl
to interact with the new EKS cluster. - Use the Helm CLI or a Pulumi resource to deploy your chart to the EKS cluster.
Below, you will find a Pulumi program written in TypeScript that will create an EKS cluster and deploy a Helm chart, specifically assumed to be the
shortlink-template
here. It uses the@pulumi/eks
package which provides a high-level interface for creating and managing an EKS cluster, and the@pulumi/kubernetes
package to work with the Kubernetes resources, including Helm charts.Firstly, ensure you have Pulumi and
kubectl
installed and configured for the AWS account:- Install Pulumi: Follow the instructions on the Pulumi Installation Guide.
- Install
kubectl
: Follow the Kubernetes documentation on installing kubectl. - Configure AWS credentials: You can do this by setting AWS access keys in either the AWS CLI configuration file or by using environment variables.
Next, let's proceed to the code. Remember, this code assumes that you have Pulumi and AWS configuration already set up. Before running the Pulumi program, you would need to install the required NPM packages by running
npm install
with apackage.json
specifying dependencies on@pulumi/pulumi
,@pulumi/eks
and@pulumi/kubernetes
.import * as pulumi from '@pulumi/pulumi'; import * as k8s from '@pulumi/kubernetes'; import * as eks from '@pulumi/eks'; // Create an EKS cluster. const cluster = new eks.Cluster('my-cluster', { instanceType: 't2.medium', desiredCapacity: 2, minSize: 1, maxSize: 2, storageClasses: 'gp2', deployDashboard: false, }); // Export the cluster's kubeconfig. export const kubeconfig = cluster.kubeconfig; // Deploy a Helm chart to the EKS cluster. const helmChart = new k8s.helm.v3.Chart('shortlink-template', { chart: 'shortlink-template', // You may need to add repository options if it's from a custom Helm repo. fetchOpts: { repo: 'http://<your-helm-chart-repository-url>', }, // Values from your custom values file or inline values // e.g., values: { service: { type: 'LoadBalancer' } }, if needed. }, { provider: cluster.provider }); // Required to allow Helm Chart resources to be created pulumi.all([cluster.name, helmChart.status]).apply(([clusterName, helmChartStatus]) => { if (helmChartStatus === 'deployed') { console.log(`Helm chart 'shortlink-template' has been deployed to the cluster '${clusterName}'.`); } }); // Export the Helm chart resources export const helmResources = helmChart.resources;
With this program:
- You create an EKS cluster with the desired configuration using the
eks.Cluster
class. - You then declare a Helm chart resource using
k8s.helm.v3.Chart
. The chart's repository URL should be provided if it's not a standard Helm chart. kubeconfig
is exported so that you can use it withkubectl
to interact with your cluster.- The program will output some console log information after successfully deploying the Helm chart.
- Finally,
helmResources
is exported which provides details about the deployed resources by the Helm chart.
To run the program, simply execute
pulumi up
in the directory of your project. This command will initiate provisioning of the resources as described in the code. Pulumi CLI will display the progress and any output defined within the code, such as the kubeconfig for accessing the Kubernetes cluster.Make sure to review and customize the Helm chart name and repository URL (if needed) before running the Pulumi program. The values and configurations for the Helm chart used here are placeholders and should be replaced with the actual ones as per your
shortlink-template
chart.