Fix Version/s: None
Here's the steps we followed to deploy exposurelog. This exercise showed that Safir, lsp-deploy and Argo CD simplify considerably the deployment process. Safir makes it easy to build and upload the application docker image as part of CI. The deployment heavy lift is done by lsp-deploy that takes care of all the infrastructure components (nginx, argocd, vault-secrets-operator, cert-issuer and cert-manager, etc) on existing environment, like bleed. Argo CD deploys the application chart and syncs the deployment configuration. Access to the cluster via kubectl is not required and the developer can focus on his application working on the charts and lsp-deploy repos.
1. Make sure the Docker image is pushed to Docker Hub as part of CI
- Check Safir documentation about creating/using the Docker credentials https://safir.lsst.io/set-up-from-template.html?highlight=docker#configure-docker-hub-credentials
- Bypass daf_buttler to make CI run so that we have a docker image pushed to Docker Hub
- The docker image should appear in Docker Hub under lsstsqre/exposurelog
2. Helm chart for exposurelog
- Follow instructions to create your chart in https://github.com/lsst-sqre/charts
- See this documentation https://helm.sh/docs/topics/charts/#the-chart-file-structure
- Read some introduction to Kubernetes to understand basic concepts like pod, deployment, service, etc
- You can edit the values.yaml and see how Helm render the templates using "helm template ."
- Next step is to test the Helm chart using Argo CD in the bleed environment, we can do that manually creating an Argo CD app that points to your chart branch
- Similarly we can deploy the Postgres Helm Chart
- We'll need to manage the database credentials, creating secrets in Vault
- At this point we should have exposurelog deployed and working with Postgres.
3. Add the exposurelog Helm chart to lsp-deploy
- In this step we'll make the exposurelog deployment part of lsp-deploy so that we can manage the deployment configuration in GitHub
- The README in https://github.com/lsst-sqre/lsp-deploy has a nice description of the different layers involved