Erişim denetleyicilerini doğrulama
Bu makale, bir serinin bir parçasıdır. Genel bakış ile başlayın.
Erişim denetleyicileri nadiren sorunlara neden olur, ancak düzgün işlevselliklerini sağlamak çok önemlidir. Bu makalede, erişim denetleyicilerinin düzgün çalışmadığında diğer bileşenleri nasıl etkileyebileceği açıklanır. Ayrıca, erişim denetleyicisi performansını doğrulamak için kullanabileceğiniz komutları da açıklar.
Erişim denetleyicisi
Erişim denetleyicisi, bir nesnenin kalıcılığından önce ancak isteğin kimliği doğrulandıktan ve yetkilendirildikten sonra Kubernetes API sunucusuna yönelik istekleri kesen bir kod parçasıdır.
Erişim denetleyicileri doğrulayıcı, sessize alma veya her ikisinin birleşimi olabilir. Denetleyicilerin sesini kapatmak , bir isteği kabul etmeden önce ilgili nesneleri değiştirebilir. Denetleyicilerin doğrulanması yalnızca isteklerin önceden tanımlanmış belirli ölçütleri karşıladığından emin olur.
Erişim denetleyicilerinin birincil işlevlerinden biri nesne oluşturma, silme ve değiştirme isteklerini düzenlemektir. Buna ek olarak, erişim denetleyicileri özel fiilleri kısıtlayabilir, örneğin API sunucusu ara sunucusu aracılığıyla bir podla bağlantı isteğinde bulunabilir. Ancak, erişim denetleyicileri , watch
veya list
gibi işlemler de get
dahil olmak üzere nesneleri okuma isteklerini engelleyemez.
Bazı bileşenler, web kancalarını kapatma ve doğrulama gibi erişim denetleyicilerini etkileyebilir. Kubernetes kümenize web kancalarını sessize alıp doğrularken, yüksek kullanılabilirlik sağlamak zorunlu olur. İyi durumda olmayan düğümler API sunucusu isteklerini engellememelidir. API sunucusuna yönelik isteklerin engellenmemesi için erişim denetimi işlem hattını izlemek çok önemlidir. İyi durumda olmayan erişim denetleyicileri, web kancalarının sesini kapatmayı ve doğrulamayı etkileyebilir. İzlemeniz gereken web kancası tabanlı erişim denetleyicileri şunlardır:
Ağ Geçidi Denetleyicisi'ni genişleten Azure Kubernetes Service (AKS) kümeleri için Azure İlkesi eklentisi. Ağ Geçidi Denetleyicisi, Açık İlke Aracısı için bir erişim denetleyicisi web kancasıdır.
Kubernetes kümesinde dinamik erişim denetleyicisi olarak çalışan Kyverno. Kyverno, Kubernetes API sunucusundan erişim web kancası HTTP geri çağrılarını doğrulayıp sessize alır ve kabul ilkelerini zorlayan veya istekleri reddeden sonuçları döndürmek için eşleşen ilkeler uygular. Sorun giderme başvurusu (APIServer başarısız web kancası çağrıları gibi) için Kyverno sorun giderme belgelerine bakın.
Alternatif olarak, düzgün çalışmayan erişim denetleyicileri hizmet kafesleri gibi çeşitli bileşenleri etkileyebilir. Istio ve Linkerd gibi hizmet kafesleri, diğer işlevlerin yanı sıra bir pod içine sepet kapsayıcılarının eklenmesini otomatikleştirmek için erişim denetleyicilerini kullanır. Hizmet ağlarının sorunsuz çalışmasını sağlamak için erişim denetleyicilerinin düzgün çalıştığını değerlendirmek ve doğrulamak önemlidir.
AKS kümeleri için Azure İlkesi eklentisinin durumunu denetleyin
AKS için Azure İlkesi eklentisini yüklerseniz, kümenizdeki Azure İlkesi erişim denetleyicilerinin yüklemesini ve işlevselliğini doğrulamak için aşağıdaki kubectl komutlarını kullanabilirsiniz:
# Verify that Azure Policy pods are running.
kubectl get pod -n gatekeeper-system
# Sample output
...
NAME READY STATUS RESTARTS AGE
gatekeeper-audit-65844778cb-rkflg 1/1 Running 0 163m
gatekeeper-controller-78797d4687-4pf6w 1/1 Running 0 163m
gatekeeper-controller-78797d4687-splzh 1/1 Running 0 163m
...
Gatekeeper-system ad alanında Azure İlkesi aracı podlarının kullanılabilirliğini doğrulamak için önceki komutu çalıştırın. Çıktı beklediğiniz gibi değilse erişim denetleyicisi, API hizmeti veya özel kaynak tanımı (CRD) ile ilgili bir sorun olduğunu gösterebilir.
# Check that all API resources are working correctly. Use the following command to list all API resources.
kubectl api-resources
# Sample output
...
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
...
Önceki komut, tüm API kaynaklarının düzgün çalıştığını doğrulamanıza yardımcı olur. Çıkışın herhangi bir hata veya eksik bileşen olmadan beklenen kaynakları içerdiğinden emin olun. kubectl get pod
AKS için Azure İlkesi eklentisinin durumunu denetlemek ve Kubernetes kümenizdeki erişim denetleyicilerinin işlevselliğini doğrulamak için ve kubectl api-resources
komutlarını kullanın. Kümenizin genel durumunu ve kararlılığını koruyabilmeniz için erişim denetleyicilerinin düzgün çalıştığından emin olmak için düzenli olarak izleyin.
İlke atamalarının kümenize uygulandığını onaylamak için aşağıdaki kubectl get
komutu kullanın:
kubectl get constrainttemplates
Not
İlke atamalarının her kümeyle eşitlenmesi 20 dakika kadar sürebilir.
Çıkışınız aşağıdaki örneğe benzer olmalıdır:
NAME AGE
k8sazureallowedcapabilities 23m
k8sazureallowedusersgroups 23m
k8sazureblockhostnamespace 23m
k8sazurecontainerallowedimages 23m
k8sazurecontainerallowedports 23m
k8sazurecontainerlimits 23m
k8sazurecontainernoprivilege 23m
k8sazurecontainernoprivilegeescalation 23m
k8sazureenforceapparmor 23m
k8sazurehostfilesystem 23m
k8sazurehostnetworkingports 23m
k8sazurereadonlyrootfilesystem 23m
k8sazureserviceallowedports 23m
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
Web kancalarını doğrulama
Web kancalarını doğrulamanın ve sessize alma işleminin Kubernetes kümenizde beklendiği gibi çalıştığından emin olmak için aşağıdaki adımları izleyin.
Kümedeki doğrulayıcı web kancalarını listelemek için aşağıdaki komutu çalıştırın:
kubectl get ValidatingWebhookConfiguration -o wide
Çıkışınız aşağıdaki örneğe benzer olmalıdır:
NAME WEBHOOKS AGE aks-node-validating-webhook 1 249d azure-policy-validating-webhook-configuration 1 249d gatekeeper-validating-webhook-configuration 1 249d
Doğrulama web kancalarının mevcut olduğunu ve yapılandırmalarının beklendiği gibi olduğunu doğrulamak için çıktıyı gözden geçirin. Çıktı, her doğrulayıcı web kancasının adını, web kancalarının sayısını ve her web kancasının yaşını içerir.
Kümedeki sessize alan web kancalarını listelemek için aşağıdaki komutu çalıştırın:
kubectl get MutatingWebhookConfiguration -o wide
Çıkışınız aşağıdaki örneğe benzer olmalıdır:
NAME WEBHOOKS AGE aks-node-mutating-webhook 1 249d azure-policy-mutating-webhook-configuration 1 249d gatekeeper-mutating-webhook-configuration 1 249d
Mutating web kancalarının doğru listelenmiş olduğundan ve yapılandırmalarının istendiği gibi olduğundan emin olmak için çıktıyı denetleyin. Çıktı, her bir sessize alan web kancasının adını, web kancalarının sayısını ve her web kancasının yaşını içerir.
Belirli bir erişim denetleyicisinin belirli ayrıntılarını almak için aşağıdaki komutu çalıştırın:
kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
değerini, ayrıntılarını almak istediğiniz sessize alan web kancasının adıyla değiştirin
<mutating-webhook-name>
. Bu komutun çıktısı, belirtilen mutating web kancası yapılandırmasının YAML gösterimini görüntüler.
Bu bölümdeki komutları çalıştırın ve Kubernetes kümesindeki doğrulayıcı ve sessize alınan web kancalarının beklendiği gibi mevcut ve yapılandırılmış olduğunu onaylayabilmeniz için çıktıyı gözden geçirin. Bu doğrulama, düzgün çalıştığından emin olmak için gereklidir. Web kancalarının kümedeki kaynakları doğrulama ve değiştirme ilkelerine bağlı kalmasını sağlamak için de önemlidir.
Katkıda Bulunanlar
Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.
Asıl yazarlar:
- Paolo Salvatori | Baş Müşteri Mühendisi
Diğer katkıda bulunanlar:
- Francis Simy Nazareth | Üst Düzey Teknik Uzman
Genel olmayan LinkedIn profillerini görmek için LinkedIn'de oturum açın.
İlgili kaynaklar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin