Details
-
Type:
RFC
-
Status: Adopted
-
Resolution: Unresolved
-
Component/s: DM
-
Labels:None
Description
We have been discussing adding a section with guidelines on the deployment of services in the developer guide in order to inform practices in the area.
The baseline will be the model developed by SQuaRE, now used by other teams like Telescope & Site and can be summarized as:
1. Strong encouragement to develop Kubernetes-based services whenever possible; Kubernetes gives us portability across all our in-house and commodity infrastructure platforms by abstracting service code from details of underlying resources. (This is actually mandatory for all Science Platform related services).
2. Encouragement to use ArgoCD (implies GitOps) as a deployment framework for Kubernetes services. This improves the ability to provide operational cover to services whose details one is not intimately familiar with.
3. Recommend the practice of using Vault to store deployment secrets and credentials in order to support GitOps operations.
... and of course offer pointers to technical documentation.
Like with other sections of the developer guide, the intent here is to promote certain toolchains and practices particularly to guide new developers in the right direction. Nobody is going to make anybody rewrite anything they don't want to
Discussion welcome.
I would suggest making the deployment of services on k8s explicitly mandated but with a specified bureaucratic process for requesting a special exception. Special snowflakes require additional effort to support and I believe we as a project have a compelling interest to try to minimize them.