Catatan perev. : Penulis artikel asli adalah ThΓ©o Chamley, seorang Arsitek Google Cloud. Dalam publikasi ini untuk blog Google Cloud, ia menyajikan pemerasan singkat dari panduan yang lebih rinci untuk perusahaannya, yang disebut " Praktik Terbaik untuk Wadah Operasi ." Di dalamnya, para ahli Google mengumpulkan praktik terbaik untuk mengoperasikan wadah dalam konteks menggunakan Google Kubernetes Engine dan tidak hanya menyentuh berbagai topik: dari keamanan hingga pemantauan dan penjurnalan. Jadi, praktik wadah apa yang paling penting bagi Google? The Kubernetes Engine (layanan berbasis Kubernetes untuk menjalankan aplikasi kemas di Google Cloud - sekitar Terjemahan )
The Kubernetes Engine (layanan berbasis Kubernetes untuk menjalankan aplikasi kemas di Google Cloud - sekitar Terjemahan ) adalah salah satu cara terbaik untuk menjalankan beban kerja yang perlu ditingkatkan. 
Kubernetes akan memastikan kelancaran operasi sebagian besar aplikasi jika mereka kemas. Tetapi jika Anda ingin aplikasi mudah dikelola dan ingin memanfaatkan Kubernetes sepenuhnya, Anda harus mengikuti praktik terbaik. Mereka akan menyederhanakan operasi aplikasi, pemantauan dan debuggingnya, serta meningkatkan keamanan.
Pada artikel ini, kita akan melihat daftar apa yang perlu Anda ketahui dan lakukan untuk fungsi kontainer yang efisien di Kubernetes. Mereka yang ingin mempelajari detail harus membaca materi 
Praktik Terbaik untuk Wadah Operasi , serta memperhatikan 
pos perakitan kontainer kami 
sebelumnya .
1. Gunakan mekanisme wadah asli untuk penebangan
Jika aplikasi berjalan di cluster Kubernetes, tidak banyak yang diperlukan untuk log. Sistem logging terpusat mungkin sudah terintegrasi ke dalam cluster yang Anda gunakan. Dalam hal menggunakan Mesin 
Kubernetes , 
Penumpukan Stackdriver bertanggung jawab untuk ini. 
( Catatan : Jika Anda menggunakan instalasi Kubernet Anda sendiri, kami sarankan Anda melihat lebih dekat solusi Open Source kami - loghouse .) Jangan menyulitkan hidup Anda dan menggunakan mekanisme asli untuk mencatat kontainer. Tulis log di stdout dan stderr - mereka akan secara otomatis diterima, disimpan, dan diindeks.
Jika diinginkan, Anda juga dapat menulis log dalam 
format JSON . Pendekatan ini membuatnya mudah untuk menambahkan metadata ke mereka. Dan bersama mereka di Stackdriver Logging akan dapat mencari log menggunakan metadata ini.
2. Pastikan wadah tidak bernegara dan tidak berubah
Agar kontainer berfungsi dengan benar di kluster Kubernetes, kontainer harus stateless dan tidak berubah. Ketika kondisi ini terpenuhi, Kubernetes akan dapat melakukan tugasnya, membuat dan menghancurkan entitas aplikasi kapan dan di mana diperlukan.
Stateless berarti bahwa segala keadaan (data persisten dalam bentuk apa pun) disimpan di luar wadah. Untuk ini, tergantung pada kebutuhan, berbagai jenis penyimpanan eksternal dapat dilibatkan: 
Penyimpanan Cloud , 
Disk Persisten , 
Redis , 
Cloud SQL, atau database terkelola lainnya. 
( Catatan terjemahkan : Baca lebih lanjut tentang ini di artikel kami " Operator untuk Kubernet: Cara Menjalankan Aplikasi Stateful ".)Abadi berarti wadah tidak akan dimodifikasi selama masa pakainya: tidak ada pembaruan, tambalan, perubahan konfigurasi. Jika Anda perlu memperbarui kode aplikasi atau menerapkan tambalan, buat gambar baru dan gunakan. Disarankan untuk memindahkan konfigurasi wadah (port untuk mendengarkan, opsi untuk 
runtime, dll.) 
Ke luar - dalam 
Rahasia dan 
ConfigMaps . Mereka dapat diperbarui tanpa harus membangun gambar wadah baru. Anda dapat menggunakan 
Cloud Build untuk membuat pipa dengan mudah dengan perakitan gambar. 
( Catatan : Kami menggunakan alat open source dapp untuk tujuan ini.) Contoh memperbarui konfigurasi Penerapan di Kubernetes menggunakan ConfigMap yang dipasang di pod sebagai konfigurasi
Contoh memperbarui konfigurasi Penerapan di Kubernetes menggunakan ConfigMap yang dipasang di pod sebagai konfigurasi3. Hindari wadah istimewa
Anda tidak menjalankan aplikasi sebagai root di server Anda, bukan? Jika penyerang membobol aplikasi, ia akan mendapatkan akses root. Pertimbangan yang sama berlaku untuk tidak menjalankan wadah istimewa. Jika Anda ingin mengubah pengaturan pada host, Anda dapat memberikan 
kapabilitas khusus wadah menggunakan opsi 
securityContext di Kubernetes. Jika Anda perlu memodifikasi 
sysctl , Kubernetes memiliki 
anotasi terpisah untuk ini. Secara umum, cobalah untuk memaksimalkan penggunaan 
wadah init dan sespan untuk melakukan operasi istimewa tersebut. Mereka tidak memerlukan aksesibilitas untuk lalu lintas internal atau eksternal.
Jika Anda mengelola sebuah cluster, Anda dapat menggunakan 
Kebijakan Keamanan Pod untuk membatasi penggunaan kontainer yang diistimewakan.
4. Hindari menjalankan sebagai root
Kami telah mengatakan tentang wadah istimewa, tetapi akan lebih baik jika, selain itu, Anda tidak akan menjalankan aplikasi di dalam wadah sebagai root. Jika penyerang menemukan kerentanan jarak jauh dengan kemampuan untuk mengeksekusi kode dalam aplikasi dengan hak akses root, setelah itu ia dapat keluar dari wadah melalui kerentanan yang belum diketahui, ia akan mendapatkan root di host.
Cara terbaik untuk menghindari ini adalah dengan tidak menjalankan apapun sebagai root. Untuk melakukan ini, Anda dapat menggunakan arahan 
USER di 
Dockerfile atau 
runAsUser di Kubernetes. Administrator cluster juga dapat mengonfigurasi penegakan menggunakan 
Kebijakan Keamanan Pod .
5. Buat aplikasi mudah dipantau.
Seperti logging, pemantauan adalah bagian integral dari mengelola aplikasi. Solusi pemantauan populer di komunitas Kubernetes adalah 
Prometheus , sebuah sistem yang secara otomatis mendeteksi polong dan layanan yang membutuhkan pemantauan. 
( Catatan : Lihat juga laporan terperinci kami tentang pemantauan menggunakan Prometheus dan Kubernetes.) Stackdriver dapat memonitor cluster Kubernetes dan menyertakan versi Prometheus untuk aplikasi pemantauan.
 Dashboard Kubernetes di Stackdriver
