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

  1. Saya anggap pembaca sudah bisa menggunakan docker.

  2. Cek dan samakan versi docker engine di semua server. Dari pengalaman, sering terjadi kegagalan saat akan deploy aplikasi. Gunakan docker -v atau docker node ls apabila sudah menggunakan mode swarm.

  3. Di sini saya menggunakan Virtual Box dengan OS ubuntu sebagai worker dan laptop saya sebagai manager.

  4. Saya menggunakan docker-compose file di banding one line docker command, alasannya biar lebih mudah di baca/mengerti.


Mari kita mulai!

  1. Inisialisasi docker swarm di laptop (manager),
docker swarm init
Docker Swarm Init

Docker Swarm Init

  1. Copy command di atas lalu paste di worker
Docker Swarm Join Worker

Docker Swarm Join Worker

  1. Cek server/anggota di cluster dengan
docker node ls
Cek Anggota Cluster

Cek Anggota Cluster

  1. 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
  1. Kita coba deploy stack
docker stack deploy -c docker-compose.yml saha-aing
Deploy!

Deploy!

  1. Pastikan stack sudah berhasil di deploy
docker service ls
Stack Berhasil di Deploy

Stack Berhasil di Deploy

Atau buka browser, ketikan localhost:88 di address bar

Cek di Browser

Cek di Browser

  1. Untuk mengetahui di mana container di buat, kita harus cek dengan docker ps -a di “manager” dan di “worker”, gunakan docker stack ps saha-aing. Untuk memastikan container dari service di buat di “worker” tambahkan line node.role == worker di docker-compose
version : '3.4'

services:
  saha-aing:
    image: containous/whoami:latest
    ports:
      - 88:80
    deploy:
      placement:
        constraints:
          - node.role == worker
  1. Jalankan kembali docker stack
docker stack deploy -c docker-compose.yml saha-aing
  1. Berikutnya kita coba scale up service saha-aing, gunakan command
docker service scale saha-aing_saha-aing=3
Test Scale Up Service

Test Scale Up Service

  1. Untuk test apa load balancing service sudah berhasil, gunakan
# harusnya dapat output dengan hostname berbeda
curl localhost:88
Test dengan curl

Test dengan curl

  1. 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