Poor man's kubernetes
I captured a VPS with 3 vCPU, 30GB in the black friday sale from VeloxMedia, that opened the door for me to try run a web app with one-node kubernetes cluster. I understand this is overkill for a todo-like application, but it is fun to explore the k8s world with barely no support from the platform.
Objectives
I want to build a fully automated GitOps pipeline:
- The pull request will trigger the CI pipeline to run unit tests, and build a docker image and store it in the private docker registry.
- Optionally, we can manually deploy the artifact to the staging environment for verification.
- Once the request is merged into
mainbranch, the CD pipeline will deploy the helm chart to the production environment.
This requires several components to work together:
- The CI pipeline, like GitHub Action.
- A private docker registry, such as Harbor.
- A key management system(KMS), such as Vault and SOPS.
- A Kubernetes deployer, such as ArgoCD and OctopusDeploy
- A Kubernetes cluster, orchestrated by K3S.
Ideally, I want these infrastructure outsourced. One possible solution is to leverage the DevOps offering from OCI. Unfortunately, the OCI disabled the DevOps offering for free account even though container registry is free.
Other options are:
- GitHub Action for CI/CD pipeline.
- Docker Hub private container image registry. We might upgrade to the GitHub paid plan for its container registry in the future.