This is a Zero module which sets up a service which can be deployed to the environment set up with zero-aws-eks-stack.
The /templates folder is meant to be filled in via Zero and results in Simple Go Service with a status endpoint. It also contains a simple CircleCI pipeline which defines how to build and deploy the service.
This repository is language/business-logic agnostic; mainly showcasing some universal best practices:
- Built in containerization with docker
- Deployment flow with kubernetes
- Out of the box CI/CD flow CircleCi
- testing
- building docker image
- uploading docker image to private registry (ECR)
- deploy with kustomize
- manual approval step for production environment
/ # file in the root directory is for initializing the user's repo and declaring metadata|-- Makefile #make command triggers the initialization of repository|-- zero-module.yml #module declares required parameters and credentials|# files in templates become the repo for users| scripts/
||# these are scripts called only once during zero apply, and we don't||# expect a need to rerun them throughout development of the repository||# used for checking binary requires / setting up CI / secrets|||-- check.sh
|||-- gha-setup.sh
|||-- required-bins.sh
|||-- setup-stripe-secrets.sh
| templates/
||# this makefile is used both during init and||# on-going needs/utilities for user to maintain their infrastructure||-- Makefile
||-- kubernetes/
||-- base/
|||-- cronjob.yml
|||-- deployment.yml
|||-- kustomization.yml
|||-- service.yml
||-- migration/
|||-- job.yml
||-- overlays/
|||-- production/
||||-- deployment.yml
||||-- ingress.yml
||||-- kustomization.yml
||||-- pdb.yml
|||-- staging/
||||-- deployment.yml
||||-- ingress.yml
||||-- kustomization.yml
||||-- pdb.yml
|||-- dev/
||||-- deployment.yml
||||-- ingress.yml
||||-- kustomization.yml
||||-- pdb.yml
||-- secrets/
|||-- .gitignore
|||-- kustomization.yml
|||-- namespace.yml
Prerequisites
- Kubernetes Cluster up and running
- Have CircleCI and Github token setup with the Zero project
- CI-user created via EKS-stack with access to ECR and your EKS
This step is meant to be executed during zero apply, includes following steps:
- Adding environment variables to CircleCI project
- Linking the CircleCi with the github repository
- Linking the circleCI will automatically trigger the first build and deploy your application to EKS cluster
The corresponding frontend for this app is zero-frontend-react.
Project board: zenhub