7 Amalan Terbaik Bekas Google

Catatan. terjemah: Pengarang artikel asal ialah ThΓ©o Chamley, Arkitek Penyelesaian Awan Google. Dalam siaran untuk blog Google Cloud ini, beliau menyediakan ringkasan panduan syarikatnya yang lebih terperinci, yang dipanggil "Amalan Terbaik untuk Mengendalikan Bekas" Di dalamnya, pakar Google mengumpul amalan terbaik untuk mengendalikan bekas dalam konteks menggunakan Enjin Kubernetes Google dan banyak lagi, menyentuh pelbagai topik: daripada keselamatan kepada pemantauan dan pengelogan. Jadi apakah amalan kontena yang paling penting menurut Google?

7 Amalan Terbaik Bekas Google

Enjin Kubernetes (Perkhidmatan berasaskan Kubernetes untuk menjalankan aplikasi kontena di Google Cloud - lebih kurang terjemahan) ialah salah satu cara terbaik untuk menjalankan beban kerja yang perlu ditingkatkan. Kubernetes akan memastikan kelancaran kebanyakan aplikasi jika ia disimpan dalam bekas. Tetapi jika anda mahu aplikasi anda mudah diurus dan ingin memanfaatkan sepenuhnya Kubernetes, anda perlu mengikuti amalan terbaik. Mereka akan memudahkan pengendalian aplikasi, pemantauan dan penyahpepijatannya, dan juga meningkatkan keselamatan.

Dalam artikel ini, kami akan meneliti senarai perkara yang perlu anda ketahui dan lakukan untuk menjalankan kontena dengan berkesan pada Kubernetes. Mereka yang ingin mendalami butiran harus membaca bahan tersebut Amalan Terbaik untuk Mengendalikan Bekas, dan juga memberi perhatian kepada kami jawatan sebelum ini tentang memasang bekas.

1. Gunakan mekanisme pembalakan kontena asli

Jika aplikasi berjalan pada kluster Kubernetes, tidak banyak yang diperlukan untuk log. Sistem pembalakan berpusat berkemungkinan telah dibina ke dalam kelompok yang anda gunakan. Dalam kes menggunakan Enjin Kubernetes, ini bertanggungjawab Pembalakan Stackdriver. (Catatan. terjemah: Dan jika anda menggunakan pemasangan Kubernetes anda sendiri, kami mengesyorkan agar anda melihat dengan lebih dekat penyelesaian Sumber Terbuka kami - rumah balak.) Pastikan hidup anda mudah dan gunakan mekanisme pembalakan kontena asli. Tulis log ke stdout dan stderr - ia akan diterima secara automatik, disimpan dan diindeks.

Jika mahu, anda juga boleh menulis log ke format JSON. Pendekatan ini akan memudahkan untuk menambah metadata kepada mereka. Dan dengan mereka, Stackdriver Logging akan mempunyai keupayaan untuk mencari melalui log menggunakan metadata ini.

2. Pastikan bekas tidak bernegara dan tidak boleh diubah

Untuk bekas berfungsi dengan betul dalam gugusan Kubernetes, bekas tersebut mestilah tanpa kewarganegaraan dan tidak boleh diubah. Setelah syarat ini dipenuhi, Kubernetes boleh menjalankan tugasnya, mencipta dan memusnahkan entiti aplikasi bila dan di mana diperlukan.

