Exposing Services in Kubernetes
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın: GCP Hacking'i öğrenin ve pratik yapın:
Kubernetes'te hizmetleri açığa çıkarmanın farklı yolları vardır, böylece hem iç uç noktalar hem de dış uç noktalar bunlara erişebilir. Bu Kubernetes yapılandırması oldukça kritik olup, yönetici saldırganlara erişmemeleri gereken hizmetlere erişim verebilir.
K8s'in hizmetleri halka açma yollarını saymaya başlamadan önce, eğer ad alanlarını, hizmetleri ve girişleri listeleyebiliyorsanız, halka açık olan her şeyi bulabileceğinizi bilin:
Bir ClusterIP servisi, varsayılan Kubernetes servisidir. Bu, kümeniz içindeki diğer uygulamaların erişebileceği bir hizmet sağlar. Dış erişim yoktur.
Ancak, bu Kubernetes Proxy kullanılarak erişilebilir:
Artık bu şemayı kullanarak Kubernetes API'si aracılığıyla hizmetlere erişebilirsiniz:
http://localhost:8080/api/v1/proxy/namespaces/<NAMESPACE>/services/<SERVICE-NAME>:<PORT-NAME>/
Örneğin, aşağıdaki URL'yi kullanabilirsiniz:
http://localhost:8080/api/v1/proxy/namespaces/default/services/my-internal-service:http/
bu hizmete erişmek için:
This method requires you to run kubectl
as an authenticated user.
Tüm ClusterIP'leri listeleyin:
NodePort kullanıldığında, tüm Düğümlerde (Sanal Makineleri temsil eden) belirlenmiş bir port kullanılabilir hale gelir. Bu belirli porta yönlendirilen trafik, sistematik olarak servise yönlendirilir. Genellikle, bu yöntem dezavantajları nedeniyle önerilmez.
Tüm NodePort'ları listele:
NodePort spesifikasyonuna bir örnek:
Eğer yaml'da nodePort belirtmezseniz (açılacak port), 30000–32767 aralığında bir port kullanılacaktır.
Açık her servis için bir LoadBalancer için ödeme yapmanız gerekir, bu da pahalı olabilir.
Tüm LoadBalancers'ı listeleyin:
Dış IP'ler, Load Balancer türündeki hizmetler tarafından açığa çıkarılır ve genellikle bir dış Bulut Sağlayıcı Load Balancer kullanıldığında kullanılır.
Onları bulmak için, EXTERNAL-IP
alanında değerleri olan yük dengeleyicilere bakın.
Küme içine dış IP ile ( hedef IP olarak) gelen trafik, Hizmet portunda, Hizmet uç noktalarından birine yönlendirilecektir. externalIPs
, Kubernetes tarafından yönetilmez ve küme yöneticisinin sorumluluğundadır.
Hizmet spesifikasyonunda, externalIPs
, herhangi bir ServiceTypes
ile birlikte belirtilebilir. Aşağıdaki örnekte, "my-service
" istemciler tarafından "80.11.12.10:80
" (externalIP:port
) üzerinden erişilebilir.
Bu Servis tanımı, örneğin, prod
ad alanındaki my-service
Servisini my.database.example.com
adresine eşler:
my-service.prod.svc.cluster.local
ana bilgisayarını ararken, küme DNS Servisi my.database.example.com
değeriyle bir CNAME
kaydı döndürür. my-service
'e erişim, diğer Servislerde olduğu gibi çalışır, ancak yönlendirme DNS seviyesinde gerçekleşir, proxy veya yönlendirme yoluyla değil.
Tüm ExternalNames'leri listele:
Yukarıdaki tüm örneklerden farklı olarak, Ingress bir hizmet türü DEĞİLDİR. Bunun yerine, birden fazla hizmetin önünde yer alır ve “akıllı bir yönlendirici” veya kümenize giriş noktası olarak işlev görür.
Ingress ile birçok farklı şey yapabilirsiniz ve farklı yeteneklere sahip birçok Ingress kontrolörü vardır.
Tüm girişleri listele:
Bu durumda, her birinin bilgilerini tek tek almak daha iyidir, böylece daha iyi okuyabilirsiniz:
Servisi harici olarak bir bulut sağlayıcısının yük dengeleyicisini kullanarak açar. GKE'de, bu, servisinize tüm trafiği yönlendirecek tek bir IP adresi sağlayan bir başlatacaktır. AWS'de bir Yük Dengeleyici başlatacaktır.
ExternalName türündeki Servisler bir Servisi bir DNS adına eşler, my-service
veya cassandra
gibi tipik bir seçiciye değil. Bu Servisleri spec.externalName
parametresi ile belirtirsiniz.
Varsayılan GKE ingress kontrolörü sizin için bir oluşturacaktır. Bu, hem yol tabanlı hem de alt alan tabanlı yönlendirme yapmanıza olanak tanır. Örneğin, foo.yourdomain.com üzerindeki her şeyi foo hizmetine, yourdomain.com/bar/ yolundaki her şeyi ise bar hizmetine gönderebilirsiniz.
GKE'deki bir Ingress nesnesi için ile YAML şu şekilde görünebilir:
AWS Hacking'i öğrenin ve pratik yapın: GCP Hacking'i öğrenin ve pratik yapın:
kontrol edin!
💬 veya katılın ya da Twitter'da 🐦 'i takip edin.**
Hacking ipuçlarını paylaşmak için ve github reposuna PR gönderin.