This course is designed to provide a comprehensive understanding of DevOps principles and practices. Through a mix of theoretical knowledge and hands-on experience, participants will learn how to streamline and automate the software development lifecycle, from code integration to deployment. The course will cover essential DevOps tools such as Jenkins, Docker, Kubernetes, and infrastructure as code (IaC) practices. By the end of the course, participants will be equipped with the skills needed to implement and manage a DevOps environment in a real-world setting.

Learning Objectives:
• Understand the core concepts and benefits of DevOps.
• Learn how to design, build, and maintain CI/CD pipelines.
• Gain hands-on experience with key DevOps tools: Jenkins, Docker, Kubernetes.
• Explore the concepts of containerization and orchestration.
• Implement Infrastructure as Code (IaC) using tools like Terraform and Ansible.
• Prepare for industry-recognized certifications: AWS Certified DevOps Engineer, Docker
Certified Associate.

Course Content

1. Introduction to DevOps
• Objective: To provide a foundational understanding of DevOps, its goals, cultural shift, and
the toolsets used.
• Topics Covered:

1.What is DevOps?
– Definition, History, and Evolution of DevOps.
– Key DevOps Goals: Speed, Quality, and Efficiency.

2.DevOps Culture:
– Collaboration between Development and Operations teams.
– Importance of Communication, Shared Responsibility, and Continuous Feedback.

3.Key DevOps Practices:
– Continuous Integration (CI): Definition, Importance, and Tools.
– Continuous Delivery (CD): Concepts, Deployment Pipelines, and Automation.
– Continuous Deployment: Fully automated deployments and benefits.

4.Overview of DevOps Toolchain:
– Categories of Tools: CI/CD, Configuration Management, Monitoring, Containerization.
– Introduction to popular tools: Jenkins, Docker, Kubernetes, Terraform, Ansible.

Hands-On Lab:

1.Objective: Set up a basic CI/CD environment.
2.Activities:
-Installing Jenkins on a local machine or cloud instance.
-Basic configuration of Jenkins (e.g., creating a simple build job).
– Overview of Jenkins interface and plugins.

2. Version Control and Continuous Integration (CI)
Objective: To understand version control systems and how to implement continuous integration in a DevOps pipeline.
• Topics Covered: 

1.Version Control Systems (VCS):
– Introduction to VCS: Importance and Benefits.
– Git Fundamentals: Repositories, Branching, Merging, and Workflows.
– Using GitHub/GitLab for collaboration and code management.

2.Continuous Integration (CI):
– CI Concepts: Automated Builds, Testing, and Merging.
– Setting up Jenkins for CI: Job Configuration, Triggers, and Notifications.
– Integrating Jenkins with Git: Webhooks, Polling, and Pipelines.
– Managing Build Artifacts: Archiving and Distributing Builds.

• Hands-On Lab:

1.Objective: Configure a CI pipeline in Jenkins.
2.Activities:
– Creating a Jenkins pipeline for a Java application.
– Integrating with GitHub: Configuring Webhooks to trigger builds.
– Setting up automated builds and running unit tests.
– Viewing build results and artifacts in Jenkins.

3. Introduction to Containerization with Docker
• Objective: To introduce the concepts of containerization and provide hands-on experience with Docker.
• Topics Covered:

1.Understanding Containerization:
– What are Containers? Comparison with Virtual Machines.
– Benefits of Containerization: Portability, Efficiency, and Scalability.

2.Introduction to Docker:
– Docker Architecture: Docker Engine, Images, Containers, and Registries.
– Installing Docker on Linux/Windows/Mac.
– Docker Commands: Running, Stopping, and Managing Containers.

3.Creating Docker Images:
– Writing a Dockerfile: Syntax and Best Practices.
– Building and Tagging Docker Images.
-Running and Managing Docker Containers.
– Publishing Docker Images to Docker Hub.

•Hands-On Lab:

1.Objective: Build and deploy a Docker container.
2.Activities:
– Writing a Dockerfile for a simple Node.js web application.
– Building the Docker image and running it as a container.
– Testing the container locally and troubleshooting common issues.
– Pushing the Docker image to Docker Hub.

