Auto DevOps readiness for Kubernetes 1.16
Update: The documentation for Kubernetes 1.16+ support can be found here. GitLab 13.0 supports Kubernetes 1.16 out of the box for new deployments, but existing deployments that include the in-cluster PostgreSQL will need to be manually upgraded.
Problem to solve
Kubernetes 1.16 no longer will be serving extensions/* and apps/beta* API versions, all resources should stop using them.
Auto Devops should continue to work Kubernetes 1.16 and up.
- NetworkPolicy (in the extensions/v1beta1 API group)
- Migrate to use the networking.k8s.io/v1 API, available since v1.8. Existing persisted data can be retrieved/updated via the networking.k8s.io/v1 API.
- PodSecurityPolicy (in the extensions/v1beta1 API group)
- Migrate to use the policy/v1beta1 API, available since v1.10. Existing persisted data can be retrieved/updated via the policy/v1beta1 API.
- DaemonSet, Deployment, StatefulSet, and ReplicaSet (in the extensions/v1beta1 and apps/v1beta2 API groups)
- Migrate to use the apps/v1 API, available since v1.9. Existing persisted data can be retrieved/updated via the apps/v1 API.
Proposal
Update the auto-deploy-app
helm chart:-
gitlab-org/charts/auto-deploy-app#22 (moved) (straightforward)- gitlab-org/charts/auto-deploy-app#8 (closed) (much harder, probably need manual steps)
- gitlab-org/charts/auto-deploy-app#28 (closed) The postgresql dependent chart also uses the old deployment API. This is the hardest.
Relevant links
- https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/
- https://kubernetes.io/blog/2019/09/18/kubernetes-1-16-release-announcement/
- gitlab-org/charts/gitlab-runner!167 (merged)
Follow-up issues
- #209045 (closed)
- AutoDevOps: Automatically detect Kubernetes 1.16 (#209237 (closed))
- Auto DevOps: Default to version 2 Postgres (#210499 (closed))