- Create GitHub Repository
- Create EKS Cluster with Terraform
- Install Cert-Manager on Kubernetes
- Install actions-runner-controller
- Create Single GitHub Actions Self Hosted Runner
- Create Multiple GitHub Actions Self Hosted Runners
- Autoscaling with Kubernetes
- Create private GitHub repository
lesson-089
-
Go over each file under
terraformfolder -
Create EKS with terraform
terraform init terraform apply- Configure kubectl
aws eks --region us-east-1 update-kubeconfig --name demoif you get an error 'NoneType' object is not iterable, run rm ~/.kube/config
- Check connection with Kubernetes
kubectl get svc- Add Helm repo
helm repo add jetstack https://charts.jetstack.io- Update Helm
helm repo update- Search for latest verion
helm search repo cert-manager- Split the screen and install Helm chart
watch kubectl get pods -A- Install Helm chart
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager \ --create-namespace \ --version v1.6.0 \ --set prometheus.enabled=false \ --set installCRDs=true-
Create GitHub App, call it
k8s-actions-89 -
Create namespace
kubectl create ns actions- Create secret to authenticate with GitHub
kubectl create secret generic controller-manager \ -n actions \ --from-literal=github_app_id=<> \ --from-literal=github_app_installation_id=<> \ --from-file=github_app_private_key=<>- Add actions helm repo
helm repo add actions-runner-controller https://actions-runner-controller.github.io/actions-runner-controller helm repo update helm search repo actions- Install Helm chart
helm install actions \ actions-runner-controller/actions-runner-controller \ --namespace actions \ --version 0.14.0 \ --set syncPeriod=1m- Create
k8s/runner.yaml
kubectl apply -f k8s/runner.yaml kubectl get pods -n actions kubectl logs -f k8s-single-runner -c runner -n actions-
Go to GitHub to check self hosted runners
-
Clone
lesson-089repository
git clone git@github.com:antonputra/lesson-089.git- Create
.github/workflows/main.yaml - Commit & push
- Check pods
kubectl get pods -n actions- Create
k8s/runner-deployment.yaml
kubectl apply -f k8s/runner-deployment.yaml kubectl get pods -n actions-
Check in GitHub repo self-hosted runners
-
Create 2 build jobs with docker
-
Create
Dockerfile -
Ceate
.github/workflows/example-2.yaml
- Deploy
k8s/horizontal-runner-autoscaler.yaml
kubectl apply -f k8s/horizontal-runner-autoscaler.yaml- Ceate
.github/workflows/example-3.yaml