Buku "Pola Kubernetes: Pola Pengembangan Aplikasi Cloud Asli"

gambarHalo, habrozhiteli!

Dengan pengembangan layanan dan wadah microser, pendekatan terhadap desain, pembuatan, dan peluncuran perangkat lunak telah berubah. Jelajahi pola dan prinsip desain baru yang diperlukan untuk mengimplementasikan aplikasi cloud Kubernetes.

Buku ini ditujukan untuk pengembang yang ingin merancang dan mengembangkan aplikasi berbasis cloud untuk platform Kubernetes. Manfaat terbesar darinya adalah pembaca yang setidaknya sedikit terbiasa dengan wadah dan ingin naik ke tingkat yang baru. Setiap pola desain adalah deskripsi masalah sebenarnya, dan solusinya didukung dan diilustrasikan oleh contoh kode spesifik.

Kutipan. Pola sespan


Pola sespan (Trailer) adalah untuk mendefinisikan wadah yang memperluas kemampuan wadah yang ada tanpa mengubahnya. Ini adalah salah satu pola wadah mendasar yang memungkinkan Anda untuk membuat wadah yang sangat khusus yang bekerja erat satu sama lain. Dalam bab ini Anda akan mempelajari segala sesuatu yang berkaitan dengan ide pola sespan (Trailer). Dan dalam bab 16 dan 17 Anda akan berkenalan dengan varian khusus dari pola ini - pola Adaptor dan Ambassador, masing-masing.

Tugas


Containers adalah teknologi pengemasan yang populer yang memungkinkan pengembang dan administrator sistem untuk membuat, mengirim, dan menjalankan aplikasi secara terpadu. Wadah mewakili batas alami dari unit fungsional dengan runtime, siklus rilis, API, dan tim pengembangannya. Wadah khas berfungsi seperti proses di Linux - memecahkan satu masalah, dan melakukannya dengan baik - dan dibuat dengan asumsi kemungkinan penggantian dan penggunaan kembali. Yang terakhir ini sangat penting karena memungkinkan Anda untuk dengan cepat membuat aplikasi menggunakan wadah khusus yang ada.

Saat ini, untuk mengirim permintaan HTTP, Anda tidak perlu menulis perpustakaan klien, cukup gunakan yang sudah ada. Demikian pula, untuk menjaga situs web, Anda tidak perlu membuat wadah dengan server web, cukup gunakan yang sudah ada. Pendekatan ini memungkinkan pengembang untuk tidak menemukan kembali roda dan menciptakan ekosistem dengan wadah yang lebih sedikit dengan kualitas yang lebih baik untuk pemeliharaan. Namun, untuk dapat menggunakan wadah yang dapat digunakan kembali yang sangat khusus, cara untuk memperluas kemampuan mereka dan sarana untuk mengatur interaksi di antara mereka diperlukan. Pola Sidecar (Trailer) menggambarkan cara mengatur interaksi ketika satu wadah memperluas kemampuan wadah lain yang ada.

Keputusan


Dalam bab 1, kami melihat bagaimana pod memungkinkan Anda untuk menggabungkan beberapa kontainer menjadi satu blok. Di belakang layar, pada saat dijalankan, di bawah juga merupakan wadah, tetapi dimulai sebagai proses yang dijeda (secara harfiah menggunakan perintah jeda) di depan semua wadah lainnya di perapian. Itu tidak melakukan apa-apa selain menyimpan semua ruang nama Linux yang digunakan wadah aplikasi untuk berinteraksi di seluruh siklus hidup pod. Selain detail implementasi ini, semua karakteristik yang disediakan abstraksi perapian juga menarik.

Di bawah adalah primitif mendasar yang hadir di banyak platform cloud, meskipun dengan nama yang berbeda, tetapi selalu dengan kemampuan yang sama. Di bawah, sebagai unit penyebaran, memberlakukan batasan runtime tertentu pada kontainernya. Misalnya, semua kontainer dikerahkan pada satu node dan memiliki siklus hidup yang sama. Selain itu, di bawah memungkinkan wadahnya untuk menggunakan volume bersama dan bertukar data melalui jaringan lokal atau menggunakan alat komunikasi antarproses host. Itu sebabnya pengguna menggabungkan wadah ke dalam pod. Pola Sidecar (Trailer), kadang-kadang juga disebut Sidekick (Companion), menjelaskan skenario menambahkan wadah ke bawah untuk memperluas kemampuan wadah lain.

Contoh khas yang menunjukkan pola ini adalah server HTTP dan mekanisme sinkronisasi dengan repositori Git. Kontainer server HTTP memecahkan masalah yang terkait dengan servis file melalui HTTP dan tidak tahu bagaimana dan dari mana file-file ini berasal. Demikian pula, satu-satunya tujuan wadah yang disinkronkan dengan Git adalah untuk menyinkronkan data dalam sistem file lokal dengan data pada server Git. Dia tidak peduli apa yang terjadi pada file setelah sinkronisasi, satu-satunya tugasnya adalah menyinkronkan konten folder lokal dengan konten pada server Git jarak jauh. Listing 15.1 memberikan definisi pod dengan dua wadah ini dikonfigurasi untuk menggunakan volume untuk berbagi file.

