Skip to content
This repository has been archived by the owner on Jul 19, 2023. It is now read-only.

Our sample app to demonstrate CI/CD to your kubernetes environments

License

Notifications You must be signed in to change notification settings

kubefirst/metaphor-frontend-template

Repository files navigation

⚠️ The kubefirst exploration applications metaphor has been merged into one version, and moved inside the gitops-teplate repository.

metaphor-frontend is an example application which serves as a demonstration space for how your applications hook into your infrastructure and tooling.

metaphor-frontend is deployed to all of your environments just like your other applications will be. This means that when you make changes to your ci/cd, you can test it out using an application that works just like your applications do.

The cloud (GitHub/GitLab) deployed instances of metaphor-frontend are available at:

environment url
development https://metaphor-frontend-development.<AWS_HOSTED_ZONE_NAME>
staging https://metaphor-frontend-staging.<AWS_HOSTED_ZONE_NAME>
production https://metaphor-frontend-production.<AWS_HOSTED_ZONE_NAME>

The local deployed instances of metaphor-frontend is available at:

environment url
development https://metaphor-frontend-development.localdev.me
staging https://metaphor-frontend-staging.localdev.me
production https://metaphor-frontend-production.localdev.me

metaphor-frontend currently demonstrates the following capabilities:

  • building a docker container
  • publishing a docker container to ecr
  • publishing a prerelease helm chart
  • gitops delivery of metaphor-frontend to different namespaces
  • a release process that publishes a release chart and patches the chart version to prepare for the next release
  • secrets sourced from vault
  • certificate management using cert-manager
  • automatic dns management using external-dns

CI/CD

metaphor-frontend has 5 ci stages defined in its .gitlab-ci.yml file.

  • branch: branch jobs run when your branch pushes to origin and report status to your merge requests
  • publish: publishes your docker container to ecr and publishes your prerelease chart to chartmuseum
  • development: sets the desired chart version for development
  • staging: sets the desired chart version for staging
  • release: publishes a release chart, sets the desired chart version for production, and patches chart in source for the next release

argocd is the gitops tool responsible for auto syncing the desired state in each environment. It follows a pull model so our CI/CD ecosystem doesn't need to know how to connect to our kubernetes clusters.

We have metaphor-frontend set up to run its automation by invoking argo-workflows. Those submitted workflows can be found in the .argo directory of this repository.

Setup Instructions

  • You will need node and yarn installed globally on your machine.
  • Make sure you are using NodeJS >= v16.15.1
  • Install dependencies yarn install
  • Start the server yarn dev
  • Go to localhost:3000
  • Enjoy 🥳🎉