BAB 21 / VERSI SEDERHANA

Seluruh dapur dalam satu peti.

Kuka ingin membuka cabang baru tanpa menebak-nebak apakah resep dan kompornya cocok. Ia mengirim seluruh dapur dalam satu peti, lalu meminta manajer pusat menjaga semua peti tetap berjalan.

Untuk pemula 9 bagian Versi Teknis

Masalah sehari-hari

container memecahkan keluhan, "Di dapur lamaku resepnya jadi, tetapi di cabang ini tidak." Tanpa container, tim harus memasang alat, memilih versi library, dan mengatur environment yang sama di setiap mesin. Satu perbedaan kecil dapat membuat aplikasi gagal berjalan.

01
Kuka membawa resep, alat masak, dan bahan kering dalam satu peti. Cabang baru menerima susunan yang sama. Kompor boleh berbeda, tetapi dapur di dalam peti tetap siap bekerja.

Analogi Kuka

Kuka membayangkan sebuah dapur mini yang sudah dirakit di dalam peti. Resep, alat, dan bahan kering ikut dikunci di sana. Saat peti tiba di cabang mana pun, isinya dapat mulai memasak dengan cara yang sama.

Satu peti mudah dikirim. Puluhan peti butuh orang yang menghitung, memeriksa, dan mengganti peti yang rusak. Di situlah manajer pusat membantu dapur.

Peta istilah peti

Peti yang sedang berjalan adalah container. Container vs mesin virtual berarti membandingkan dapur mini dengan gedung baru yang lengkap. image adalah cetak biru peti yang dapat dirakit berulang kali. Layer adalah susunan kotak yang dapat dipakai bersama. Union filesystem membuat susunan itu terlihat sebagai satu isi.

Dockerfile adalah resep untuk merakit image. Multi-stage build memakai dapur perakitan yang ramai, lalu membawa hasil bersih saja ke peti akhir. Optimasi image dan layer caching memakai kembali kotak yang tidak berubah agar perakitan lebih cepat.

Networking adalah jendela pesanan antarpeti. Volume adalah laci bahan yang berada di luar peti supaya data penting tidak hilang saat peti diganti. Docker Compose adalah satu daftar untuk menjalankan beberapa peti bersama.

Arsitektur Kubernetes terdiri dari manajer pusat dan mesin-mesin tempat peti berjalan. pod adalah unit kerja terkecil, biasanya berisi satu atau beberapa peti yang selalu bersama. Service memberi satu alamat untuk peti-peti itu, sedangkan ingress menjadi pintu dari tamu.

Config dan secret adalah catatan yang diberikan saat peti mulai bekerja. Environment menunjukkan tempat peti berjalan. Health probe memberi tahu manajer apakah peti sehat. Resource membatasi jatah listrik dan ruang kerja.

Strategi deployment mengatur cara peti baru menggantikan peti lama. GitOps menyimpan keinginan keadaan dapur dalam repository agar perubahan dapat ditinjau dan diterapkan dengan urutan yang jelas.

Ilustrasi

Kuka berdiri di samping peti besar tertutup bergambar kompor dan panci, dengan tumpukan peti serupa di belakangnya.
Peti dapur siap dikirim.

Satu peti membawa lingkungan kerja yang sudah disiapkan. Cabang baru tidak perlu merakit dapur dari awal. Ia cukup menerima peti dan menjalankannya.

Penjelasan konsep

Container mengisolasi proses dan isi yang dibutuhkan aplikasi. Ia bukan mesin baru yang lengkap. Ia lebih ringan karena berbagi kernel dengan mesin tempatnya berjalan. Yang dikirim adalah paket kerja yang konsisten, bukan daftar langkah pemasangan untuk setiap cabang.

Lima puluh peti tidak mungkin diawasi dengan tangan. Manajer pusat menyimpan keadaan yang diinginkan, misalnya jumlah peti yang harus aktif. Ia menempatkan peti pada mesin yang tersedia dan membuat pengganti saat ada peti yang berhenti. Inilah alasan orkestrasi dibutuhkan.

Mesin manajer berkepala satu berdiri di atas panggung dan mengawasi lima peti identik yang tersusun rapi.
Manajer menjaga peti.

deployment menyatakan peti seperti apa yang harus berjalan dan berapa jumlahnya. ReplicaSet membantu menjaga jumlah peti identik tetap sesuai keinginan. Jika satu peti mati, manajer membuat peti pengganti tanpa menunggu orang datang membawa alat.

Saat tamu bertambah, scaling menambah jumlah peti yang melayani. Saat resep berubah, rollout mengganti peti lama secara bertahap. Sebagian peti lama tetap melayani tamu ketika peti baru diperiksa. Cabang tidak perlu tutup hanya karena resep diperbarui.

CI/CD menghubungkan perubahan resep dengan pengiriman peti. Pipeline menjalankan pemeriksaan, merakit image, memberi tag, dan mengirimkannya ke registry. Setelah itu, manajer pusat menerima versi yang baru. Pengiriman menjadi langkah yang bisa diulang, bukan pekerjaan angkut manual.

Tiga meja berjajar berisi resep, perakitan peti, dan pengiriman, dengan peti bergerak di atas konveyor.
Peti melaju otomatis.

Alur ini memisahkan pembuatan dari pengoperasian. Tim memperbaiki resep dan pipeline. Manajer pusat menjaga peti yang sudah diterima tetap tersedia untuk tamu.

Diagram alur

Dari perubahan resep ke peti yang tetap melayani tamu Resep berubah, pipeline merakit peti, peti dikirim ke registry, manajer pusat mengganti peti lama satu per satu, dan tamu tidak merasa putus. resep berubah pipeline rakit peti registry kirim peti manajer pusat ganti satu-satu tamu tetap terlayani peti lama diganti tanpa putus

Resep berubah dan pipeline merakit peti baru. Registry menyimpan peti itu. Manajer pusat mengganti peti lama satu per satu. Tamu tetap mendapat layanan selama perubahan berlangsung.

Contoh mini

06
resep berubah -> peti baru dirakit
peti baru diuji -> manajer menerima
manajer ganti satu per satu
cabang tetap buka

Kartu pos ini merangkum deployment bertahap. Peti lama tidak dibuang serentak. Peti baru masuk setelah siap, sementara cabang tetap melayani tamu.

Ringkasan

  • Container mengemas aplikasi dan kebutuhan kerjanya agar hasilnya konsisten di banyak mesin.
  • Image menjadi cetak biru untuk merakit container yang sama berulang kali.
  • Orkestrasi membantu mengawasi banyak container dan mengganti yang berhenti.
  • Deployment dan ReplicaSet menjaga jumlah peti identik sesuai keadaan yang diinginkan.
  • Scaling menambah peti saat tamu ramai. Rollout mengganti peti bertahap saat resep berubah.
  • Pipeline CI/CD menguji, merakit, dan mengirim peti ke registry secara otomatis.
  • Tamu tetap terlayani karena peti lama tidak diganti semuanya dalam satu waktu.

Pertanyaan pemahaman

  1. Apa yang diselesaikan peti (container) soal "di dapur lamaku jadi"?
  2. Apa tugas manajer pusat (Kubernetes) terhadap lima puluh peti?
  3. Apa yang dikerjakan pipeline CI/CD setelah resep berubah?

Mau lebih dalam

Versi teknis membahas perintah Docker, resource Kubernetes, dan contoh pipeline yang dapat dijalankan.

Belum dibahas di sini

Crib-sheet produksi, konfigurasi lengkap, dan contoh kode tersedia di versi teknis.