Google'a göre kapsayıcıların kullanımına ilişkin 7 en iyi uygulama

Not. tercüme: Orijinal makalenin yazarı Google Bulut Çözümleri Mimarı Théo Chamley'dir. Google Cloud bloguna yönelik bu yayında, şirketinin "" adlı daha ayrıntılı kılavuzunun bir özetini sunuyor.Konteynerlerin Çalıştırılmasına İlişkin En İyi Uygulamalar" Bu belgede Google uzmanları, Google Kubernetes Engine'in kullanımı ve daha fazlası bağlamında konteynerlerin çalıştırılmasına yönelik en iyi uygulamaları topladı ve güvenlikten izleme ve günlüğe kaydetmeye kadar çok çeşitli konulara değindi. Peki Google'a göre en önemli konteyner uygulamaları nelerdir?

Google'a göre kapsayıcıların kullanımına ilişkin 7 en iyi uygulama

Kubernetes Motoru (Google Cloud'da kapsayıcıya alınmış uygulamaları çalıştırmak için Kubernetes tabanlı hizmet - yaklaşık. tercüme) ölçeklenmesi gereken iş yüklerini çalıştırmanın en iyi yollarından biridir. Kubernetes konteynere alınmışsa çoğu uygulamanın düzgün çalışmasını sağlayacaktır. Ancak uygulamanızın yönetiminin kolay olmasını istiyorsanız ve Kubernetes'in tüm avantajlarından yararlanmak istiyorsanız en iyi uygulamaları takip etmeniz gerekir. Uygulamanın çalışmasını, izlenmesini ve hata ayıklamasını kolaylaştıracak ve ayrıca güvenliği artıracaklar.

Bu makalede, konteynerleri Kubernetes'te etkili bir şekilde çalıştırmak için bilmeniz ve yapmanız gerekenlerin bir listesini inceleyeceğiz. Ayrıntılara daha derinlemesine inmek isteyenler materyali okumalıdır Konteynerlerin Çalıştırılmasına İlişkin En İyi Uygulamalarve ayrıca şu hususlara da dikkat edin: önceki gönderi Konteynerlerin montajı hakkında.

1. Yerel konteyner kayıt mekanizmalarını kullanın

Uygulama bir Kubernetes kümesinde çalışıyorsa günlüklere pek gerek yoktur. Kullandığınız kümede muhtemelen merkezi bir günlük kaydı sistemi yerleşiktir. Kubernetes Engine'in kullanılması durumunda bu sorumludur Stackdriver Günlüğü. (Not. tercüme: Kendi Kubernetes kurulumunuzu kullanıyorsanız Açık Kaynak çözümümüze daha yakından bakmanızı öneririz - tahtaev.) Hayatınızı basit tutun ve yerel konteyner günlük kaydı mekanizmalarını kullanın. Günlükleri stdout ve stderr'e yazın; bunlar otomatik olarak alınacak, kaydedilecek ve dizine eklenecektir.

İstenirse günlükleri de yazabilirsiniz. JSON biçimi. Bu yaklaşım onlara meta veri eklemeyi kolaylaştıracaktır. Ve bunlarla birlikte Stackdriver Logging, bu meta verileri kullanarak günlüklerde arama yapma olanağına sahip olacak.

2. Konteynerlerin durum bilgisi olmayan ve değişmez olduğundan emin olun

Konteynerlerin Kubernetes kümesinde düzgün çalışabilmesi için durum bilgisi olmayan ve değiştirilemez olmaları gerekir. Bu koşullar karşılandığında Kubernetes, gerektiğinde uygulama varlıklarını oluşturup yok ederek işini yapabilir.

Vatansız herhangi bir durumun (her türlü kalıcı verinin) kabın dışında saklandığı anlamına gelir. Bunun için ihtiyaçlara bağlı olarak farklı türde harici depolama kullanılabilir: bulut Depolama, Kalıcı Diskler, Redis, Bulut SQL'i veya diğer yönetilen veritabanları. (Not. tercüme: Bu konuda daha fazlasını makalemizde okuyun “Kubernetes operatörleri: durum bilgisi olan uygulamaların nasıl çalıştırılacağı".)

değişmez kapsayıcının kullanım ömrü boyunca değiştirilmeyeceği anlamına gelir: güncelleme, yama, yapılandırma değişikliği yok. Uygulama kodunuzu güncellemeniz veya yama uygulamanız gerekiyorsa yeni bir görüntü oluşturun ve dağıtın. Konteyner konfigürasyonunun (dinleme bağlantı noktası, çalışma zamanı ortamı seçenekleri vb.) harici olarak taşınması önerilir. sırları и Yapılandırma Haritaları. Yeni bir kapsayıcı görüntüsü oluşturmaya gerek kalmadan güncellenebilirler. Görüntü birleştirmeyle kolayca işlem hatları oluşturmak için şunları kullanabilirsiniz: Bulut Oluşturma. (Not. tercüme: Bu amaçlar için Açık Kaynak aracı kullanıyoruz Dapp.)

Google'a göre kapsayıcıların kullanımına ilişkin 7 en iyi uygulama
Kubernetes'teki Dağıtım yapılandırmasını, bölmelere yapılandırma olarak monte edilmiş ConfigMap kullanarak güncelleme örneği

3. Ayrıcalıklı kapsayıcılardan kaçının

Sunucularınızda uygulamaları root olarak çalıştırmıyorsunuz değil mi? Bir saldırgan uygulamaya girerse root erişimi elde edecektir. Aynı hususlar ayrıcalıklı kapsayıcıların çalıştırılmaması için de geçerlidir. Ana bilgisayardaki ayarları değiştirmeniz gerekiyorsa, kapsayıcıya özel ayarlar verebilirsiniz. yetenekleri seçeneği kullanarak securityContext Kubernetes'te. Değiştirmeniz gerekiyorsa sistemler, Kubernetes'in sahip olduğu ayrı özet bunun için. Genel olarak en iyi şekilde yararlanmaya çalışın içinde- ve benzer ayrıcalıklı işlemleri gerçekleştirmek için sepet konteynerleri. Dahili veya harici trafiğe açık olmaları gerekmez.

Bir kümeyi yönetiyorsanız şunları kullanabilirsiniz: Pod Güvenlik Politikası ayrıcalıklı kapsayıcıların kullanımına ilişkin kısıtlamalar için.

4. Root olarak çalıştırmaktan kaçının

Ayrıcalıklı kapsayıcılar zaten tartışılmıştı, ancak buna ek olarak kapsayıcının içindeki uygulamaları kök olarak çalıştırmazsanız daha da iyi olacaktır. Bir saldırgan, kök haklarına sahip bir uygulamada kod yürütülmesine izin veren uzak bir güvenlik açığı bulursa ve ardından henüz bilinmeyen bir güvenlik açığından kapsayıcıyı terk edebilirse, ana makinede kök sahibi olacaktır.

Bundan kaçınmanın en iyi yolu, ilk etapta hiçbir şeyi root olarak çalıştırmamaktır. Bunu yapmak için yönergeyi kullanabilirsiniz. USER в Dockerfile veya runAsUser Kubernetes'te. Küme yöneticisi ayrıca aşağıdakileri kullanarak zorlama davranışını da yapılandırabilir: Pod Güvenlik Politikası.

5. Uygulamanın izlenmesini kolaylaştırın

Günlüğe kaydetme gibi izleme de uygulama yönetiminin ayrılmaz bir parçasıdır. Kubernetes topluluğunda popüler bir izleme çözümü Prometheus - izleme gerektiren bölmeleri ve hizmetleri otomatik olarak algılayan bir sistem. (Not. tercüme: Ayrıca bkz. detaylı rapor Prometheus ve Kubernetes kullanarak izleme konusunda.) Yığın sürücüsü Kubernetes kümelerini izleme yeteneğine sahiptir ve uygulama izleme için kendi Prometheus sürümünü içerir.

Google'a göre kapsayıcıların kullanımına ilişkin 7 en iyi uygulama
Stackdriver'da Kubernetes Kontrol Paneli

Prometheus, uygulamanın metrikleri HTTP uç noktasına iletmesini bekliyor. Bunun için mevcut Prometheus istemci kitaplıkları. Aynı format, aşağıdaki gibi diğer araçlar tarafından da kullanılır: Açık Nüfus Sayımı и Istio.

6. Uygulamanın sağlık durumunu kullanılabilir hale getirin

Üretimdeki uygulama yönetimi, durumunu tüm sisteme iletme yeteneğiyle desteklenir. Uygulama çalışıyor mu? Tamam mı? Trafik almaya hazır mısınız? Nasıl davranıyor? Bu sorunu çözmenin en yaygın yolu sağlık kontrollerini uygulamaktır. (Sağlık kontrolleri). Kubernetes'in iki türü vardır: canlılık ve hazırlık araştırmaları.

Canlılık araştırması için (canlılık kontrolleri) Uygulama, işlevselse ve temel bağımlılıkları karşılanıyorsa "200 OK" yanıtı döndüren bir HTTP uç noktasına sahip olmalıdır. Hazırlık probu için (hizmete hazırlık kontrolleri) uygulamanın sağlıklı durumda olması, başlatma adımlarının tamamlanmış olması ve geçerli herhangi bir isteğin hatayla sonuçlanmaması durumunda uygulamanın "200 OK" yanıtı döndüren başka bir HTTP uç noktasına sahip olması gerekir. Kubernetes, trafiği yalnızca bu kontrollere göre uygulamanın hazır olması durumunda konteynere yönlendirecektir. Canlılık ve hazır olma durumları arasında fark yoksa iki uç nokta birleştirilebilir.

Bu konuda daha fazla bilgiyi Google Geliştirici Avukatı Sandeep Dinesh'in ilgili makalesinde okuyabilirsiniz: “Kubernetes'in en iyi uygulamaları: Hazırlık ve canlılık araştırmalarıyla durum denetimlerini ayarlama'.

7. Görsel sürümünüzü dikkatlice seçin

Genel ve özel görsellerin çoğu, burada açıklanana benzer bir etiketleme sistemi kullanır. Konteyner Oluşturmak için En İyi Uygulamalar. Görüntü buna yakın bir sistem kullanıyorsa anlamsal versiyonlamaetiketlemenin özelliklerini dikkate almak gerekir. Örneğin, etiket latest sık sık görüntüden görüntüye geçebilir; öngörülebilir ve tekrarlanabilir yapılara ve kurulumlara ihtiyacınız varsa buna güvenemezsiniz.

Etiketini kullanabilirsiniz X.Y.Z (neredeyse her zaman değişmezler), ancak bu durumda görüntüdeki tüm yamaları ve güncellemeleri takip edin. Kullandığınız görselin etiketi varsa X.Y, bu altın ortalama için iyi bir seçenektir. Bunu seçtiğinizde yamaları otomatik olarak alırsınız ve aynı zamanda uygulamanın kararlı sürümüne güvenirsiniz.

çevirmenden PS

Blogumuzda da okuyun:

Kaynak: habr.com

Yorum ekle