Stateless bermakna mana-mana keadaan (data berterusan apa-apa jenis) disimpan di luar bekas. Untuk ini, bergantung pada keperluan, pelbagai jenis storan luaran boleh digunakan: Penyimpanan Awan, Cakera Berterusan, Redis, Cloud SQL atau pangkalan data terurus lain. (Catatan. terjemah: Baca lebih lanjut mengenai perkara ini dalam artikel kami β€œOperator untuk Kubernetes: cara menjalankan aplikasi stateful".)

Tidak boleh berubah bermakna bekas itu tidak akan diubah suai semasa hayatnya: tiada kemas kini, tampalan, perubahan konfigurasi. Jika anda perlu mengemas kini kod aplikasi anda atau menggunakan tampalan, cipta imej baharu dan gunakannya. Adalah disyorkan untuk mengalihkan konfigurasi kontena (port mendengar, pilihan persekitaran masa jalan, dll.) secara luaran - ke Rahsia ΠΈ ConfigMaps. Mereka boleh dikemas kini tanpa perlu membina imej kontena baharu. Untuk membuat saluran paip dengan pemasangan imej dengan mudah, anda boleh gunakan Binaan Awan. (Catatan. terjemah: Kami menggunakan alat Sumber Terbuka untuk tujuan ini dapp.)

7 Amalan Terbaik Bekas Google
Contoh mengemas kini konfigurasi Deployment dalam Kubernetes menggunakan ConfigMap yang dipasang dalam pod sebagai konfigurasi

3. Elakkan bekas istimewa

Anda tidak menjalankan aplikasi sebagai akar pada pelayan anda, bukan? Jika penyerang masuk ke dalam aplikasi, dia akan mendapat akses root. Pertimbangan yang sama digunakan untuk tidak menjalankan bekas istimewa. Jika anda perlu menukar tetapan pada hos, anda boleh memberikan bekas itu khusus keupayaan menggunakan pilihan securityContext dalam Kubernetes. Jika anda perlu berubah sysctls, Kubernetes telah abstrak berasingan untuk ini. Secara umum, cuba gunakan sepenuhnya di dalamnya- dan bekas kereta sampingan untuk melaksanakan operasi istimewa yang serupa. Mereka tidak perlu boleh diakses oleh trafik dalaman atau luaran.

Jika anda mentadbir kluster, anda boleh menggunakan Dasar Keselamatan Pod untuk sekatan ke atas penggunaan bekas istimewa.

4. Elakkan berjalan sebagai root

Bekas istimewa telah pun dibincangkan, tetapi ia akan menjadi lebih baik jika, sebagai tambahan kepada ini, anda tidak menjalankan aplikasi di dalam bekas sebagai akar. Jika penyerang menemui kelemahan jauh dalam aplikasi dengan hak akar yang membenarkan pelaksanaan kod, selepas itu dia dapat meninggalkan bekas melalui kelemahan yang belum diketahui, dia akan mendapat akar pada hos.

Cara terbaik untuk mengelakkan ini adalah dengan tidak menjalankan apa-apa sebagai root di tempat pertama. Untuk melakukan ini, anda boleh menggunakan arahan USER Π² Dockerfile atau runAsUser dalam Kubernetes. Pentadbir kluster juga boleh mengkonfigurasi tingkah laku penguatkuasaan menggunakan Dasar Keselamatan Pod.

5. Jadikan aplikasi mudah dipantau

Seperti pembalakan, pemantauan adalah bahagian penting dalam pengurusan aplikasi. Penyelesaian pemantauan yang popular dalam komuniti Kubernetes ialah Prometheus - sistem yang secara automatik mengesan pod dan perkhidmatan yang memerlukan pemantauan. (Catatan. terjemah: Lihat juga kami laporan terperinci mengenai topik pemantauan menggunakan Prometheus dan Kubernetes.) Stackdriver mampu memantau kelompok Kubernetes dan termasuk versi Prometheusnya sendiri untuk pemantauan aplikasi.

7 Amalan Terbaik Bekas Google
Papan Pemuka Kubernetes pada Stackdriver

Prometheus menjangkakan aplikasi untuk memajukan metrik ke titik akhir HTTP. Tersedia untuk ini Perpustakaan pelanggan Prometheus. Format yang sama digunakan oleh alat lain seperti OpenCensus ΠΈ Istio.

6. Jadikan status kesihatan apl tersedia

Pengurusan aplikasi dalam pengeluaran dibantu oleh keupayaannya untuk menyampaikan keadaannya kepada keseluruhan sistem. Adakah aplikasi berjalan? Boleh tak? Adakah anda bersedia untuk menerima trafik? Bagaimana dia berkelakuan? Cara paling biasa untuk menyelesaikan masalah ini adalah dengan melaksanakan pemeriksaan kesihatan (pemeriksaan kesihatan). Kubernetes mempunyai dua jenis: keceriaan dan kesediaan kuar.

Untuk siasatan keaktifan (pemeriksaan kecergasan) aplikasi mesti mempunyai titik akhir HTTP yang mengembalikan respons "200 OK" jika ia berfungsi dan kebergantungan asasnya berpuas hati. Untuk siasatan kesediaan (semakan kesediaan perkhidmatan) aplikasi mesti mempunyai titik akhir HTTP lain yang mengembalikan respons "200 OK" jika aplikasi berada dalam keadaan sihat, langkah permulaan telah selesai dan sebarang permintaan yang sah tidak mengakibatkan ralat. Kubernetes hanya akan menghalakan trafik ke kontena jika aplikasi sedia mengikut semakan ini. Dua titik akhir boleh digabungkan jika tiada perbezaan antara keadaan keaktifan dan kesediaan.

Anda boleh membaca lebih lanjut mengenai perkara ini dalam artikel berkaitan daripada Sandeep Dinesh, Peguambela Pembangun daripada Google: β€œAmalan terbaik Kubernetes: Menyediakan pemeriksaan kesihatan dengan probe kesediaan dan keceriaan'.

7. Pilih versi imej anda dengan berhati-hati

Kebanyakan imej awam dan peribadi menggunakan sistem penandaan yang serupa dengan yang diterangkan dalam Amalan Terbaik untuk Membina Bekas. Jika imej menggunakan sistem yang dekat dengan versi semantik, adalah perlu untuk mengambil kira spesifik penandaan. Contohnya, tag latest boleh bergerak dengan kerap dari imej ke imej - tidak boleh dipercayai jika anda memerlukan binaan dan pemasangan yang boleh diramal dan berulang.

Anda boleh menggunakan tag X.Y.Z (mereka hampir selalu tidak berubah), tetapi dalam kes ini, jejaki semua tampalan dan kemas kini pada imej. Jika imej yang anda gunakan mempunyai tag X.Y, ini adalah pilihan yang baik untuk min emas. Dengan memilihnya, anda secara automatik menerima patch dan pada masa yang sama bergantung pada versi aplikasi yang stabil.

PS daripada penterjemah

Baca juga di blog kami:

Sumber: www.habr.com

Tambah komen