Deploy the backup-maker-controller helm chart on AWS EKS
TypeScriptIn order to deploy the
backup-maker-controller
Helm chart on an AWS EKS cluster, you will need to follow these high-level steps:- Create an Amazon EKS cluster using
aws.eks.Cluster
resource. - Deploy the Helm chart using the
kubernetes.helm.sh/v3.Chart
resource, which relies on the existence of a Kubernetes cluster and applicablekubeconfig
file to interact with it.
The following Pulumi program in TypeScript will guide you through setting up an AWS EKS cluster and deploying the
backup-maker-controller
Helm chart into that cluster:First, we'll set up the EKS cluster. This is done by creating a new instance of
eks.Cluster
, which will provision the cluster on AWS. This involves setting up the required VPC and IAM roles as well, but for simplicity, we'll assume default roles and VPC are sufficient.After the cluster is ready, we'll deploy the
backup-maker-controller
Helm chart. This involves using thehelm.sh/v3.Chart
resource, which will manage the Helm release for us from within our 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 with the default configuration. const cluster = new eks.Cluster("backup-maker-cluster", {}); // Export the cluster kubeconfig and name to be used outside the Pulumi stack. export const kubeconfig = cluster.kubeconfig; export const clusterName = cluster.eksCluster.name; // Define the Helm chart for deployment. const backupMakerChart = new k8s.helm.v3.Chart("backup-maker-controller", { fetchOpts: { // Replace `repoUrl` with the actual Helm chart repository URL. // This is where your Helm chart is hosted. repo: "https://charts.yourcompany.com/", }, chart: "backup-maker-controller", version: "1.0.0", // Replace with the desired chart version namespace: "default", // Replace with the namespace where you want to deploy your chart }, { provider: cluster.provider }); // Export the Helm chart deployment name. export const chartName = backupMakerChart.releaseName;
In this program:
- We first import the required modules from Pulumi to manage AWS resources, EKS clusters, and Kubernetes resources.
- We create a new EKS cluster using the
eks.Cluster
class. This cluster is provisioned with all the necessary components such as an IAM role for EKS and a VPC. For this specific example, we are using the default configurations provided by Pulumi. - We export the
kubeconfig
which provides the necessary credentials to access the cluster. This output can be used to interact with the cluster viakubectl
or any Kubernetes SDK. - We define the
backupMakerChart
using thek8s.helm.v3.Chart
class. You'll need to replacerepoUrl
with the URL of your Helm chart's repository and choose the correct chart version. - The
chartName
is exported, which can be helpful if you need to reference the deployed Helm chart from other parts of your Pulumi program or in the Pulumi stack outputs. - We pass
cluster.provider
to the Helm chart to ensure it deploys to the EKS cluster we created.
Remember to replace the placeholder values such as
https://charts.yourcompany.com/
and1.0.0
with the actual repository URL and version of your Helm chart.To run this, you would typically check this code into a Pulumi project and use the Pulumi CLI to execute it. Make sure you have the AWS and Kubernetes configurations set up correctly for Pulumi to access both your AWS account and the Kubernetes cluster.
Once the Pulumi program is executed, it will create the AWS EKS cluster and deploy the
backup-maker-controller
Helm chart onto it, without any manual intervention required for Helm commands orkubectl
.- Create an Amazon EKS cluster using