eksctl makes it simple to provision Kubernetes clusters in EKS and enable GitOps in the cluster by automating the deployment of Flux v2.
For this workshop, we will create a default three node EKS cluster and automatically enable GitOps for it. eksctl automated installation of Flux v2 will create a repository and synchronize the cluster state with the manifests pushed to it.
Start by creating a configuration file that defines the specifications for your new cluster as well as the details of your GitHub account and repository. Make sure to replace <your GitHub Username> in the manifest below with your GitHub username.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: aws-workshop-cluster
region: us-west-1
nodeGroups:
- name: aws-workshop-ng
instanceType: m5.large
desiredCapacity: 3
gitops:
flux:
gitProvider: "github"
flags:
owner: "<your GitHub Username>"
repository: "aws-workshop-module1"
private: "false"
personal: "true"
branch: "main"
namespace: "flux-system"
path: "clusters/aws-workshop"
read-write-key: "true"Save this file in your home directory and name it ~/workshop-cluster.yaml.
In the section Enable Git Access, you had created and stored a GitHub personal access token in a file named ~/github.env, load that file into the environment:
source ~/github.envTo validate you are ready to proceed, run the following two commands. You should see the contents of the cluster config file, and your GitHub Personal access token.
cat ~/workshop-cluster.yaml
env | grep GITHUB_TOKENNow, you are ready to run eksctl and create your GitOps Enabled Cluster:
eksctl create cluster -f ~/workshop-cluster.yaml
You will see a number of messages scroll, ending with the Flux v2 installed successfully message
2021-06-02 15:45:46 [ℹ] eksctl version 0.53.0
2021-06-02 15:45:46 [ℹ] using region us-west-1
.....
2021-06-02 16:11:05 [✔] all EKS cluster resources for "aws-workshop-cluster" have been created
.....
2021-06-02 16:13:41 [ℹ] gitops configuration detected, setting installer to Flux v2
2021-06-02 16:13:41 [ℹ] ensuring v1 repo components not installed
2021-06-02 16:13:42 [ℹ] running pre-flight checks
► checking prerequisites
.....
2021-06-02 16:13:43 [ℹ] bootstrapping Flux v2 into cluster
► connecting to github.com
.....
✔ all components are healthy
2021-06-02 16:14:53 [✔] Flux v2 installed successfully
2021-06-02 16:14:53 [✔] see https://toolkit.fluxcd.io/ for usage instructions
You should now be able to view your cluster with kubectl
kubectl get nodes