- Application: Drupal
- Programimg language: PHP
- DB: MariaDB
- Kubernetes cluster (You can try k3s)
- Database (it could be done via Ansible (MariaDB as example))
- Sealed-secrets controller (to store your secrets in repo in a safe way)
- ArgoCD
- Argo Rollouts
- NFS
- Orchestration: Kubernetes
- Automation tools: Github actions, ArgoCD, Argo Rollouts, Ansible
- SCM: GitHub
- Notification: Slack
- Other tools: Docker, Helm , MariaDB, NFS
GitHub actions workflow starting after pushing tag to the repo. You can use following commands(with your tag version):
git tag -a v1.0.0 -m "v1.0.0"
git push origin v1.0.0
Action | Description |
---|---|
Push tag | Developer pushes tag with the new version of app which triggers github actions. |
Testing | Verification of Helm manifests and Dockerfile . |
Build and push | Build docker image app with the tag from developer and push it to the Github Packages. |
Helm Package | This action generates a helm package and updates files values.yaml and index.yaml . Also appVersion and version are updated in the Chart.yaml . |
Push helm package to git | Push changes to the gh-pages branch (main). |
Slack Notification | Send notification to the Slack. |
- GitHub pages is used as helm artifactory
- ArgoCD WebUI or console is used for deployment
- Argo Rollouts are used for Blue-Green update strategy
Project repository: https://github.com/artsiomborisevich/devops-project
Argo rollouts: https://argo-rollouts.readthedocs.io/en/stable/