Problem to solve
GitLab Agent with Auto DevOps deploying to GKE AutoPilot doesn’t expose pods to internet automatically. Cluster IP type Services are created, which in AutoPilot, are not accessible from the internet.
If I manually make a load balancer Service and target the pod port, I can reach my pod from the internet. To do that I have to veer away from infra-as-code or create a cluster-repo. I also have to ignore some UI warnings such as “This workload is managed by Helm. Changes made here may be overwritten.” when I click expose on my workload in GKE.
All the GitLab Agent and Auto DevOps docs and multiple videos on the matter failed to mention these additional steps and knowledge needed to get even the most basic of webpages up. Am I missing something?
Steps to reproduce
- Create a GKE AutoPilot cluster
- Create a GitLab hello-world http server
- Install GitLab agent from GitLab project UI, set KUBE_CONTEXT and enable Auto DevOps manual staged deployment
- Deploy a hello-world app
Configuration
- As vanilla as humanly possible
Versions
-
GitLab.com
SaaS
Versions
- GitLab (Web:
/help
or self-managed system informationsudo gitlab-rake gitlab:env:info
): - GitLab Runner, if self-hosted (Web
/admin/runners
or CLIgitlab-runner --version
):
Cloud-native
- Agent for Kubernetes (
Operate > Kubernetes clusters
): latest - Kubernetes (
kubectl version
): latest
Helpful resources
kubectl get service staging-auto-deploy
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
staging-auto-deploy ClusterIP 34.118.237.96 <none> 5000/TCP 2d3h
The ingress class is set to nginx… which is not installed in my AutoPilot cluster, nor did ANY of the documention on GitLab indicate that is a requirement. Using Nginx greatly complicates certificate issuance and maintenance burden, vs built-in GKE Load Balancer.
Why is it not using a Load Balancer? how can I make one on the same domain without interfering with GitLab Agent?