Sedikit cerita
Buat saya yang waktu & resources nya terbatas tapi ingin belajar docker orchestration, swarm ini merupakan pilihan tepat.
Kenapa? karena learning curve nya ga setinggi k8s, sudah tahu sedikit tentang docker, rasanya belajar swarm akan lebih mudah.
Seperti biasa, saya menjadikan post ini sebagai catatan agar saya tidak lupa, mohon maaf kalau ada penyampaian yang tidak jelas atau kurang baik
Sebelum memulai
Hal yang perlu diperhatikan
-
Saya anggap pembaca sudah bisa menggunakan docker.
-
Cek dan samakan versi docker engine di semua server. Dari pengalaman, sering terjadi kegagalan saat akan deploy aplikasi. Gunakan
docker -v
ataudocker node ls
apabila sudah menggunakan mode swarm. -
Di sini saya menggunakan Virtual Box dengan OS ubuntu sebagai worker dan laptop saya sebagai manager.
-
Saya menggunakan docker-compose file di banding one line docker command, alasannya biar lebih mudah di baca/mengerti.
Mari kita mulai!
- Inisialisasi docker swarm di laptop (manager),
docker swarm init

Docker Swarm Init
- Copy command di atas lalu paste di worker

Docker Swarm Join Worker
- Cek server/anggota di cluster dengan
docker node ls

Cek Anggota Cluster
- Kita akan membuat service dengan image dari containous/whoami yang port default nya menggunakan port 80. Buat file docker-compose.yml di manager
version : '3.4'
services:
saha-aing:
image: containous/whoami:latest
ports:
- 88:80
- Kita coba deploy stack
docker stack deploy -c docker-compose.yml saha-aing

Deploy!
- Pastikan stack sudah berhasil di deploy
docker service ls

Stack Berhasil di Deploy
Atau buka browser, ketikan localhost:88
di address bar

Cek di Browser
- Untuk mengetahui di mana container di buat,
kita harus cek dengan, gunakandocker ps -a
di “manager” dan di “worker”docker stack ps saha-aing
. Untuk memastikan container dari service di buat di “worker” tambahkan linenode.role == worker
di docker-compose
version : '3.4'
services:
saha-aing:
image: containous/whoami:latest
ports:
- 88:80
deploy:
placement:
constraints:
- node.role == worker
- Jalankan kembali docker stack
docker stack deploy -c docker-compose.yml saha-aing
- Berikutnya kita coba scale up service
saha-aing
, gunakan command
docker service scale saha-aing_saha-aing=3

Test Scale Up Service
- Untuk test apa load balancing service sudah berhasil, gunakan
# harusnya dapat output dengan hostname berbeda
curl localhost:88

Test dengan curl
- Bagaimana kalau dari awal saya mau buat 3 replika? tambahkan mode: replicated dan jumlah replica
version : '3.4'
services:
saha-aing:
image: containous/whoami:latest
ports:
- 88:80
deploy:
mode: replicated
replicas: 3
placement:
constraints:
- node.role == worker
Untuk part 1 cukup sampai di sini. Sampai jumpa di part 2