Git Product home page Git Product logo

cloud-native-monitoring-app-main's Introduction

Cloud Native Resource Monitoring Python App

Introduction

This project aims to provide hands-on learning experience in developing and deploying a cloud-native resource monitoring Python application on Kubernetes (K8s). The aim of this assignment is to understand the hands-on experience with GitOps practices, utilizing Argo CD for continuous deployment and Argo Rollouts for advanced deployment strategies within a Kubernetes environment. You will be responsible for setting up a GitOps pipeline that automates the deployment and management of a simple web application. Key objectives include understanding Python for developing monitoring applications, Docker for containerization, AWS for hosting the application, and Kubernetes for orchestration.

alt text

Prerequisites

Before starting the project, ensure you have the following prerequisites:

  • Familiarity with Kubernetes concepts (Pods, Deployments, Services).
  • Basic understanding of Docker and containerization.
  • Experience with Git for version control.
  • Access to a Kubernetes cluster for testing (you can use Minikube, kind, or a cloud provider's Kubernetes service).
  • Familiarity with Argo CD and Argo Rollouts tools. Refer to the documentation for the basics of these tools.

Additionally, make sure you have the following installed:

  • AWS Account with programmatic access configured via AWS CLI.
  • Python3 installed on your local machine.
  • Docker and Kubectl installed.
  • A code editor such as Visual Studio Code.

Getting Started

Part 1: Deploying the Flask Application Locally

Step 1: Clone the Repository

Clone the repository using the following command:

git clone https://github.com/AtulRajput01/cloud-native-resource-monitoring-app.git

  1. Install Dependencies
  • Install dependencies using pip:
    pip3 install -r requirements.txt
    
  1. Run the Application Locally
  • Navigate to the root directory of the project and execute:
    $ python3 app.py
    

Overview of Using Argo CD for Continuous Deployment

Setup and Configuration

  1. Installation: Argo CD is installed on the Kubernetes cluster following the official documentation.
  2. Configuration: Once installed, it's configured to monitor a specific Git repository containing Kubernetes manifests for the application.

Creating the GitOps Pipeline

  1. Dockerization: After dockerizing the application and pushing the Docker image to a container registry, Argo CD is set up to monitor changes in the repository.
  2. Continuous Deployment: Argo CD automatically deploys any changes pushed to the repository to the Kubernetes cluster, ensuring continuous deployment.

Implementing a Canary Release with Argo Rollouts

  1. Extension Usage: Argo Rollouts, an extension of Argo CD, is utilized to implement a canary release strategy.
  2. Rollout Definition: The rollout definition is modified to specify the canary release strategy, allowing for controlled testing of new versions of the application before full deployment.

alt text 3. Monitoring: Changes to the application code trigger a rollout, with Argo Rollouts monitoring the deployment process to ensure the canary release completes successfully.

alt text

Argo CD simplifies the deployment process by providing a centralized platform for managing application deployments in Kubernetes clusters. It promotes GitOps practices, enhancing collaboration and automation in the software development lifecycle.

Documentation

Link to Detailed Documentation

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.