Dashboard Kubernetes di StackdriverPrometheus mengharapkan aplikasi untuk meneruskan metrik ke titik akhir HTTP. 
Pustaka klien Prometheus tersedia untuk ini. Alat lain seperti 
OpenCensus dan 
Istio menggunakan format yang sama.
6. Jadikan kondisi kesehatan aplikasi tersebut tersedia.
Mengelola aplikasi dalam produksi dibantu oleh kemampuannya untuk melaporkan kondisinya ke seluruh sistem. Apakah aplikasi berjalan? Apakah itu baik-baik saja? Sudah siap menerima lalu lintas? Bagaimana perilakunya? Cara paling umum untuk menyelesaikan masalah ini adalah dengan melakukan 
pemeriksaan kesehatan . Kubernetes memiliki dua jenis: 
probe liveness dan readiness .
Untuk penyelidikan liveness, aplikasi harus memiliki HTTP endpoint yang mengembalikan respons "200 OK" jika berfungsi dan dependensi utamanya terpenuhi. Untuk pemeriksaan kesiapan 
(periksa kesiapan untuk layanan), aplikasi harus memiliki titik akhir HTTP yang berbeda, mengembalikan respons "200 OK" jika aplikasi dalam keadaan sehat, langkah-langkah inisialisasi selesai dan setiap permintaan yang benar tidak menyebabkan kesalahan. Kubernetes hanya akan mengarahkan lalu lintas ke wadah jika aplikasi siap sesuai dengan pemeriksaan ini. Dua titik akhir dapat digabungkan jika tidak ada perbedaan antara semangat dan kesiapan.
Untuk informasi lebih lanjut, lihat artikel terkait oleh Sandeep Dinesh, Advokat Pengembang Google: " 
Praktik terbaik Kubernetes: Menyiapkan pemeriksaan kesehatan dengan penyelidikan kesiapan dan semangat ."
7. Pilih versi gambar dengan cermat
Sebagian besar gambar publik dan pribadi menggunakan sistem penandaan yang mirip dengan yang dijelaskan dalam 
Praktik Terbaik untuk Kontainer Bangunan . Jika gambar menggunakan sistem yang dekat dengan 
versi semantik , Anda harus mempertimbangkan spesifikasi penandaan. Misalnya, tag 
latest seringkali dapat berpindah dari satu gambar ke gambar lainnya - Anda tidak dapat mengandalkannya jika Anda memerlukan rakitan dan pemasangan yang dapat diprediksi dan direproduksi.
Anda dapat menggunakan tag 
XYZ (hampir selalu tidak berubah), tetapi dalam hal ini, perhatikan semua tambalan dan pembaruan pada gambar. Jika gambar Anda memiliki tag 
XY , ini adalah opsi jalan tengah yang baik. Dengan memilihnya, Anda secara otomatis menerima tambalan dan pada saat yang sama mengandalkan versi aplikasi yang stabil.
PS dari penerjemah
Baca juga di blog kami: