
Bridge the gap between development and operations through agile principles, automation, and true collaboration to deliver features quickly with reliability.
Master devops essentials by exploring planning with open-source tools, coding in python with git and GitHub, and deploying on Linux via AWS EC2 with Docker, Kubernetes, and GitHub Actions.
Streamline software project management by using GitHub issues and GitHub projects to track bugs, features, and tasks within the repository, leveraging boards, milestones, labels, filters, and automation.
Create and verify a GitHub account using sign-up options (manual entry or Google social login). Enable two-factor authentication to secure the account, then explore repositories, issues, and projects.
Learn to push a Python Flask app to GitHub by configuring Git, creating a repository, and pushing via a remote origin, using commits, main branch, and personal access tokens.
Explore AWS, the leading cloud platform, offering pay-as-you-go pricing and scalable resources. Discover key services like S3, EC2, SQS, and VPC, plus security, availability zones, and cost optimization.
Assigns students a practical AWS account setup and dashboard walkthrough, guiding sign-up with email verification, billing, identity verification, and navigating regions, services, and cost management in the console.
Launch scalable compute with Amazon EC2 using AMIs and instance types, attach EBS volumes, and manage access with key pairs and security groups, including elastic IP considerations.
Explore Linux fundamentals, including basic commands, file navigation, and text editors, and learn ownership, package and process management, plus a demo deploying a Python app on AWS EC2.
Master directory navigation using pwd, cd, ls, mkdir, and rmdir, exploring absolute paths from root and relative paths for precise file system access.
Explore file ownership and permissions shown by ls -l, including owner, group, size, and permissions, and learn chmod, chown, and chgrp in symbolic and octal forms.
Demonstrates managing Linux file permissions with owner and group settings, using Alex as owner and the developers group to grant read/write or read-only access for Bob and Charlie.
Learn to manage Linux services with systemctl, inspect units, check status, and enable, start, restart, or reload; install and configure apache2 and verify with curl.
Wrap up the Linux section by reviewing terminal basics, file and directory commands, text editors, permissions, apt package management, deploying Python on EC2 with virtual environment activation and Docker containerization.
Explore containerization basics by learning what containers are, their benefits, and how namespaces and control groups deliver portability, isolation, and rapid, consistent deployment across environments.
Explore how linux namespaces and cgroups create isolated containers by separating processes and resources, and learn namespace types like user, pid, network, ipc, mount, and uts.
Discover how Docker builds, ships, and runs containerized applications, decoupling them from infrastructure to speed delivery, and learn its history from operating system virtualization to image layering.
Explore the Docker architecture, where the CLI communicates with the daemon on the Docker host to manage images, containers, networks, and volumes, with runC handling container creation.
Explore Docker objects as the building blocks of containerized apps: images create containers, containers run as isolated processes, and networks and volumes enable communication and persistent data storage.
Discover how Docker images, as read-only templates, define environments for running apps with layered structures and a writable layer, using overlayfs and a Docker file stored in registries.
Store and share container images using a container registry and Docker Hub, examining public and private options, official and verified images, and automated builds from GitHub or Bitbucket.
Explore the docker image command, its subcommands and syntax, practice common image operations such as pull, ls, tag, history, inspect, and remove, with hands-on demonstrations.
Create and understand a Dockerfile, a script outlining instructions to construct a Docker image—setting environment, installing dependencies, copying files—and build images with docker build using a build context.
Create a dockerfile from the nginx base image to replace index.html, apply labels and workdir, and add a health check. Build and run a container exposing port 80.
Learn to use kubectl to create, get, describe, and delete Kubernetes resources like pods and deployments, and use kubeadm to bootstrap clusters and manage tokens and certificates.
Understand how Kubernetes namespaces isolate resources and enforce quotas, enabling multi-user teams to share a cluster. Identify the four default namespaces—default, kube-node-lease, kube-public, kube-system—and their roles in isolation and governance.
Learn to manage Kubernetes namespaces with practical kubectl commands, including creating, describing, switching contexts, and cleaning up namespaces to isolate resources and enhance security.
Explore how labels and selectors organize and target Kubernetes resources, using key-value labels on pods, deployments, and services, and match expressions like app equals frontend for automation and precise scaling.
Explore labels and selectors in Kubernetes by creating a deployment named mytest with three nginx replicas, inspecting deployment, replica set, and pods labels, and understanding how selectors control pod management.
Create a deployment named my tip with nginx:latest and list deployments, replica sets, and pods. Use short names like deploy, rs, po, ns, and explore api resources with kubectl --help.
NodePort exposes your app on a static port across all nodes, default 30000–32767, accessible from outside via each node IP; Kubernetes configures firewall rules for external access.
Demonstrates creating a Mydb deployment with nginx:latest, exposing it as a node port service, and accessing the app via the worker node IP and port 31552.
Explore how to create a GKE autopilot cluster, deploy nginx with three replicas, and expose it using a load balancer to obtain an external IP.
Create a deployment with nginx and a cluster IP service, align selectors with pod labels, and verify connectivity from BusyBox via endpoints using kubectl.
Explore using kubectl explain and kubectl api resources to access Kubernetes documentation, understand resource types, namespaces vs cluster-wide scope, and build yaml manifests for pods, deployments, and more.
Deploy a containerized Python app on a two-node Kubernetes cluster by creating a DevOps namespace, deployment, and service declaratively, then troubleshoot port mappings and traffic to pods.
Wraps up the Kubernetes section by covering container limitations, Kubernetes architecture, two-node cluster setup, core objects (namespaces, pods, replica sets, deployments), and YAML and kubectl best practices.
Demonstrates updating Kubernetes for orchestration in GitHub projects by using the priority board to set P0 and P1, sizes L and m, enter estimates, monitor with Prometheus, and close tasks.
Explore Prometheus, an open-source, CNCF-approved, cloud-native monitoring and alerting toolkit. Learn its architecture, time series database, and PromQL queries used with Kubernetes and other platforms.
Finish the Prometheus monitoring section by updating a GitHub project: edit details, update the readme, set environment, and log status updates with start and target dates to stay on track.
What’s in this course?
This course is designed as a Practical DevOps Bootcamp where you’ll not only learn about DevOps concepts but also apply them step by step to build a production-ready project. Instead of separate, disconnected lessons, each tool is introduced as part of a real-world python application that grows with you throughout the course.
From planning with GitHub Projects to deploying on AWS, containerizing with Docker, orchestrating with Kubernetes, monitoring with Prometheus & Grafana, and automating with GitHub Actions, you’ll see how all the pieces of DevOps fit together.
By the end of this course, you won’t just “know” DevOps tools, you’ll connect the dots and gain the confidence to apply them in real-world environments.
Special Note:
Every concept is taught through live demonstrations, not pre-recorded flawless runs. This means you’ll also learn how to troubleshoot and solve issues, just like in real projects.
The course is structured to simulate a DevOps engineer’s journey: taking a prototype Flask app from a laptop to a production-ready, monitored and automated environment.
Course Structure:
Concept-based Lectures
Hands-on Demonstrations
Project Integration Modules
Course Contents:
Introduction to DevOps and CI/CD
Planning with GitHub Projects & Issues
Python Application Fundamentals
Version Control with Git and GitHub
Cloud Infrastructure with AWS
Linux for DevOps
Containerization with Docker
Kubernetes for Orchestration
Monitoring with Prometheus
Visualization with Grafana
GitOps with ArgoCD
Automating CI/CD with GitHub Actions
All sections of this course are demonstrated live, with the goal of encouraging enrolled users to set up their own environments, complete the exercises, and learn through hands-on experience!