Course Overview
Introduction
In this laboratory, you will set up a continuous integration and continuous delivery (CI/CD) pipeline for a Dockerized Django application. You will use Jenkins for automation, Kubernetes for container orchestration, and Docker for containerization. The objective is to automate the build, test, and deployment processes, ensuring a seamless workflow from code commit to production deployment.
Objectives
- Install Jenkins on an Ubuntu Server
- Configure Jenkins with necessary plugins
- Set up a Kubernetes cluster
- Dockerize a Django application
- Create a Jenkins pipeline for CI/CD
- Deploy the application to Kubernetes
- Set up notifications and monitoring
Prerequisites
- AWS Account: For deploying and managing instances and services.
- Basic Knowledge of Docker, Jenkins, Kubernetes, and Django: Familiarity with these technologies is assumed.
- Unix-based Operating System: Preferred for compatibility with Docker and Kubernetes tools.
Required Materials and Software
Materials:
- A Computer: With a modern processor, at least 8GB of RAM, and a stable internet connection.
- Cloud Service Provider Account: An AWS account for deploying instances and utilizing AWS resources.
Software:
- Operating System: A Unix-based system (Ubuntu, CentOS, macOS) is recommended. Windows users can use WSL2.
- AWS CLI: For managing AWS services from the command line.
- Jenkins: Automation server for setting up the CI/CD pipeline.
- Docker: For containerizing the Django application.
- Kubernetes: For container orchestration.
- Kubectl: Command-line tool for interacting with Kubernetes clusters.
- ArgoCD: For continuous delivery and GitOps.
- Python: Version 3.8+ for the Django application.
- Git: For version control.
- Text Editor/IDE: VS Code, PyCharm, or any preferred text editor.
- Prometheus and Grafana (optional): For monitoring and visualizing metrics.
- Slack (optional): For build and deployment notifications.
- Email Server (optional): For Jenkins email notifications.
- HashiCorp Vault (optional): For managing secrets and sensitive data.
Tools and Libraries:
- Django: Web application framework.
- Gunicorn: For serving the Django application.
- Pip: For managing Python packages.
- Node.js (optional): For frontend development.