Crossplane as a GitLab integrated service
Problem Statement
As infrastructure management shifts to the left and developers need/want to decide about the infrastructure resources their applications require, they have to learn foreign concepts, like Terraform or various cloud tools. While Terraform seems to be a good choice, it surfaces a whole set of new complexities that someone has to deal with, like configuration drift, upgrades, and learning a new language.
Crossplane tries to solve this problem by leveraging the Kubernetes control plane to maintain the state of the infrastructure, and by introducing higher-level, platform independent, programmable concepts (called XRD) that targets the platform engineer with the lower level configuration requirements, and offers a small, higher-level abstraction for the developers on the resources configured by the platform engineer.
Proposal
Integrate Crossplane into the GitLab Helm Chart and offer it as a service on gitlab.com as an alternative Infrastructure as Code solution, beside Terraform.
Provide a mechanism for the platform engineers to create XRDs and Compositions, and surface the provision resources instances or the available XRCs in the Infrastructure registry.
Reach: 6.0
Terraform is used by ~34-38% of our users. This would lower the barriers to entry to IaC and could serve more users.
Impact: 2.0
This is more than infrastructure as code, as it provides a fully declarative layered by yaml, with config drift detection.
Confidence: 80%
Effort
My guess would be that the initial release would require only minor effort (1.5 - 2 months).
Definition of Done
- [x] The problem is well understood by the PM to have an understanding summarized in a RICE score
- [x] The problem is well understood by the PM to decide if they want to move forward with this idea or drop it
- [ ] The problem is well described and detailed with necessary requirements for product design to understand the problem
- [ ] The problem is well described and detailed with necessary requirements for engineering to understand the problem