Developer Writes Code: The developer writes the application code which is then pushed to a version control system, such as Git.
Source Code (Git): The code is stored and managed in a Git repository (for eg: GitHub, BitBucket, GitLab, etc). This repository tracks changes, allows for version control, and facilitates collaboration among team members.
Creates Dockerfile: The developer creates a Dockerfile in the repository. This Dockerfile contains instructions on how to build a Docker image for the application.
Docker Builds Image: Docker reads the Dockerfile and builds a Docker image based on the instructions provided.
Docker Image: The resulting Docker image is a portable, standalone package of the application. This image can be shared and deployed on any system that supports Docker.
Pushes to Container Registry: The Docker image is pushed to a container registry, such as Docker Hub/ Jfrog Artifactory, etc. The registry acts as a central repository for Docker images, making them accessible for deployment.
Pulls from CI/CD Tool: Make use of any CI-CD tool (for eg: Jenkins), pulls the Docker image from Docker Hub. Jenkins automates the deployment pipeline, ensuring the latest image is used for deployment.
Deploys to Kubernetes Cluster: The CD tool deploys the Docker image to a Kubernetes cluster. Kubernetes orchestrates the deployment, scaling, and management of containerized applications.
Runs Containers (Kubernetes Pods): The Docker image runs within Kubernetes Pods. Pods are the smallest deployable units in Kubernetes, containing one or more containers.
Monitoring: Make use of a monitoring tool(for eg: Prometheus), that collects and stores metrics from the running containers. It monitors the health and performance of the application and the Kubernetes cluster.
Visualizes with Grafana: Grafana, a data visualization tool, accesses the metrics stored by Prometheus. It provides dashboards and visualizations to help analyze the application's performance.
Alerts via Alert Manager: Alert Manager, integrated with Prometheus, processes alerts based on predefined conditions. Alert Manager sends notifications to the development or operations team via various channels such as email or Slack.