‫Sekarang setelah Anda memahami dasar-dasar membuat segerombolan multi-node dan membuat jaringan overlay dan layanan Docker, kita
‫akan membahas hal keren berikutnya tentang Swarm, yaitu tumpukan. Bukan tumpukan pancake, tapi
‫tumpukan layanan. Dalam 1. 13, Docker menambahkan fitur yang sangat hebat
‫ini yang menambahkan lapisan abstraksi lain di atas tumpukan. Pada dasarnya ini adalah file Menulis untuk produksi Swarm. Sekarang tumpukan menerima
‫Tulis file.
‫Di dalamnya ada apa yang kita sebut definisi deklaratif, di mana kami menyatakan inilah yang saya
‫inginkan sebagai hasil akhirnya.
‫Dan tugas segerombolan itu untuk mencari tahu semua itu. Sekarang bukan hanya layanan; itu jaringan dan volume
‫juga.
‫Dan mengintip sedikit.
‫Ini sebenarnya akan memasukkan rahasia, yang akan kita bicarakan dalam beberapa kuliah mendatang.
‫Kita bisa menggunakan perintah baru, yaitu docker stack deploy untuk mengimpor file Compose ini dan menjalankan perintah yang kita masukkan
‫ke dalamnya.
‫Tumpukan mengelola semua ini.
‫Tidak perlu kita pergi dan pertama-tama membuat jaringan, atau pertama-tama membuat volume, tetapi kita benar-benar bisa melakukannya.
‫Kita dapat menggunakan sesuatu yang disebut Eksternal dalam file Menulis kita untuk mengatakan hei, ini sudah hal-hal yang
‫ada di gerombolan saya Silakan dan gunakan itu, jangan repot-repot membuatnya.
‫Tetapi biasanya Anda akhirnya memiliki tumpukan Anda hanya melakukan semuanya untuk Anda karena lebih mudah seperti itu.
‫Kami akan mendapatkan beberapa fitur baru di file Menulis kami, jadi kami akan mulai
‫dengan yang terlihat sangat mirip dengan yang kami miliki sebelumnya. Tetapi kita akan mendapatkan kunci baru yang digunakan ini di
‫sana, atau kamus, yang memungkinkan kita untuk menentukan hal-hal yang spesifik untuk Swarm.
‫Berapa banyak replika yang kita inginkan?
‫Apa yang ingin kita lakukan ketika kita gagal? Bagaimana kita ingin melakukan pembaruan, dan
‫semua hal yang tidak kita pedulikan di mesin pengembangan lokal kita.
‫Tapi itu harus dibayar, yaitu, kita belum bisa melakukan perintah build. Itu mungkin sesuatu yang tidak akan pernah
‫terjadi di Swarm karena pola pikir di sini adalah bahwa bangunan tidak boleh terjadi pada kerumunan
‫produksi Anda. Membangun adalah sesuatu yang harus dilakukan sistem CI Anda.
‫Mungkin Jenkins atau sesuatu yang lain seperti Codeship.
‫Setelah Anda membuat gambar dan menempatkannya di repositori Anda, tumpukan ini sebenarnya yang akan
‫menarik gambar-gambar itu dan menyebarkannya dengan opsi penyebaran.
‫Namun, kabar baiknya di sana adalah bahwa mereka benar-benar rukun.
‫Di mesin lokal Anda, Compose sebenarnya akan diabaikan ketika Anda menjalankan perintah docker-compose.
‫Ini
‫sebenarnya akan mengabaikan informasi penyebaran apa pun. Itu benar-benar akan mengatakan 'hei, kamu punya menyebarkan informasi di sini.
‫Saya tidak bisa menggunakannya, jadi saya akan mengabaikannya. 'Demikian juga,
‫ketika Anda berada di Swarm dan Anda menyebarkan tumpukan baru atau pembaruan ke tumpukan, itu benar-benar akan mengatakan'
‫hei, Anda punya perintah membangun di sini.
‫Saya tidak membuat jadi saya akan mengabaikan mereka dan terus berjalan. 'Yang menyenangkan adalah
‫Anda tidak perlu mengubah file Anda. Kita akan lihat nanti bagaimana kita benar-benar
‫dapat memiliki satu file Tulis yang melakukan semua yang kita perlukan untuk dilakukan di sisi pengembangan dan
‫di sisi penyebaran produksi.
‫Itu sangat keren.
‫Akhirnya, Anda tidak benar-benar membutuhkan Docker Compose CLI, biner. Itu tidak perlu berada
‫di kawanan Anda. Karena sekali lagi menulis, perintah yang sebenarnya, bukan alat produksi.
‫Itu tidak dirancang untuk menjadi produksi.
‫Itu dirancang untuk menjadi alat pembantu pengembang dan sysadmin.
‫Ini sangat baik untuk pekerjaan lokal pada alat berat kami.
‫Kawanan, yang pada dasarnya adalah Docker Engine. Docker Engine sekarang dapat
‫menerima Compose file menggunakan perintah stack. Itu membaca file Menulis tanpa perlu Docker Menulis di mana saja di server.
‫Mari kita tinjau cepat nyata ketika kita melihat kembali layanan kami.
‫Seperti inilah layanan kami nantinya.
‫Kami akan membuat layanan ...
‫katakanlah itu Nginx. Dan katakanlah kita menentukan tiga replika itu.
‫Jadi, itu akan pergi dan membuat tiga tugas di orkestra, dan tugas-tugas itu akan menemukan server,
‫atau node, untuk meletakkannya dan mereka akan membuat wadah.
‫Di tumpukan baru, kita berbicara tentang banyak layanan, satu atau lebih, benar. Anda dapat memiliki puluhan layanan
‫di sana. Dalam satu file YAML.
‫Mereka bertindak seperti layanan yang kami miliki sebelumnya, hanya sekarang kita bisa melakukan volume dan jaringan overlay dalam
‫file Tulis itu. Dan itu menghasilkan
‫apa yang kita sebut tumpukan. Tumpukan mengontrol semua hal itu.
‫Dan itu benar-benar akan menempatkan namanya dengan benar pada semua objek sehingga Anda dapat dengan mudah mengetahui
‫mana yang terkait dengan tumpukan mana. Itu sebenarnya akan menempatkan label di sana juga, yang
‫akan kita bahas nanti, yang lebih metadata bagi Anda untuk dapat menentukan dari mana tumpukan hal khusus ini berasal.
‫Jadi ini sangat bagus.
‫Kita sekarang bisa menggunakan file YAML untuk benar-benar melakukan semua hal yang kita tidak ingin
‫harus mengetikkan perintah layanan. Karena perintah layanan sudah agak sulit dan panjang. Dan kemudian kami akhirnya
‫membuat skrip Bash untuk menjalankan perintah-perintah itu, dan kemudian membosankan, benar.
‫Jadi, sekarang kita sudah memiliki Swarm selama delapan bulan, kita sekarang mendapatkan fitur tumpukan ini yang mengelola
‫layanan tersebut.
‫Perhatikan bahwa tumpukan hanya untuk satu gerombolan.
‫Kanan? Tidak bisa melakukan banyak kawanan.
‫Ini hanya akan berjalan pada satu gerombolan sehingga dapat mengontrol semua node dan menyebarkan semua
‫layanan, jaringan, dan volume ini.
‫Saya harus mengatakan bahwa diagram ini sebenarnya dapat memiliki satu hal lagi di dalamnya, yaitu
‫rahasia, karena stack juga dapat mengontrolnya. Kita akan melihatnya di kuliah nanti di bagian ini. BAIK.
‫Mari kita lihat tumpukan dan cara kerjanya.
‫Saya kembali di gerombolan 3-simpul saya yang kami bangun sebelumnya. Saya akan memaksimalkan jendela pada node1 karena saya
‫tidak benar-benar membutuhkan dua node lainnya.
‫Setidaknya saya tidak perlu baris perintah ssh mereka.
‫Kita akan menggunakan contoh aplikasi pemungutan suara yang kita lakukan dalam kuliah sebelumnya untuk bagian ini.
‫Jika Anda ingat desain kami untuk itu, itu adalah lima layanan yang berbeda, dan mereka semua memiliki ketergantungan satu
‫sama lain.
‫Dan itu akhirnya memberi kami dua situs web yang berbeda.
‫Anda telah melalui dan saya yakin Anda membuat daftar layanan terbaik dengan semua nilai dan opsi yang
‫dibutuhkan dan itu sempurna, kan?
‫Saya di sini untuk memberi tahu Anda bahwa sekarang, itu tidak lagi diperlukan.
‫Itu sangat penting bagi kami untuk menggunakannya dan tidak semuanya akan membutuhkan file stack.
‫Tapi sekarang saya punya file stack.
‫Mari kita intip cepat karena Anda akan melihat bahwa itu
‫sangat mirip dengan file Compose karena itu. Satu-satunya hal penting yang harus Anda ubah adalah versi minimal 3 atau
‫lebih tinggi.
‫Versi terbaru sekarang adalah versi 3. 1, tapi saya yakin itu akan berubah karena terus
‫berubah dan menjadi dewasa.
‫Tetapi Anda membutuhkan versi 3 untuk menggunakan tumpukan.
‫Anda akan melihat bahwa kami memiliki redis kami, dan db kami, dan suara kami, dan semua hal ini
‫yang mungkin sangat mirip dengan Anda dari pekerjaan Anda sendiri. Anda mungkin sangat terbiasa dengan itu dan gambar yang mereka butuhkan,
‫dan port yang mereka butuhkan terbuka dan semuanya.
‫Namun dalam kasus ini, Anda akan melihat penerapan.
‫Menyebarkan di sini adalah opsi baru. Anda akan melihat di sini bahwa saya menentukan berapa banyak replika
‫yang saya inginkan, yaitu berapa banyak salinan dari gambar itu yang perlu dijalankan pada suatu waktu.
‫Dan apa yang terjadi ketika saya melakukan pembaruan.
‫Jadi ketika saya melakukan pembaruan tumpukan yang sebenarnya, yang kemudian akan melakukan pembaruan layanan.
‫Bagaimana saya ingin itu diluncurkan?
‫Kanan?
‫Apakah saya ingin semua turun pada saat yang sama? Apakah saya hanya menginginkan satu per satu?
‫Berapa banyak keterlambatan di antara mereka?
‫Ada banyak pilihan di sini.
‫Kami hanya menggaruk permukaan, tetapi Anda dapat melihat bahwa saya memiliki kebijakan mulai ulang di
‫sini bahwa jika wadah gagal, restart secara otomatis.
‫Anda dapat melihat di
‫sini di bawah database, saya benar-benar memiliki kendala untuk memastikan bahwa itu pada node tertentu.
‫Kami belum berbicara banyak tentang kendala, tetapi ada beberapa cara bagi kami
‫untuk memberi label objek, yaitu, wadah atau gambar atau apa pun yang dapat kita buat atau hancurkan di Swarm atau di Docker sendiri.
‫Kami benar-benar dapat menetapkan label untuk salah satu dari itu, termasuk node, dan sebuah node yang merupakan manajer mendapatkan
‫label sendiri.
‫Ini sangat mudah bagi kita untuk mengatakan, hei, wadah ini harus dijalankan pada simpul yang memiliki
‫peran khusus ini.
‫Contoh yang bagus di sana. Seperti yang kita gulir ke bawah kita punya beberapa opsi paralelisme yang telah kita lihat sebelumnya.
‫Opsi penundaan ini sangat keren. Jika Anda memiliki semacam waktu pemanasan ketika
‫Anda memiliki wadah yang berputar. Mungkin mereka sudah mulai tetapi mereka tidak benar-benar ditayangkan selama mungkin 60 detik atau sesuatu.
‫Anda dapat menambahkan penundaan di sana. Kami akan benar-benar melihat
‫itu nanti selama penyebaran produksi biru-hijau. Untuk saat ini, Anda dapat melihat semuanya standar.
‫Kami sebenarnya punya lebih banyak opsi di sini. Anda benar-benar dapat melihat bahwa saya menetapkan label khusus ini.
‫Saya memiliki jendela dan upaya maksimal untuk memulai kembali kebijakan.
‫Jadi jika itu mencoba untuk memulai kembali, dan itu terus gagal, itu tidak akan mencoba lebih dari tiga kali.
‫Mari kita periksa.
‫Yang harus saya lakukan adalah melakukan penempatan docker stack -c untuk menulis. Jadi saya akan menggunakan file Tulis.
‫Sekarang saya akan menyebutnya voteapp. Dan kita mulai. Sebenarnya tidak membuat semuanya dan memutarnya
‫secepat itu.
‫Yang dilakukan adalah membuat objek-objek itu di scheduler, yang kemudian akan melalui proses
‫menciptakan layanan, yang kemudian membuat tugas, yang kemudian membuat wadah.
‫Itu juga harus membuat jaringan seperti yang akan Anda lihat di sini. Ingat kami memiliki frontend dan backend
‫sehingga ia menciptakan mereka, serta jaringan default, yang mana file tumpukan tertentu yang saya miliki
‫menggunakan jaringan default.
‫Dan kemudian Anda akan melihat opsi ini untuk visualizer yang merupakan yang baru yang tidak kami gunakan sebelumnya.
‫Kita akan melihatnya sebentar lagi.
‫Jadi mari kita lihat lebih sedikit perintah buruh pelabuhan.
‫Anda akan melihat bahwa kami dapat menerapkan. Kami sudah melakukannya.
‫Kemudian
‫kita memiliki ls, ps, rm, dan layanan.
‫Jadi perintah ini tidak memiliki banyak fitur untuk itu.
‫Ini cukup sederhana karena semua fungsi benar-benar ada di file Menulis dan benar-benar di
‫objek yang dibuatnya.
‫Karena kita sudah melakukan semua itu, kita dapat melakukan hal-hal seperti ls, yang hanya menunjukkan kepada kita semua tumpukan kita.
‫Ini perintah yang cukup mendasar. Kami hanya punya satu. Maka jika saya melakukan ps, itu benar-benar menunjukkan kepada saya ... oops, saya
‫harus menentukan nama.
‫memilih.
‫Ini disebut voteapp.
‫Harus benar.
‫BAIK.
‫Biarkan saya mendukungnya sehingga Anda bisa melihatnya sedikit lebih baik. Disana.
‫Ini adalah tugas yang sebenarnya. Kemudian Anda dapat melihat simpul mana yang sedang mereka jalankan.
‫Sebenarnya bukan wadahnya. Ini sebenarnya tugas yang kami lihat di sini. Karena jika itu adalah wadah yang
‫sebenarnya, kita akan melihat nama besar dan panjang. Karena jika Anda ingat, layanan yang kami buat sebelumnya, mereka memiliki nama-nama
‫yang sangat panjang ini jika
‫kami benar-benar pergi dan melakukannya docker ps. Kanan? Jika saya melakukan docker container
‫ls, atau buruh pelabuhan ps, Anda mendapatkan nama-nama yang sangat panjang. Dan itu karena mereka semua mendapatkan GUID, karena setiap
‫penampung harus diberi nama unik.
‫Jadi begitulah mereka menjamin bahwa mereka selalu unik dan tidak pernah bertabrakan.
‫Maka yang terakhir di
‫sini adalah layanan docker stack appapp.
‫Saya paling suka yang ini, karena ini menunjukkan replika saya.
‫Ini
‫seperti melakukan layanan. Ini menunjukkan kepada saya berapa banyak replika yang telah saya mulai jadi saya
‫tahu apakah saya sudah mendapatkan jumlah kontainer yang tepat. Maka jika saya ingin menyelam lebih
‫dalam, maka saya bisa melakukan buruh pelabuhan tumpukan ps. Kami benar-benar mendapatkan nama tugas di sini dan kami melihat node apa yang mereka jalankan.
‫Keduanya bersama-sama benar-benar memberi Anda gambaran lengkap tentang bagaimana seluruh aplikasi ini berjalan.
‫Jika saya ingin terjun ke jaringan, saya bisa melakukan jaringan buruh pelabuhan
‫seperti yang biasa kami lakukan.
‫Dan Anda dapat melihat tiga jaringan overlay baru yang dibuat untuk aplikasi ini. Dan perhatikan bahwa
‫nama aplikasi selalu di awal. Tumpukan selalu mendahului nama layanan.
‫Jadi setiap tumpukan akan memastikan bahwa namanya ada di depan.
‫Dan mari kita periksa.
‫Biarkan saya membuka browser saya.
‫Baiklah.
‫Kita bisa melihatnya di port 5000.
‫Saya menjalankan situs pemungutan suara.
‫Saya pergi ke 5001.
‫Saya punya situs hasil sehingga saya bisa menemukan ini dan kemudian melihat hasilnya.
‫Maka yang baru ini kita miliki disebut Visualizer.
‫Ada di 8080. Visualizer sebenarnya adalah alat yang cukup rapi untuk tujuan demonstrasi.
‫Itu sebenarnya dibuat ... semua ini dibuat oleh Docker, omong-omong, dan
‫ini semua merupakan repo sumber terbuka yang dapat Anda lihat di bagian Sumberdaya bagian ini.
‫Jadi kami punya warna berbeda untuk setiap layanan.
‫Hasil voteapp berwarna hijau.
‫Dan kemudian redis semacam mustardy, dan suara adalah merah muda. Anda dapat melihat ada dua suara dan ada
‫dua redises.
‫Cukup bagus untuk menunjukkan apa yang terjadi ketika banyak hal bergerak di sekitar kerumunan.
‫Jika saya benar-benar pergi ke file saya dan melakukan perubahan.
‫Mari kita pergi ke aplikasi pemungutan suara dan katakanlah kita ingin mengubah replika menjadi lima.
‫Kita bisa pergi dan memperbarui layanan. Tapi itu semacam AntiPattern. Jika kita masuk dan mengetik secara
‫manual, perintah ke layanan, seperti pembaruan layanan
‫buruh pelabuhan, itu berarti bahwa lain kali saya menerapkan kembali file YAML ini, itu akan menimpa perubahan itu.
‫Jika Anda pernah melakukan pembentukan cloud di AWS atau manajemen konfigurasi lainnya, Anda tahu bahwa sekali
‫Anda menggunakan file konfigurasi seperti ini untuk mengelola infrastruktur Anda, Anda benar-benar ingin selalu menggunakan
‫file ini karena akan menjadi sumbernya kebenaran.
‫Jadi itu mungkin, dalam produksi, akan menjadi semacam file yang Anda simpan dalam Git Repository yang Anda
‫kontrol versi, dan Anda mengontrol perubahan, dan dengan cara itu Anda dapat mengembalikan perubahan.
‫Dalam hal ini, saya hanya akan mengubah file itu dengan cepat, dan kita akan menjalankan perintah yang sama, docker
‫stack deploy.
‫Perhatikan kami tidak memiliki pembaruan. Karena kita akan menyebarkan ke tumpukan yang sama
‫dan itu akan mengenali bahwa itu ada, dan bahwa kita akan memperbaruinya berdasarkan perubahan ini.
‫Untuk memperbaruinya, kami harus memastikan bahwa kami menggunakan nama yang tepat.
‫Jadi itu voteapp. Dan kemudian perhatikan bahwa itu mengatakan memperbarui layanan, tetapi mengakui bahwa itu perlu mengubahnya.
‫Lalu jika kita pergi ke visualizer kami, Anda dapat melihat bahwa kami sudah mendapatkannya.
‫Kami terlalu lambat hari ini, bukan.
‫Kami tidak dapat mengikuti kawanan itu. Kami sekarang punya lima aplikasi pemungutan suara ini sudah berjalan.
‫Jika mereka butuh waktu untuk menjalankan dan meluncurkan, kita benar-benar akan melihat keadaan mereka berubah di sini saat
‫mereka online.
‫Tapi ini adalah aplikasi web sederhana, jadi itu akan memulai dengan cukup cepat.
‫Baik.
‫Itu tumpukan.
‫Sekarang mari kita tambahkan rahasia ke tumpukan kami.