
n this lecture, we take a working, VM-based application and migrate it into a containerized Kubernetes environment using real DevOps practices.
You will see how the application and its MySQL database are containerized, how configuration is handled correctly, and how the application is deployed and exposed inside a Kubernetes cluster. This is not a demo setup—every step reflects what DevOps engineers do when modernizing legacy systems.
We focus on practical migration challenges: service connectivity, database access, environment configuration, and deployment validation. You’ll understand why Kubernetes components behave the way they do and how to troubleshoot when things don’t work as expected.
By the end of this lecture, you will have a running application on Kubernetes, backed by a containerized database, and a clear mental model for migrating any VM-based application into a production-style Kubernetes setup.
This lecture forms the foundation for the rest of the course and sets the standard for real-world DevOps thinking—measured, intentional, and production-focused.
In this lecture, we build the initial VM-based architecture on AWS that will later be migrated to Kubernetes.
You will create separate database and application servers, configure basic networking, and understand why this separation matters in real-world deployments. Instead of blindly launching instances, we focus on purpose-driven infrastructure—what runs where, and why.
This lecture establishes the baseline architecture: a traditional setup many teams still run in production. You’ll see how applications connect to a database over the network, how credentials are handled, and what operational limitations exist in this model.
By the end of this lecture, you will have a fully functional DB server and application server on AWS, forming the reference point for the Kubernetes migration that follows. This clarity is essential—you can’t modernize what you don’t fully understand.
This lecture sets the stage for the DevOps journey: from VM-based infrastructure to containerized, cloud-native systems.
In this lecture, we install and configure MySQL on an AWS-based database server. You’ll set up the database service, verify connectivity from the application server, and prepare the data layer for real application usage.
This step establishes a stateful backend that will later be migrated into containers and Kubernetes, making it a critical foundation for the DevOps workflow that follows.
In this lecture, we configure the MySQL database for application usage by creating the required database, users, and permissions. You’ll connect the application to MySQL, validate data flow, and ensure the setup mirrors a real production environment.
This configuration becomes the reference state for the later migration to containers and Kubernetes.
In this lecture, we configure the application to connect with the database using proper connection settings. You’ll validate end-to-end communication, handle configuration values correctly, and confirm the application works as expected with the backend database.
This step completes the VM-based setup and prepares the application for containerization and Kubernetes deployment.
In this lecture, we create a systemd service for the application to ensure it runs reliably as a managed background process. You’ll configure startup behavior, handle restarts, and verify the application survives reboots.
This step reflects how applications are operated on traditional servers and sets a clean baseline before moving to containers and Kubernetes.
In this lecture, we write a Dockerfile for the MySQL database and build a custom database image. You’ll understand how database configuration, initialization, and data handling are defined inside a container.
This step prepares the database for consistent, repeatable deployments using containers.
In this lecture, we tag and push the MySQL container image to Docker Hub. You’ll understand image versioning, repository structure, and how container images are shared and reused across environments.
This makes the database image available for deployment in automated workflows.
In this lecture, we create a local Kubernetes cluster using Kind. You’ll set up the cluster, verify node status, and ensure the environment is ready for deploying containerized applications.
This provides a fast and reliable Kubernetes setup for hands-on experimentation and testing.
This course is a complete, real-world DevOps project designed to show how a working application with a MySQL database is modernized using containers, CI/CD automation, Kubernetes, security scanning, and GitOps practices.
You start by creating the application and database servers on AWS, installing and configuring MySQL, and validating application access through the browser. This establishes a realistic baseline that mirrors how many teams still run applications today. From there, the course moves into containerization, where both the database and the application are packaged using Docker. You build custom images, manage configuration properly, and push versioned images to Docker Hub.
Next, you create a Kubernetes environment using Kind and deploy MySQL and the application using Kubernetes manifests. You validate pod health, inspect logs, configure services, and resolve real connectivity issues. The focus stays practical—understanding how Kubernetes schedules workloads, exposes applications, and manages stateful components.
A major part of the course is building a production-style Jenkins CI/CD pipeline from scratch. You implement source code checkout, virtual environment setup, dependency installation, unit testing, OWASP dependency checks, SonarQube code quality analysis, Docker image builds, Trivy and Snyk security scans, and image publishing. Jenkins is securely authenticated with the Kubernetes cluster, and deployments are executed directly through a Jenkinsfile.
To complete the workflow, you deploy the application using Argo CD and a GitOps model, and expose it using Ingress and the Kubernetes Gateway API. You gain a clear understanding of modern traffic management and deployment strategies.
This course is ideal for DevOps engineers and developers who want hands-on, end-to-end experience with real tools, real pipelines, and real deployment challenges—without shortcuts or toy examples.