Intermediary abstraction between AutoDevOps and cloud providers
Problem to solve
We currently have a AutoDevOps/k8s deployment solution that, although it is not tied down or in any way limited to GKE, it uses GKE as our first and best integration. We should abstract that interface in order to more easily support different cloud providers in a consistent, easy to use way.
This would address a number of target audiences:
- CIO who is responsible for finding a DevOps solution that is truly multi-cloud capable
- Developer who wants to build their code once and let an abstraction layer handle different cloud implementations of k8s
There are now open source solutions such as CrossPlane (https://github.com/crossplaneio/crossplane) which provide an intermediary control plane for use with various multi-cloud k8s providers. If instead of targeting GKE first we targeted CrossPlane, we could offer better out of the box multi-cloud offering, while avoiding building this glue/abstraction code ourselves.
This issue proposes:
- Selecting a solution like Amazon's EKS or Digital Ocean's k8s offering
- Modifying AutoDevOps code to target CrossPlane in addition to current behavior (so as not to break existing functionality for current users)
- Add EKS or DO support through CrossPlane
- Deprecate existing behavior and support GKE/current users also through CrossPlane
What does success look like, and how can we measure that?
- Better multi-cloud support with more offerings working out of the box
- Opportunity to take advantage of monitoring/control plane features delivered by CrossPlane
- Contribution to open source project CrossPlane, which is an important part of GitLab's stewardship ethos