Deploy the cluster-gitlab-runner helm chart on AWS EKS
TypeScriptTo deploy the
cluster-gitlab-runner
Helm chart on AWS EKS (Elastic Kubernetes Service), we'll walk through the following steps:- Create an EKS Cluster: Set up the AWS EKS cluster where our GitLab Runner will operate.
- Deploy the Helm Chart: Use Pulumi's Kubernetes provider to deploy the
cluster-gitlab-runner
Helm chart to our EKS cluster.
We will use Pulumi with the
eks
andkubernetes
packages to create an EKS cluster and deploy the Helm chart.1. Creating an EKS Cluster
We'll start by creating an EKS cluster using the
eks.Cluster
resource from theeks
package. This abstracts away a lot of complexity, making it simpler to spin up a new cluster.2. Deploying the Helm Chart
Next, we use the
kubernetes.helm.v3.Chart
resource to deploy thecluster-gitlab-runner
helm chart onto our EKS cluster.Let's go through the complete program:
import * as pulumi from '@pulumi/pulumi'; import * as eks from '@pulumi/eks'; import * as k8s from '@pulumi/kubernetes'; // Create an EKS cluster. const cluster = new eks.Cluster('my-eks-cluster', { // Specify desired settings for the cluster. version: '1.19', // Specify your desired Kubernetes version instanceType: 't2.medium', // Specify the instance type for worker nodes desiredCapacity: 2, // Set desired number of worker nodes minSize: 1, // Set the minimum number of worker nodes maxSize: 3, // Set the maximum number of worker nodes }); // Once the cluster is created, we can get its kubeconfig. const kubeconfig = cluster.kubeconfig.apply(JSON.stringify); // Create a Kubernetes Provider instance configured to our newly created EKS cluster. const k8sProvider = new k8s.Provider('k8s-provider', { kubeconfig: kubeconfig, }); // Deploy the cluster-gitlab-runner Helm chart using the Kubernetes provider. const gitlabRunnerChart = new k8s.helm.v3.Chart('gitlab-runner-chart', { chart: 'cluster-gitlab-runner', version: 'YOUR_DESIRED_CHART_VERSION', // Replace with the desired chart version fetchOpts:{ repo: 'https://charts.gitlab.io/', // The repository where the chart is hosted }, }, { provider: k8sProvider }); // Export the cluster's kubeconfig. export const kubeconfigOutput = kubeconfig;
In this program:
- We create an EKS cluster with a specified Kubernetes version and instance type for the worker nodes (
t2.medium
is used as an example). You might choose different settings based on your needs. - We define the size of our EKS cluster with desired, minimum, and maximum numbers of worker nodes.
- We create a Kubernetes provider configured with our EKS cluster's kubeconfig, enabling us to interact with the cluster.
- We then use this provider to deploy the
cluster-gitlab-runner
Helm chart. You will need to replace'YOUR_DESIRED_CHART_VERSION'
with the actual version of the chart you wish to deploy. - The Helm chart is installed from the
https://charts.gitlab.io/
repository, which you should replace with the correct Helm repo URL if different. - Lastly, we export the kubeconfig needed to access the EKS cluster, which you can use with
kubectl
or other Kubernetes tools.
To run this program, you'll need Pulumi
v3.x.x
or later, and you should have your AWS credentials configured. Save the code in a file (e.g.,index.ts
), and then runpulumi up
to deploy this stack. The CLI will guide you through the process.Please make sure to replace
YOUR_DESIRED_CHART_VERSION
with the version of thecluster-gitlab-runner
Helm chart you want to deploy and review any configuration options specific to the chart, providing additional values via thevalues
field if needed.