4. Docker Compose and Docker Networking
• Objective: To manage multi-container applications using Docker Compose and understand Docker networking.
• Topics Covered:

1.Docker Compose:
2.Introduction to Docker Compose: Overview and Benefits.
– Writing a docker-compose.yml file: Services, Networks, and Volumes.
– Managing Multi-Container Applications: Starting, Stopping, and Scaling.
– Networking in Docker Compose: Service Discovery and Communication.

3.Docker Networking:
– Understanding Docker Networking: Bridge, Host, and Overlay Networks.
– Configuring Custom Networks: Bridge Networks and User-Defined Networks.
– Linking Containers and Exposing Ports.

4.Docker Volumes:
– Data Persistence in Docker: Volumes vs. Bind Mounts.
– Creating and Managing Docker Volumes.
– Sharing Data between Containers using Volumes.

• Hands-On Lab:

1.Objective: Deploy a multi-container application with Docker Compose.
2.Activities:
– Writing a docker-compose.yml file for a LAMP (Linux, Apache, MySQL, PHP) stack.
– Setting up networking between containers for a web application.
– Using volumes for persistent storage in the MySQL container.
– Scaling the application by adding multiple instances of the web server.

5. Introduction to Orchestration with Kubernetes
• Objective: To introduce Kubernetes and provide hands-on experience with deploying applications on a Kubernetes cluster.
• Topics Covered:

1.Kubernetes Overview:
– Introduction to Kubernetes: Architecture and Components.
– Key Concepts: Pods, Services, Deployments, ConfigMaps, and Secrets.
– Setting up a Kubernetes Cluster: Minikube, kubeadm, or Managed Kubernetes (e.g., GKE, EKS).
– Kubernetes Objects: Creating and Managing Pods, Deployments, and Services.

2.Deploying Applications on Kubernetes:
– Writing YAML manifests for Kubernetes resources.
– Deploying a simple application (e.g., Nginx) on Kubernetes.
– Managing Application Lifecycle: Scaling, Updating, and Rolling Back Deployments.
– Service Discovery and Load Balancing with Kubernetes Services.

• Hands-On Lab:

1.Objective: Deploy a microservices application on a Kubernetes cluster.
2.Activities:
– Setting up Minikube or a Kubernetes cluster on the cloud.
– Writing and applying Kubernetes manifests for a multi-tier application.
– Exposing the application using Kubernetes Services (NodePort, LoadBalancer).
– Testing and troubleshooting the application deployment.

6. Kubernetes Advanced Concepts
• Objective: To explore advanced Kubernetes features such as autoscaling, networking, storage, and security.
• Topics Covered:

1.Kubernetes Autoscaling:
– Horizontal Pod Autoscaling (HPA): Concepts and Configuration.
– Configuring Resource Requests and Limits for Pods.
– Monitoring and Scaling Applications based on CPU/Memory usage.

2.Kubernetes Networking:
– Kubernetes Networking Fundamentals: Service Types, ClusterIP, NodePort, and LoadBalancer.
– Ingress Controllers: Managing External Access to Applications.
– Network Policies: Controlling Traffic between Pods.

3.Persistent Storage in Kubernetes:
– Kubernetes Volumes: EmptyDir, HostPath, and Persistent Volume Claims (PVCs).
– Configuring Persistent Storage with NFS, Ceph, or Cloud Storage.
– StatefulSets: Managing Stateful Applications in Kubernetes.

4.Kubernetes Security:
– Role-Based Access Control (RBAC) in Kubernetes.
– Managing Secrets and ConfigMaps securely.
– Securing Kubernetes API and Cluster Nodes.

• Hands-On Lab:

1.Objective: Implement autoscaling and persistent storage in Kubernetes.
2.Activities:
– Configuring HPA for a web application in Kubernetes.
– Setting up persistent storage with Persistent Volume Claims.
– Deploying an application with StatefulSets and testing data persistence.
– Configuring Ingress and Network Policies for secure access to the application.

7: Continuous Deployment (CD) with Jenkins and Kubernetes
• Objective: To build and manage continuous deployment pipelines with Jenkins andKubernetes.
• Topics Covered:

1.Integrating Jenkins with Kubernetes:
– Introduction to Jenkins Kubernetes Plugin.
– Configuring Jenkins to Deploy Applications to Kubernetes.
– Setting up Jenkins X for Continuous Deployment.

2.Continuous Deployment Pipeline:
– Building a CI/CD Pipeline with Jenkins and Kubernetes.
– Automating Deployment Processes: Rolling Updates and Canary Deployments.
– Managing Rollbacks and Rollouts in Kubernetes.
– Monitoring and Validating Deployments with Jenkins.

• Hands-On Lab:

1.Objective: Create a Jenkins pipeline for deploying applications to Kubernetes.
2.Activities:
– Setting up Jenkins with Kubernetes Plugin.
– Writing Jenkinsfile to automate the build and deployment process.
– Deploying a sample application to Kubernetes using the Jenkins pipeline.
– Configuring Jenkins to automatically rollback in case of deployment failure.

8. Infrastructure as Code (IaC) with Terraform
• Objective: To learn the principles of Infrastructure as Code and how to manage cloud infrastructure using Terraform.
• Topics Covered:

1.Introduction to Infrastructure as Code (IaC):
– The Importance of IaC in DevOps: Benefits and Use Cases.
– Overview of IaC Tools: Terraform, Ansible, CloudFormation.
– Key Concepts in Terraform: Providers, Resources, Modules, and State.

2.Terraform Basics:
– Installing and Configuring Terraform.
– Writing Terraform Configuration Files: Syntax, Variables, and Outputs.
– Managing Infrastructure with Terraform: Creating, Updating, and Destroying Resources.
– Terraform State Management: Local and Remote Backends.

3.Advanced Terraform Concepts:
– Working with Terraform Modules: Reusable Infrastructure Components.
– Managing Complex Infrastructure with Terraform: Multi-Environment Setup.
– Integrating Terraform with CI/CD Pipelines.

• Hands-On Lab:

1.Objective: Provision AWS resources using Terraform.
2.Activities:
-Writing Terraform configurations to provision an EC2 instance, S3 bucket, and VPC.
– Applying Terraform configurations and managing state.
– Creating and using Terraform Modules for reusable infrastructure components.
– Integrating Terraform with Jenkins for automated infrastructure provisioning.

9. Configuration Management with Ansible
• Objective: To automate configuration management and application deployment using Ansible.
• Topics Covered:

1.Introduction to Ansible:
– Overview of Configuration Management: Concepts and Importance.
– Ansible Architecture: Agents vs. Agentless, Inventory, Modules, Playbooks.
– Installing and Configuring Ansible.

2.Writing Ansible Playbooks:
– Playbook Syntax and Structure: Tasks, Handlers, and Variables.
– Using Ansible Modules: Commonly Used Modules (e.g., File, Package, Service).
– Managing Playbooks: Roles, Tags, and Conditions.
– Working with Inventories: Static vs. Dynamic Inventory.

3.Advanced Ansible Concepts:
– Ansible Roles: Structuring Playbooks for Reusability.
– Ansible Vault: Securing Sensitive Data in Playbooks.
– Integrating Ansible with Jenkins for Continuous Configuration Management.

• Hands-On Lab:

1.Objective: Automate server configuration with Ansible.
2.Activities:
– Writing an Ansible Playbook to install and configure a web server (e.g., Apache/Nginx).
– Managing multiple servers using Ansible Inventory and Playbooks.
– Implementing Ansible Roles for reusable configuration management.
– Securing sensitive variables and credentials with Ansible Vault.

10. Monitoring and Logging in a DevOps Environment
• Objective: To implement monitoring and logging solutions in a DevOps environment using Prometheus, Grafana, and ELK Stack.
• Topics Covered:

1. Importance of Monitoring and Logging in DevOps:
– Understanding the Role of Monitoring and Logging in CI/CD Pipelines.
– Key Metrics to Monitor: Application Performance, System Health, and Logs.

2.Introduction to Prometheus and Grafana:
– Prometheus Overview: Architecture, Metrics, and Exporters.
– Installing and Configuring Prometheus for Monitoring.
– Grafana Overview: Dashboards, Data Sources, and Alerts.
– Integrating Prometheus with Grafana for Visualization and Alerting.

3.Centralized Logging with ELK Stack:
– Overview of ELK Stack: Elasticsearch, Logstash, and Kibana.
– Setting up ELK Stack for Centralized Logging.
– Collecting and Analyzing Logs with Logstash.
– Visualizing and Searching Logs with Kibana.

4.Integrating Monitoring and Logging into CI/CD Pipelines:
– Adding Monitoring and Logging to Jenkins Pipelines.
– Setting up Alerts and Notifications for CI/CD Failures.

• Hands-On Lab:

1.Objective: Set up a monitoring and logging solution for a Kubernetes cluster.
2.Activities:
– Installing and configuring Prometheus and Grafana on a Kubernetes cluster.
– Setting up monitoring for application performance and system health.
– Deploying ELK Stack for centralized logging in Kubernetes.
– Creating Grafana dashboards and Kibana visualizations for real-time monitoring.

11: Security in DevOps (DevSecOps)
• Objective: To integrate security practices into DevOps workflows, ensuring secure CI/CD pipelines and infrastructure.
Topics Covered:

1.Introduction to DevSecOps:
– Shifting Left on Security: Incorporating Security Early in the Development Lifecycle.
– Key Principles of DevSecOps: Automation, Collaboration, and Continuous Security.
– Common Security Challenges in DevOps and How to Address Them.

2.Security in CI/CD Pipelines:
– Implementing Static Code Analysis (SAST) and Dynamic Application Security Testing (DAST).
– Dependency Scanning for Vulnerable Libraries and Packages.
– Integrating Security Tools into Jenkins Pipelines: SonarQube, OWASP Dependency-Check.
– Securing Docker Containers and Kubernetes Clusters:
– Best Practices for Securing Docker Images and Containers.
– Kubernetes Security Best Practices: RBAC, Network Policies, and Secrets Management.
– Automating Security Scans for Docker Images and Kubernetes Clusters.

• Automating Security Testing:
– Integrating OWASP ZAP for Automated Penetration Testing in CI/CD Pipelines.
– Setting Up Continuous Security Monitoring and Alerts.

• Hands-On Lab:

1.Objective: Implement security checks in a CI/CD pipeline.
2.Activities:
– Configuring SonarQube for static code analysis in Jenkins.
– Setting up OWASP Dependency-Check for vulnerability scanning in a pipeline.
– Implementing security best practices in Dockerfile and Kubernetes manifests.
– Running OWASP ZAP for automated penetration testing of a web application.

12. Preparing for Certification
• Objective: To review key concepts, practice hands-on labs, and prepare for AWS Certified DevOps Engineer and Docker Certified Associate exams.
• Topics Covered:

1.Overview of Certification Exams:
– AWS Certified DevOps Engineer: Exam Structure, Domains, and Key Topics.
– Docker Certified Associate: Exam Structure, Domains, and Key Topics.
– Exam Preparation Tips: Study Strategies, Time Management, and Resources.

2.Review of Key Concepts and Hands-On Labs:
– Recap of Key DevOps Concepts: CI/CD, Containerization, Orchestration, IaC.
– Hands-On Practice: Reviewing Labs from Previous Sessions.
– Discussion of Real-World Scenarios and Best Practices.

3.Mock Exam and Q&A Session:
– Conducting a Mock Exam: Sample Questions and Scenarios.
– Reviewing Mock Exam Results and Discussing Answers.
– Q&A Session: Addressing Participant Questions and Clarifying Doubts.

• Final Project:

1.Objective: Build and deploy a complete CI/CD pipeline using the tools covered in the course.
2.Activities:
– Designing and implementing a CI/CD pipeline with Jenkins, Docker, and Kubernetes.
– Automating infrastructure provisioning with Terraform and configuration management with Ansible.
-Integrating security checks and monitoring into the pipeline.
– Deploying a multi-tier application and demonstrating continuous deployment.

Entry Requirement

Duration : 
Schedule : 

COMMENCEMENT:

Registration Fee: Rs. 30,000

Course Fee: Rs.180,000 (payable in 4 installments)

Social Security Contribution Levy (SSCL) of 2.5 % would be charged on all above fees

For more information:  077 2204101 / 071 2 724425