Completed

Devops - Docker and Kubernetes Training

Heitech Padu

Date
1 โ€“ 3 Dec 2025
Organised by
ES Learning Zone
Trainer
Azman Zakaria
Attendees
0

Devops - Docker and Kubernetes Training

Date : 01 - 03 December 2025

Venue: Heitech Village, Subang

Syllabus

Table of Contents

1. DevOps Fundamentals

  • What is DevOps?
  • DevOps vs Traditional SDLC
  • CI/CD concepts
  • Infrastructure as Code (IaC)
  • DevOps toolchain overview: Git, Docker, Jenkins/GitHub Actions, Kubernetes, Terraform, ArgoCD

 

2. Git for DevOps

  • Git basics (clone, commit, branch, merge)
  • Git workflows (Git Flow, trunk-based development)
  • Managing releases & versioning
  • Hands-on: Create repo → PR → Merge → Tag

 

3. Docker Basics

  • What is containerization?
  • Containers vs VMs
  • Docker components (images, containers, volumes, networks)
  • Dockerfile best practices
  • Hands-on:
    • Install Docker Desktop
    • Create Dockerfile for a simple app
    • Build image
    • Run container

 

4. Docker for Development

  • Multi-stage builds
  • Environment variables & secrets
  • Docker networking basics
  • Hands-on:
  • Build multi-stage Docker image
  • Connect multiple containers

 

5. Docker Compose

  • Why Docker Compose?
  • yaml structure
  • Hands-on:
  • Build a multi-container app (API + DB)
  • Use volumes & networks

 

6. Kubernetes Architecture

  • Kubernetes components
  • Master vs Worker nodes
  • API Server, etcd, Scheduler, kubelet
  • Pods, Deployments, ReplicaSets, Services

 

7. Kubectl Basics

  • Contexts & namespaces
  • Basic operations (apply, get, describe, logs, exec)
  • Hands-on: deploy & debug pods

 

8. Kubernetes Objects

  • Pods
  • Deployments
  • Services (ClusterIP, NodePort, LoadBalancer)
  • ConfigMaps & Secrets
  • Ingress controller (NGINX) overview
  • Hands-on:
  • Create Deployment + Service
  • Expose app via NodePort
  • Manage configs & secrets

9. Storage in Kubernetes

  • Persistent Volumes (PV)
  • Persistent Volume Claims (PVC)
  • Storage classes
  • Hands-on: mount data for apps

 

10. Docker Registry

  • Public registry (Docker Hub)
  • Private registry
  • Tagging, pushing, versioning
  • Hands-on: Push your image

 

11. Helm Basics

  • What is Helm
  • Chart structure
  • Values.yaml
  • Installing/upgrading applications
  • Hands-on: Deploy app using Helm

 

12. CI/CD Pipeline

  • CI pipeline basics
  • Build → Test → Docker build → Push → Deploy
  • Jenkins pipeline or GitHub Actions
  • Hands-on:
  • Automatic build & push Docker image

 

13. Deploying to Kubernetes

  • Deployment strategies: Rolling, Blue-Green, Canary
  • Hands-on:
  • Create a CI/CD pipeline to deploy to k8s

14. Monitoring & Logging

  • Metrics: Prometheus + Grafana
  • Logging: EFK (Elastic + Fluentd + Kibana)
  • Health checks (liveness/readiness probes)

 

15. Final Lab

  • Build an app → Dockerize → Push → Deploy to Kubernetes → Expose
  • Apply ConfigMap, secret, scaling, autoscaling
  • Rancher for cluster management
  • Kubernetes security (RBAC, network policies)
  • Terraform for infrastructure provisioning
  • ArgoCD for GitOps

Training Materials

DevOps Book

Trainer Profile

 Nama : Azman bin Zakaria
 Umur : 52 tahun
 Pengalaman Dalam Bidang IT : 21 Tahun
 Syarikat : Favourite Trainer Sdn Bhd
 Kelulusan :

  • Bachelor IT UiTM
  • Diploma Computer Science UiTM
  • HRDF Certified Instructor

Azman merupakan senior programmer yang passionate dalam bidang pengaturcaraan komputer dari awal mulai beliau bekerja pada tahun 2000 sehingga hari ini. Beliau mempunyai pengalaman bekerja yang luas di agensi kerajaan, swasta dan sebagai freelancer.
Antara pengaturcaraan yang selalu digunakan adalah seperti :

  • PHP (sejak tahun 2000)
  • PHP dan Laravel Framework
  • PHP dan Yii Framework
  • Coldfusion
  • Java 
  • Java dan Spring Boot Framework
  • Javascript
  • jQuery
  • Vuejs
  • Angular
  • Flutter

 

Notes

version: '3.8'
services:
  nginx:
    # NGINX service
    image: nginx:latest
    container_name: nginx
    ports:
      - "9000:80"
  
  php:
    image: php:8.3-fpm
    container_name: php

  mysql:
    image: mysql
    container_name: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

 

version: '3.8'
services:
  app:
    # cari Dockerfile dan run
    build: .
    container_name: php-app
    working_dir: /var/www
    volumes:
      - ./src:/var/www
    ports:
      - "9000:9000" # default port php-fpm: 9000
    networks:
      - appnet
    depends_on: # jgn run sehingga service mysql ready
      - mysql

  nginx:
    image: nginx:latest
    container_name: nginx-app
    ports:
      - "8080:80" # akses di localhost:8080
    volumes:
      - ./src:/var/www
      - ./nginx/conf.d:/etc/nginx/conf.d
    networks:
      - appnet
    depends_on:
      - app
  
  mysql:
    image: mysql:8.0
    container_name: mysql-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: appdb # create database nama appdb
      MYSQL_USER: appuser # create user nama appuser
      MYSQL_PASSWORD: apppassword # password untuk user appuser
    ports:
      - "3306:3306"
    volumes:
      - dbdata:/var/lib/mysql # data mysql dlm linux disimpan disini
    networks:
      - appnet

# create network dan volume 
networks:
  appnet:

volumes:
  dbdata:

 

server {
    listen 80;
    server_name localhost;

    root /var/www;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string=404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php-app:9000;
        fastcgi_index index.php;
        fastcgi_params SCRIPT_FILENAME/var/www$fastcgi_script_name ;
    }

    location ~ /\.ht {
        deny all;
    }
}

 

Borang Penilaian Keberkesanan Latihan

Training evaluation ยท Devops - Docker and Kubernetes Training

Log in with the account you registered for this training to fill in the survey.

Log in to fill in the survey

Attendance

Registration closed
This training ended on 3 Dec 2025, so new attendance can no longer be registered.

Students (0)

No students have registered yet.