Deploy the vcluster-onboard helm chart on AWS EKS
TypeScriptTo deploy the
vcluster-onboard
Helm chart on AWS EKS using Pulumi, we would need to follow these steps:-
Set up AWS EKS Cluster: We need to create an Amazon EKS cluster using
eks.Cluster
from Pulumi's EKS package. This cluster serves as the environment where we will deploy our Helm chart. -
Deploy Helm Chart: Once the EKS cluster is provisioned, we utilize
helm.v3.Chart
from Pulumi's Helm package to deploy thevcluster-onboard
chart. We must point to the chart's repository and specify any necessary configuration parameters.
Here's the TypeScript program that performs both these tasks:
import * as eks from "@pulumi/eks"; import * as pulumi from "@pulumi/pulumi"; import * as helm from "@pulumi/kubernetes/helm"; // Step 1: Create an EKS cluster const cluster = new eks.Cluster("vcluster-onboard-eks", { desiredCapacity: 2, // Define the number of worker nodes minSize: 1, maxSize: 2, instanceType: "t2.medium", // Define the instance type for the worker nodes // Options to further customize the EKS cluster can be provided here }); // Export the cluster's kubeconfig export const kubeconfig = cluster.kubeconfig; // Step 2: Deploy the Helm Chart to the EKS Cluster const vclusterChart = new helm.v3.Chart("vcluster-onboard", { chart: "vcluster", version: "0.3.0", // Replace with the desired chart version fetchOpts:{ repo: "https://charts.loft.sh", // Define the repository hosting the vcluster-onboard chart }, namespace: "default", // Specify the namespace. Change if deploying to a different one values: { // Specify values for the Helm chart's configurable parameters here }, transformations: [{ // Make sure the Helm chart is installed on the created EKS cluster resource: (resource, resourceOpts) => { if (resourceOpts.provider) { resourceOpts.provider = cluster.provider; } }, }], }, { dependsOn: [cluster] }); // Ensure the chart is deployed after creating the EKS cluster // Export any additional outputs, such as the Helm release status export const helmStatus = vclusterChart.status;
Explanation:
-
We start by importing the Pulumi EKS package using
@pulumi/eks
which allows us to define and manage EKS clusters with Pulumi. Thehelm
package from@pulumi/kubernetes
enables us to deploy software packaged as Helm charts on our Kubernetes cluster. -
We then create an instance of
eks.Cluster
, specifying the desired number of worker nodes and the instance type for the EKS cluster. The propertiesdesiredCapacity
,minSize
, andmaxSize
control the scaling of the worker nodes in your cluster. You might adjust these values according to your workload requirements. -
The EKS cluster's kubeconfig is exported. This output enables you to interact with your Kubernetes cluster using
kubectl
or other Kubernetes tools. -
Next, we create an instance of
helm.v3.Chart
to deploy thevcluster-onboard
Helm chart onto the EKS cluster. Thechart
property is where you specify the name of the chart, andversion
specifies the chart version you want to deploy. -
The
fetchOpts.repo
is used to specify the URL of the Helm chart's repository. -
The
namespace
property is optional and specifies which Kubernetes namespace to deploy the chart into. -
Since Helm charts can have configurable values, you can provide them as an object to the
values
field. -
The
transformations
array is used to ensure that the Helm chart is installed using the provider of the EKS cluster that we have created. This ensures that Helm knows which Kubernetes cluster to target. -
The
dependsOn
option is set to ensure the Helm chart is only installed after the EKS cluster has been fully provisioned. -
We export the
helmStatus
for visibility into the status of the Helm chart deployment.
Next Steps:
- Before running the code, make sure you have Pulumi and AWS CLI installed and configured.
- Use
pulumi up
to deploy the cluster and Helm chart. - Use
pulumi stack output kubeconfig
to retrieve the kubeconfig for connecting to your EKS cluster.
-