Deploy the kubecost helm chart on AWS EKS
TypeScriptTo deploy the Kubecost Helm chart on an AWS EKS cluster using Pulumi, you'll follow several main steps:
- Create an EKS Cluster: Provision an EKS cluster where your workloads will run.
- Deploy the Kubecost Helm Chart: Use a Helm chart resource to deploy Kubecost, which is used for cost monitoring and management.
To start, you'll need the following prerequisites:
- An AWS account and the AWS CLI configured on your machine.
- Pulumi CLI installed and set up to use AWS.
- Helm CLI installed on your machine.
- Node.js and npm or yarn installed for Pulumi's JavaScript/TypeScript support.
Here is a TypeScript program using Pulumi to deploy Kubecost on AWS EKS:
import * as eks from "@pulumi/eks"; import * as pulumi from "@pulumi/pulumi"; import * as k8s from "@pulumi/kubernetes"; // Create an EKS cluster. const cluster = new eks.Cluster("my-cluster", { desiredCapacity: 3, minSize: 1, maxSize: 4, storageClasses: "gp2", // Define storage class if needed. deployDashboard: false, // Dashboard is not recommended for security reasons. }); // Export the cluster's kubeconfig. export const kubeconfig = cluster.kubeconfig; // Create a Kubernetes provider instance that uses our EKS cluster from above. const provider = new k8s.Provider("eks-k8s", { kubeconfig: cluster.kubeconfig, }); // Deploy Kubecost using the Helm chart. const kubecostChart = new k8s.helm.v3.Chart("kubecost", { chart: "cost-analyzer", version: "1.88.0", // Specify the version of the chart you want to deploy. fetchOpts: { repo: "https://kubecost.github.io/cost-analyzer/", }, values: { // Add any specific configuration values here. }, }, { provider }); // Export the Helm chart resources' `status` to ensure readiness. export const kubecostStatus = kubecostChart.status;
Each piece of the code has a dedicated purpose:
-
The
eks.Cluster
resource creates a managed Kubernetes cluster in AWS EKS. ThedesiredCapacity
,minSize
, andmaxSize
specify the size of the node group. -
The
kubeconfig
is exported so you can interact with your cluster using the kubectl CLI or another Kubernetes client. -
The
k8s.Provider
resource is an abstraction that lets Pulumi know where to deploy subsequent Kubernetes resources, which in this case is the EKS cluster we created. -
The
k8s.helm.v3.Chart
resource is used to deploy applications packaged as Helm charts. Here, it's used to deploy Kubecost using its Helm chart available in the specified repository.
Remember to replace the
version
in thekubecostChart
with the appropriate Kubecost Helm chart version you intend to use, and populate thevalues
property with any configurations you need to set for Kubecost.To apply this program:
- Save the code in a file named
index.ts
. - Run
pulumi up
to preview and deploy the changes.
Once the deployment is successful, you should have an AWS EKS cluster with Kubecost running, allowing you to monitor your cluster's cloud costs.
For further details about these Pulumi resources and their properties, you can check the documentation: