โปรเจคนี้เป็นส่วนหนึ่งของวิชา Operating System ที่ให้สร้าง Container ของ Docker ขึ้นมา และอธิบายการทำงานของ Docker และ Container ต่างๆ ที่เราสร้างขึ้นมา
- โคลน Repository นี้ลงมา
git clone git@github.com:PunGrumpy/k8s-ci-cd.git
-
สั่งรัน Application
2.1 สำหรับ Docker
cd deployment docker compose up -d
2.2 สำหรับ Kubernetes
kubectl apply -k k8s/
-
เข้าไปที่ http://localhost:3000 เพื่อเข้าสู่เว็บไซต์
- สามารถเข้าไปที่ http://localhost:9021 เพื่อเข้าสู่ Control Center ของ Kafka ได้
- สามารถเข้าไปที่ http://localhost:8083 เพื่อเข้าสู่ Debezium ได้
ใช้ Docker ในการสร้าง Image ของ Web Server โดย Web Server เราใช้ Go ในการทำ Web Server และใช้ Fiber เป็น Web Framework ในการทำ Web Server
ใช้ Docker Compose ในการสร้าง Container ของ Web Server และ Database ขึ้นมา โดยใช้ Docker Compose ในการสร้าง Container ขึ้นมา 5 ตัว ได้แก่ Web Server, Kafka, Zookeeper, Control Center และ Debezium (connector) โดยที่ Web Server จะเป็น Container ที่เราสร้างขึ้นมาเอง ส่วน Kafka, Zookeeper, Control Center และ Debezium จะเป็น Container ที่เราดึงมาจาก Docker Hub
ใช้ Kubernetes ในการสร้าง Container ของ Web Server และ Database ขึ้นมา โดยใช้ Kubernetes ในการสร้าง Container ขึ้นมา 5 ตัว ได้แก่ Web Server, Kafka, Zookeeper, Control Center และ Debezium (connector) โดยที่ Web Server จะเป็น Container ที่เราสร้างขึ้นมาเอง ส่วน Kafka, Zookeeper, Control Center และ Debezium จะเป็น Container ที่เราใช้ Image จาก Docker Hub
ใช้ GitHub Actions ในการทำ CI โดยที่เมื่อเราทำการ Test และ Build แล้ว จะทำการ Push Image ขึ้นไปบน Docker Hub และทำการอัปเดต Image บน Kubernetes โดยอัตโนมัติ และทำการ CD โดยที่เมื่อเราทำการ Deploy ไปที่ Remote Server (ลองแล้วทั้ง Kubernetes และ Docker Compose ทั้งสองตัว)
Note แต่ที่ Disable
cd.yml
เพราะ Remote Server ของเราขนาดไม่เพียงพอ จึงแนะนำให้ run ใน Local แทน
ใช้ ArgoCD ในการทำ CD โดยที่เมื่อเราทำการ Push Image ขึ้นไปบน Docker Hub แล้ว จะทำการอัปเดต Image บน Kubernetes โดยอัตโนมัติ
Note เราไม่ได้ใช้เพราะเนื่องจาก Remote Server ของเราขนาดไม่เพียงพอ จึงแนะนำให้ run ใน Local แทน