Skip to content

tenequm/gelato-technical-challenge

Repository files navigation

Gelato technical challenge demo repository

This repository contains the solution for the technical challenge provided by Gelato Network's team. The text of the challenge can be found here.

List of the accomplished items with comments to them:

  1. Automated deployment of a single source base to multiple environments
    • Application was deployed to multiple environments with domain names provisioned by external-dns operator to simplify management of new environments in the future.
    • Trunk Based Development was chosen as the branching strategy for the CD pipeline. So that there is one trunk branch (main git branch in our case) that get's automatically deployed to dev environment on every commit/merge into it and after successful tests the same build can be promoted to prod environment after getting an approve in the workflow from the defined list reviewers.
  2. Infrastructure as Code
    • Infrastructure for running the application was defined with Terraform in ops/terraform directory of the repository.
    • Gruntwork's series of articles was used as a base for the code structure of Terraform code for it to be ready for scale. In the real world live directory would become a separate repository to store the code of live deployed infrastructure, and every Terraform module would have it's own separate repository for and engineer who would be working with it to be able to utilise module versioning capabilities properly on different environments.
  3. Docker build and push images to a registry of your choice
    • Docker images where pushed to Github Packages and are stored within the same repository as a code for an application. Link to docker images.
  4. Quality gate pipeline
    • GHA pipeline has two jobs that do the linting: trunk-lint and helm-validate. The first one runs Trunk tool as an aggregator for a set of common linters. The second one validate Helm chart to make sure, that it doesn't contain any issues in it's templates that block it from being able to deploy into Kubernetes.
  5. IaC lifecycle & enhanced security
    • All sensitive data is stored in AWS SSM Parameter Store and GitHub Actions Secrets.
    • Terraform code hase AWS S3 bucket being configured as a backend to make sure that the state of the infrastructure is stored properly.
  6. Docker Image Promotion strategy
    • Same image gets promoted to production through the pipeline as the one deployed to dev.
  7. Governance (e.g. Prod deployment approvals)
    • As you’ll see on the screenshot below - every deploy to prod has to be approved. image

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages