‫Pembaruan layanan. Anda mungkin telah berasumsi selama ini bahwa ada beberapa cara untuk memperbarui
‫layanan Anda meskipun kami belum memfokuskan hal itu.
‫Mari kita bicarakan hal itu karena pembaruan memiliki banyak hal yang terjadi di bawah selimut. Fungsi pembaruan Swarm dipusatkan di sekitar pola
‫pembaruan bergulir untuk replika Anda. Yang berarti jika Anda memiliki layanan dengan lebih dari
‫satu replika, dan mudah-mudahan Anda melakukannya, itu akan bergulir melalui mereka secara default, satu per
‫satu, memperbarui setiap wadah dengan menggantinya dengan pengaturan baru yang Anda masukkan ke dalam
‫pembaruan perintah.
‫Banyak orang akan mengatakan bahwa orkestra mencegah downtime dalam pembaruan, tetapi saya tidak akan mengatakan
‫bahwa ini mencegah downtime.
‫Saya akan mengatakan itu membatasi downtime. Karena mencegah downtime dalam sistem apa pun adalah tugas pengujian.
‫Anda benar-benar perlu mulai menguji bagaimana Anda melakukan pembaruan dan menentukan, apakah itu memengaruhi pengguna saya?
‫Apakah memperbarui basis data berdampak pada aplikasi web saya? Mungkin memang begitu.
‫Setiap aplikasi tempat Anda memiliki layanan akan diperbarui dan memengaruhi hal-hal lain di sekitarnya
‫secara berbeda.
‫Itu bukan pekerjaan orkestra.
‫Seorang orkestra tidak dapat menentukan bahwa ini adalah protokol basis data, dan ini adalah protokol aplikasi REST
‫yang mudah.
‫Jadi itu akan berbeda, hal-hal rumit yang perlu Anda tangani.
‫Dalam hal pembaruan layanan, jika itu hanya REST API atau antarmuka web yang tidak melakukan hal-hal mewah seperti soket
‫web atau polling panjang, jika itu sesuatu yang sangat sederhana seperti itu atau situs web statis, Anda mungkin
‫akan memiliki pembaruan yang mudah dan itu tidak akan menjadi masalah.
‫Tetapi layanan lain seperti database atau penyimpanan persisten atau apa pun yang membutuhkan koneksi persisten ...
‫semua itu akan selalu menjadi tantangan, apa pun yang Anda coba perbarui.
‫Jadi tes awal dan tes sering.
‫Seperti yang saya katakan sebelumnya, ini pasti akan menggantikan wadah di sebagian besar pembaruan. Kecuali jika Anda memperbarui
‫label atau metadata lain dengan layanan, itu
‫akan bergulir dan mengganti setiap wadah dengan yang benar-benar baru.
‫Bersiaplah untuk itu. Ini memiliki banyak pilihan. Bahkan, yang terakhir
‫saya hitung, ada setidaknya 77 opsi untuk perintah pembaruan. Tetapi hampir semua hal yang ingin Anda
‫lakukan dapat diubah.
‫Banyak opsi dalam perintah pembaruan sebenarnya membuat opsi yang hanya memiliki
‫-rm dan -add pada akhirnya. Karena jika ini merupakan opsi yang dapat digunakan untuk
‫beberapa nilai, katakanlah port untuk mempublikasikan atau variabel lingkungan, yang dapat Anda gunakan banyak dari mereka.
‫Kanan?
‫Jadi, Anda harus bisa memberi tahu perintah pembaruan mana yang Anda tambahkan dan mana yang Anda hapus.
‫Kita akan melihatnya sebentar lagi.
‫Ini juga termasuk opsi kembalikan dan pemeriksaan kesehatan.
‫Anda harus melihat opsi untuk itu dan melihat apakah nilai defaultnya tidak ideal untuk aplikasi Anda dan menguji
‫pengaturan yang berbeda untuk melihat apakah itu membuat pembaruan lebih mudah bagi Anda dan sistem Anda.
‫Anda juga akan melihat bahwa kami memiliki opsi skala dan kembalikan di sini yang merupakan perintah mereka sendiri sekarang.
‫Mereka dulunya adalah opsi yang harus Anda tentukan dengan --rollback atau --scale, tetapi begitu banyak orang telah
‫menggunakan itu begitu sering sehingga Docker sekarang menjadikan mereka semacam warga negara kelas satu di
‫baris perintah.
‫Mereka mungkin menambahkan lebih banyak di masa depan.
‫Terakhir, sebelum kita melihat beberapa contoh, jika Anda melakukan tumpukan, tumpukan yang digunakan untuk tumpukan yang sama
‫adalah pembaruan.
‫Bahkan, tidak ada opsi terpisah untuk pembaruan tumpukan.
‫Anda cukup melakukan stack deploy dengan file yang sama yang telah diedit.
‫Kemudian, itu akan bekerja dengan perintah layanan dan jaringan, dan setiap hal lain yang dilakukannya. Ini akan bekerja dengan mereka
‫untuk memastikan jika ada perubahan yang diperlukan, bahwa mereka diterapkan.
‫Mari kita lihat beberapa contoh cepat dan kemudian kita akan sampai ke baris perintah.
‫Yang ini mungkin adalah contoh paling umum yang akan Anda gunakan, yaitu untuk mengubah gambar
‫layanan.
‫Setiap kali Anda memperbarui aplikasi dan membuat gambar baru, Anda harus melakukan
‫perintah pembaruan layanan, dengan nama gambar, dan kemudian nama layanan.
‫Jadi dalam hal ini, mungkin saya memiliki aplikasi saya dengan tag 1. 2. 0.
‫Dan dalam hal ini saya sekarang menerapkan 1. 2. 1 gambar, dan layanan akan
‫menentukan, ah ya, itu gambar yang berbeda dari yang saya
‫jalankan di layanan saya, dan kami akan pergi dan memperbaruinya. Pada yang berikutnya ini, kami menunjukkan bagaimana Anda dapat melakukan banyak hal sekaligus
‫di dalam satu perintah pembaruan.
‫Anda dapat menambahkan variabel lingkungan dengan env-add, dan kemudian Anda dapat menghapus port dengan
‫publish -rm.
‫Kami juga dapat menambahkan dan menghapus variabel lingkungan dan menerbitkan port dalam perintah pembaruan
‫yang sama sebanyak yang kami inginkan. Pada yang terakhir ini, ini menunjukkan bagaimana kita dapat
‫menggunakan skala dan perintah rollback baru ini pada beberapa layanan secara bersamaan. Yang merupakan salah satu keuntungan menggunakan mereka
‫di atas perintah pembaruan adalah bahwa mereka dapat diterapkan ke beberapa layanan.
‫Dalam hal ini, saya sebenarnya akan mengubah jumlah replika web dan layanan
‫API secara bersamaan.
‫Seperti yang saya katakan beberapa waktu yang lalu, dalam pembaruan Swarm, Anda tidak memiliki perintah penyebaran yang berbeda.
‫Ini hanya penyebaran tumpukan buruh pelabuhan yang sama, dengan file yang telah Anda edit, dan tugasnya
‫adalah bekerja dengan semua bagian API lainnya untuk menentukan
‫apakah ada perubahan yang diperlukan, dan kemudian meluncurkannya dengan pembaruan layanan.
‫Baiklah. Mari kita mulai dengan benar-benar membuat layanan sehingga kita dapat memanipulasi dengan beberapa perintah pembaruan.
‫layanan buruh pelabuhan membuat -p 8088 nama web 80, dan kami akan menggunakan Nginx, dan kami akan menentukan versi
‫seperti yang selalu harus kami produksi.
‫Sangat menyenangkan, sekarang kita benar-benar memiliki pada paruh terakhir 2017, opsi lepas dengan layanan kami membuat dan memperbarui perintah, kita
‫benar-benar dapat melihat ini terjadi secara bersamaan secara real time.
‫Jadi ini akan baik untuk perintah pembaruan untuk melihat bagaimana pembaruan sebenarnya diluncurkan melalui baris perintah.
‫Baiklah. Sekarang, jika kita melakukan layanan buruh pelabuhan, kita melihat bahwa
‫layanan kami sedang berjalan dan itu punya 1 dari 1 replika, jadi itu baik untuk pergi.
‫Sekarang mari tingkatkan layanan kami sehingga kami dapat memiliki beberapa replika untuk dikerjakan. skala layanan buruh pelabuhan
‫Web = 5. Dan Anda baru saja melihat bahwa salah satunya sudah
‫berjalan, dan 4 lainnya harus mulai. Ini berjalan cukup cepat di saya karena saya
‫sudah memiliki gambar diunduh, tetapi Anda mungkin perlu beberapa menit saat mereka dalam kondisi tertunda saat gambar diunduh
‫di node lain.
‫Baiklah.
‫Mari kita lakukan pembaruan bergulir dengan mengubah gambar Nginx itu.
‫Anda akan melihat di sini bahwa saya telah memilih gambar yang lebih lama.
‫Sekarang, Docker tidak peduli tentang apa sebenarnya gambar itu.
‫Ini bisa menjadi aplikasi yang
‫sama sekali berbeda untuk semua yang ia pedulikan. Hanya tahu bahwa di layanan ini, saya mengubahnya ke gambar yang berbeda.
‫Ingat, secara default, itu akan melalui sini satu per satu.
‫Pertama-tama akan menghapusnya, membuat yang baru, dan kemudian ketika yang baik untuk pergi, dan
‫itu terlihat sehat, itu akan mulai di yang berikutnya. Pada contoh berikut, kita akan mengubah port yang
‫dipublikasikan.
‫Tetapi Anda tidak dapat mengubah port.
‫Anda benar-benar harus menambahkan dan menghapusnya secara bersamaan.
‫Jadi dalam hal ini, karena kami pertama kali menerbitkannya dengan 8088, kami perlu melakukan pembaruan Layanan buruh
‫pelabuhan menerbitkan rm 8088. Saya tidak perlu menentukan nilainya. Saya hanya perlu menentukan kuncinya. Kemudian kita
‫akan menerbitkan yang baru, 9090. Maka nilainya, yang dalam hal ini adalah 80. Anda akan melihat bahwa itu
‫akan melakukan proses pembaruan yang sama seperti sebelumnya.
‫Contoh terakhir yang ingin saya bicarakan adalah tip. Karena Anda akan sering mendapat tantangan dengan
‫sesuatu yang disebut penyeimbangan kembali. Atau jika Anda mengubah jumlah node atau jika Anda memindahkan banyak barang, jika Anda memiliki
‫banyak kontainer di gerombolan Anda, Anda mungkin menemukan bahwa mereka tidak benar-benar merata. Anda mungkin punya
‫beberapa node yang cukup ringan tentang berapa banyak kontainer
‫berjalan dan yang lainnya memiliki banyak. Jika Anda memiliki banyak hal yang berubah, Swarm tidak akan memindahkan segala sesuatunya
‫agar semuanya seimbang dalam hal jumlah sumber daya yang digunakan.
‫Tetapi, yang dapat Anda lakukan adalah Anda dapat memaksa pembaruan suatu layanan bahkan tanpa mengubah apa pun dalam layanan itu.
‫Kemudian, ia akan menerbitkan kembali tugas, dan dalam hal ini, ia akan memilih node yang paling sedikit digunakan, yang merupakan bentuk penyeimbangan kembali.
‫Banyak kali dalam kerumunan yang lebih kecil ketika saya memindahkan sesuatu yang besar, atau menambahkan banyak node, tiba-tiba saya memiliki
‫banyak server kosong yang tidak melakukan apa-apa dan saya perlu mengerjakannya.
‫Jadi yang akan saya lakukan adalah mengambil satu atau dua layanan saya, dan saya akan melakukan
‫pembaruan layanan buruh pelabuhan, dan dalam hal ini akan bergulir dan sepenuhnya menggantikan tugas.
‫Tentu saja akan menggunakan jadwal default untuk mencari node dengan jumlah kontainer paling sedikit dan
‫jumlah sumber daya yang paling sedikit digunakan.
‫Itu semacam trik untuk menyiasati jumlah pekerjaan yang tidak merata pada node Anda.
‫Ingatlah untuk membersihkan dengan menghapus layanan yang kami buat dalam kuliah ini.