Listing 15.1. Implementasi Pola sespan (Trailer)

apiVersion: v1
kind: Pod
metadata:
    name: web-app
spec:
    containers:
    - name: app
      image: docker.io/centos/httpd ❶
      ports:
      - containerPort: 80
      volumeMounts:
      - mountPath: /var/www/html ❸
      name: git
    - name: poll
      image: axeclbr/git ❷
      volumeMounts:
      - mountPath: /var/lib/data ❸
        name: git
      env:
      - name: GIT_REPO
         value: https://github.com/mdn/beginner-html-site-scripted
      command:
      - "sh"
      - "-c"
      - "git clone $(GIT_REPO) . && watch -n 600 git pull"
      workingDir: /var/lib/data
volumes:
- emptyDir: {}
      name: git

(1) Wadah aplikasi utama yang melayani file melalui HTTP.

(2) Wadah bantu (Trailer) yang bekerja secara paralel dan menerima data dari server Git.

(3) Folder bersama untuk bertukar data antara wadah primer dan sekunder.

Contoh ini menunjukkan bagaimana wadah sinkronisasi dengan Git menambahkan konten untuk dilayani oleh server HTTP dan tetap memperbarui. Anda juga dapat mengatakan bahwa kedua wadah bekerja dalam kerja sama yang erat dan sama-sama penting, tetapi pola Sidecar (Trailer) mengasumsikan adanya wadah utama (utama) dan tambahan yang memperluas perilaku kolektif. Biasanya yang utama didaftar pertama dalam daftar kontainer dan mewakili wadah default (yang diluncurkan oleh perintah kubectl exec, misalnya).

Pola sederhana ini, ditunjukkan dalam gambar. 15.1, memastikan kerja sama yang erat antara wadah pada saat runtime dan pada saat yang sama memungkinkan Anda untuk memisahkan tugas yang mungkin dimiliki oleh tim pengembang yang berbeda menggunakan bahasa pemrograman yang berbeda, dengan siklus rilis versi yang berbeda, dll. Ini juga mempromosikan pertukaran dan penggunaan kembali wadah yang berbeda - dalam arti bahwa server HTTP dan mekanisme sinkronisasi Git dapat digunakan kembali dalam aplikasi lain dan dengan pengaturan lain, baik secara independen maupun dalam hubungannya dengan wadah lain.

gambar

Penjelasan


Telah dikatakan di atas bahwa gambar wadah mirip dengan kelas, dan wadah seperti objek dalam pemrograman berorientasi objek (OOP). Melanjutkan analogi ini, kita dapat membandingkan perluasan kemampuan wadah dengan warisan di OOP, dan kerja bersama beberapa wadah di perapian dengan penerimaan komposisi dalam OOP. Kedua pendekatan ini memungkinkan penggunaan kembali kode, tetapi pewarisan mendefinisikan hubungan yang lebih dekat dan mewakili hubungan "apa adanya" antara kontainer.

Komposisi dalam perapian mewakili hubungan "memiliki" - lebih fleksibel, karena tidak memerlukan kombinasi wadah selama perakitan, yang memungkinkan nantinya untuk mengubah wadah dalam definisi perapian. Tetapi komposisi juga menyiratkan adanya beberapa wadah (proses) yang beroperasi secara bersamaan, yang harus diperiksa untuk operabilitas dan restart dan yang mengkonsumsi sumber daya, serta wadah aplikasi utama. Pola Sidecar (Trailer) melibatkan pembuatan wadah bantu kecil yang mengonsumsi sumber daya minimal, tetapi Anda memutuskan apakah akan memulai proses terpisah atau lebih baik menggabungkan semua tugas ke dalam wadah utama.

Dari sudut pandang lain, komposisi wadah mirip dengan pemrograman berorientasi aspek, ketika dengan bantuan kontainer tambahan kemampuan ortogonal (independen) yang tidak terkait dengan wadah utama ditambahkan ke sub. Dalam beberapa bulan terakhir, pola Sidecar semakin populer, terutama untuk manajemen jaringan dan tugas-tugas pemantauan layanan, di mana setiap layanan juga datang dalam bentuk wadah bantu.

»Informasi lebih lanjut tentang buku ini dapat ditemukan di situs web penerbit
» Isi
» Kutipan

Untuk Khabrozhiteley Diskon 25% untuk kupon - Kubernetes

Setelah pembayaran versi kertas buku, sebuah buku elektronik dikirim melalui email.

All Articles