Langsung ke konten

Cara Kerja Deploy ​

Setiap layanan di-deploy sendiri-sendiri. Deploy (atau Redeploy) pada layanan membangun atau menarik layanan itu dan menjalankannya ulang dengan pengaturannya saat ini; layanan lain di proyek tetap berjalan persis seperti sebelumnya. Menambahkan layanan otomatis men-deploy-nya, dan perubahan jaringan men-deploy ulang layanan yang bersangkutan.

Untuk men-deploy semua layanan sekaligus, misalnya setelah mengubah beberapa, gunakan Deploy all di Settings proyek. Deploy all juga mencopot layanan yang sudah Anda hapus dari proyek.

Tahapan ​

Setiap layanan melewati status berikut, yang ditampilkan di Overview-nya dan di sidebar:

StatusApa yang terjadi
PendingMenunggu giliran dalam deployment
BuildingLayanan Git sedang dibangun di mesin build Zenavo
DeployingObjek Kubernetes sedang diterapkan ke server
StartingKontainer sedang mulai dan menunggu lolos health check
RunningSemua instance siap
Failed / CrashedBuild atau rollout gagal, atau kontainer terus keluar. Buka Logs untuk melihat penyebabnya.
  1. Build. Layanan Git di-clone dan dibangun (Rencana Build), dan image-nya disimpan di penyimpanan image Zenavo, satu repositori per layanan, tempat server menariknya (server di Tiongkok daratan dari salinan di Shanghai). Layanan image di-resolve ke digest, sehingga rollback menjalankan image yang persis sama.
  2. Terapkan. Layanan diterapkan; dengan Deploy all, layanan diterapkan sesuai urutan dependensi, masing-masing menunggu dependensinya siap.
  3. Rollout. Layanan tanpa volume diperbarui tanpa downtime: instance baru harus sehat sebelum yang lama berhenti. Layanan dengan volume dihentikan dulu lalu dijalankan, sehingga tidak pernah ada dua instance yang menulis data yang sama.
  4. Inisialisasi. Jika layanan punya perintah inisialisasi (dari template), perintah itu dijalankan sekali dalam job dengan image, variabel, dan volume yang sama sebelum layanan mulai.

Antrean build ​

Build Git berjalan di mesin build Zenavo, yang dipakai bersama semua tim. Sebuah tim menjalankan build sebanyak yang diizinkan paketnya pada satu waktu (lihat Penggunaan & Tagihan); build berikutnya menunggu, dan log-nya menyebutkan hal itu.

Saat mesin build sibuk, mesin yang kosong diberikan ke build yang menunggu dari paket tertinggi: Team, lalu Pro, lalu Dev, lalu Free, yang paling awal lebih dulu dalam satu paket. Build yang sudah menunggu 10 menit mendapat giliran berikutnya apa pun paketnya, sehingga tidak ada build yang menunggu terlalu lama. Men-deploy image Docker atau database tidak membangun apa-apa dan tidak pernah menunggu di sini.

Jika Zenavo dimulai ulang saat deployment ​

Control plane Zenavo sesekali dimulai ulang, misalnya saat diperbarui. Deployment yang sedang berjalan dilanjutkan dari titik terakhirnya, dan log-nya mencatat hal itu (Control plane restarted; resuming from …):

  • Saat build: deployment masuk antrean lagi dan di-build sekali lagi.
  • Setelah build: image yang sudah di-build langsung di-deploy, tanpa build ulang.
  • Saat rollout: server Anda menyelesaikan rollout sendiri. Zenavo hanya menerapkan layanan yang belum dicapainya, menunggu layanan lain siap, lalu menandai deployment berhasil atau gagal dan memberi tahu Anda seperti biasa.

Jika perintah inisialisasi sebuah layanan (misalnya migrasi database) sedang berjalan saat itu, Zenavo tidak menghentikannya dan tidak menjalankannya lagi: deployment ditandai terputus, agar Anda dapat memeriksa hasil perintah itu sebelum deploy lagi. Sebuah deployment dilanjutkan paling banyak setelah 2 kali restart; setelah yang ketiga, deployment juga ditandai terputus. Operasi lain, seperti backup atau memindahkan proyek, tidak pernah diulang otomatis: operasi itu ditandai terputus untuk Anda periksa.

Log ​

Output setiap deployment ada di Logs → Build Logs selama berjalan maupun sesudahnya. Lihat Log.

Tidak berafiliasi dengan Zeabur.