/techtrends

This project showcases the use of several CI/CD tools and cloud services used to automate the deployment of a sample Flask application (provided) into a Kubernetes cluster

Primary LanguagePython

Techtrends

Deploy artifact to hub.docker.com

Project Overview

This project showcases the use of several CI/CD tools and Cloud services employed to automate the deployment of a sample Flask application (provided) into a Kubernetes cluster.

Introduction

This project operationalizes a sample Flask application TechTrends deployed into a Kubernetes(K8S) cluster built with K3S.

The TechTrends applications is a monolithic app, that is containerized using Docker and deployed into a Kubernetes cluster. The K8S cluster is installed in a Vagrant Box (this virtual machine uses OpenSUSE).

CI/CD Approach

All the steps to build and deploy the application into the Kubernetes cluster are fully automated using a CI pipeline and CD tools.

Project Workflow

  1. A pipeline deployed in GitHub Actions builds the container image and deploys it to DockerHub

  2. Then, using ArgoCD the app is deployed into two namespaces in the Kubernetes cluster:

    • Helm is used to write the application configuration templates

CI/CD Tools and Cloud Services

  • Docker - Platform as a service products that use OS-level virtualization to deliver software in packages called containers
  • Docker Hub - Container images repository service
  • Kubernetes - System for automating deployment, scaling, and management of containerized applications
  • K3S - Lightweight Kubernetes distribution
  • Vagrant - Tool for building and managing virtual machine environments
  • GitHub Actions - Cloud-based CI/CD service
  • ArgoCD - GitOps Continuous Delivery tool for Kubernetes
  • Helm - Application package manager for Kubernetes

GitHub Actions Variables

Set up the following variables in the GitHub repo to configure the GitHub Actions pipeline:

  • DOCKERHUB_USERNAME: the Docker Hub username
  • DOCKERHUB_TOKEN: to authenticate into DockerHub

Main Files