DinoPark - An Introduction

September 13, 2021 · View on GitHub

This document is work in progress but should give some high level overview and point to the right places.

Repositories

Front-End

Back-End

Rust:

NodeJS:

Libraries

Rust:

Tools

Support

Infrastructure and 3rd Party Services

General Micro Service Repository Structure

All DinoPark micro service repositories share a common structure.

Kubernetes (k8s)

All kubernetes related configuration files are located in the k8s directory. They provide a basic helm chart for the service and potential dependencies.

k8s
├── Chart.yaml
├── templates
│   ├── 00-namespace.yaml
│   ├── deployment.yaml
│   └── service.yaml
├── values # environment specific overwrites / variables
│   ├── dev.yaml
│   ├── prod.yaml
│   └── test.yaml
└── values.yaml # common variables

To render the chart for dev use:

helm template -f k8s/values.yaml -f k8s/values/dev.yaml k8s/

Docker

The docker image produced by a repository is controlled via the Dockerfile or Dockerfile.local. The same image is only build once and used in all environments.

Terraform

Infrastructure is managed via terraform. All related files are located in the terraform directory of the repository.

terraform
├── codebuild # codebuild and permissions for releasing
├── dev
├── prod
└── test

Building

DinoPark services are built and deployed via AWS Codebuild. See buildspec.yaml.

Deploying

Every push to master will result in a build and deployment to the dev environment. Releasing to test and prod can be done via tags. Any tag with a -test suffix will be deployed to the test environment. Any tag with a -prod suffix will be deployed to production.

Note: only tag a commit that actually triggered a build