1. Deploy the cluster-gitlab-runner helm chart on AWS EKS


    To deploy the cluster-gitlab-runner Helm chart on AWS EKS (Elastic Kubernetes Service), we'll walk through the following steps:

    1. Create an EKS Cluster: Set up the AWS EKS cluster where our GitLab Runner will operate.
    2. 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 and kubernetes 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 the eks 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 the cluster-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 run pulumi 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 the cluster-gitlab-runner Helm chart you want to deploy and review any configuration options specific to the chart, providing additional values via the values field if needed.