สำหรับชาว Docker และ Kubernetes
ทาง Docker ได้เปิดและ open source project Docker Compose บน Kubernetes ให้ใช้งานกันแล้ว
แน่นอนว่า project นี้พัฒนาด้วยภาษา Go นะครับ
ลองไปศึกษา code ได้เลย

ทำให้สามารถ deploy ระบบงานบน Kubernetes ด้วย Docker compose ได้
แถมยังช่วยลดงานที่ต้องทำผ่าน kubectl ไปได้เยอะเลย
เนื่องจาก Kubernetes นั้นมี object เยอะมาก ๆ
เช่น Pods, Service, Deployment, Config และ ResourceQuota เป็นต้น
มาใช้งานกัน

ปล.
ก่อนหน้านี้ ใช้ได้เฉพาะ Docker Enterprise และ Mac เท่านั้น
ตอนนี้ทุกคนสามารถใช้ได้หมด พร้อมเปิดเป็น open source อีกด้วย

การเปิดใช้งานก็ไม่ยาก

เพียงติดตั้ง Docker Desktop หรือ Docker Enterprise ที่ใช้งานกัน
จากนั้นก็ไปเปิดใช้งาน Kubernetes ใน Docker ซะ

ตรวจสอบว่า พร้อมหรือไม่ด้วยคำสั่ง

$kubectl api-versions | grep compose
compose.docker.com/v1beta1
compose.docker.com/v1beta2

อะไรคือ v1beta1 และ v1beta2 ?

v1beta1 คือ API ที่ผู้ใช้งานต้องส่ง Docker compose file เข้ามาเท่านั้น
ซึ่งเป็น API ที่ถูกใช้มาตั้งแต่เริ่มต้นของ project นี้
ในอนาคตอันใกล้ ตัวนี้อาจจะถูก deprecate และอาจจะเลิกใช้งานไป

v1beta2 คือ API ที่ผู้ใช้งานจะทำการ parse ข้อมูลใน Docker compose file
ให้อยู่ในรูปแบบที่กำหนด ก่อนส่งไปยัง API
โดยใน version นี้จะเป็นค่า default ของ Docker CLI อยู่แล้ว

Architecture ของ Docker compose on Kubernetes เป็นดังนี้

เป็นการทำงานแบบ client-server ปกติ
โดยทาง Docker ได้ทำการ custom API server ของ Kubernetes ผ่าน API server aggregation
ตัวที่สำคัญคือ Compose Controller ทำการแปลงค่าจาก Docker compose
เพื่อไปสร้าง object/component ต่าง ๆ บน Kubernetes อีกที
ตาม mapping ที่กำหนดไว้

ส่วนเรื่องของ compatability สามารถดูได้เช่นกันจาก
Natively support Compose files on Kubernetes

การ deploy ยังใช้รูปแบบเดียวกันกับ Docker Swarm

นั่นคือการ deploy stack ด้วย Docker compose file เช่นเดิม
แต่ว่าให้กำหนดค่าของ orchestrator=kubernetes ไป

มาดูตัวอย่างการ deploy กัน
เอาง่าย ๆ คือ deploy nginx นี่แหละ
ให้ expose port ออกมาคือ 8080

ไฟล์ docker-compose.yml แบบกาก ๆ

มา deploy กัน

มาดูว่า ทำการสร้างอะไรบน Kubernetes บ้าง
มีทั้ง Pods, Service, ReplicaSetและ Deployment กันเลย ง่ายไหมละ !!

ลองใช้กันดูนะครับ

Reference Websites
https://blog.docker.com/2018/12/simplifying-kubernetes-with-docker-compose-and-friends/