Azure Kubernetes Service (AKS) uygulamaları için ağ kavramları

Uygulama geliştirme için kapsayıcı tabanlı mikro hizmetler yaklaşımında, uygulama bileşenleri görevlerini gerçekleştirmek için birlikte çalışır. Kubernetes bu işbirliğini sağlayan çeşitli kaynaklar sağlar:

  • Uygulamalara şirket içinde veya harici olarak bağlanarak bunları ortaya çıkarabilirsiniz.
  • Uygulamalarınızı yük dengeleme ile yüksek oranda kullanılabilir uygulamalar derlemeniz gerekir.
  • Daha karmaşık uygulamalarınız için ssl/TLS sonlandırma veya birden çok bileşenin yönlendirmesi için giriş trafiğini yapılandırabilirsiniz.
  • Güvenlik nedeniyle, podlar ve düğümler arasında veya bu düğümler arasında ağ trafiği akışını kısıtabilirsiniz.

Bu makalede AKS'de uygulamalarınıza ağ iletişimi sağlayan temel kavramlar tanıtmaktadır:

Kubernetes hakkında temel bilgiler

Kubernetes, uygulamalarınıza veya uygulama bileşenleri arasında erişime izin vermek için sanal ağ için bir soyutlama katmanı sağlar. Kubernetes düğümleri sanal ağa bağlanır ve podlar için gelen ve giden bağlantı sağlar. Kube-proxy bileşeni, bu ağ özelliklerini sağlamak için her düğümde çalışır.

Kubernetes'te:

  • Hizmetler, bir IP adresi veya DNS adı aracılığıyla belirli bir bağlantı noktasına doğrudan erişime izin vermek için podları mantıksal olarak gruplar.
  • Bir yük dengeleyici kullanarak trafiği dağıtarak.
  • Giriş Denetleyicileri ile uygulama trafiğinin daha karmaşık yönlendirmesi de sağlanmıştır.
  • Kubernetes ağ ilkeleriyle podlar için ağ trafiğinin güvenlik ve filtrelemesi mümkündür.

Azure platformu AKS kümeleri için sanal ağı da basitleştiriyor. Bir Kubernetes yük dengeleyici oluşturdukta, temel alınan Azure yük dengeleyici kaynağını da oluşturabilir ve yapılandırabilirsiniz. Podlara ağ bağlantı noktalarını açtıklarında ilgili Azure ağ güvenlik grubu kuralları yapılandırılır. HTTP uygulama yönlendirmesi için Azure, yeni giriş yolları yapılandırıldığından dış DNS'yi de yapılandırabilirsiniz.

Hizmetler

Kubernetes, uygulama iş yüklerinin ağ yapılandırmasını basitleştirmek için Hizmetleri kullanarak pod kümelerini mantıksal olarak gruplar ve ağ bağlantısı sağlar. Aşağıdaki Hizmet türleri kullanılabilir:

  • Küme IP'i

    AKS kümesi içinde kullanmak üzere bir iç IP adresi oluşturur. Küme içindeki diğer iş yüklerini destekleyen yalnızca dahili uygulamalar için uygundur.

    AKS kümesinde Küme IP trafiği akışını gösteren diyagram

  • NodePort

    Temel alınan düğümde, uygulamaya düğüm IP adresi ve bağlantı noktasıyla doğrudan erişilebilen bir bağlantı noktası eşlemesi oluşturur.

    AKS kümesinde NodePort trafik akışını gösteren diyagram

  • LoadBalancer

    Bir Azure yük dengeleyici kaynağı oluşturur, dış IP adresini yapılandırarak ve istenen podları yük dengeleyici arka uç havuzuna bağlar. Müşterilerin trafiğin uygulamaya ulaşacak olmasına izin vermek için, istenen bağlantı noktalarında yük dengeleme kuralları oluşturulur.

    AKS kümesinde Load Balancer akışını gösteren diyagram

    Gelen trafiğin ek denetimi ve yönlendirmesi için bunun yerine bir Giriş denetleyicisi kullanabilirsiniz.

  • ExternalName

    Daha kolay uygulama erişimi için belirli bir DNS girişi oluşturur.

Yük dengeciler ve hizmetler IP adresi dinamik olarak atanabilir veya var olan bir statik IP adresi belirtebilirsiniz. Hem iç hem de dış statik IP adresleri atabilirsiniz. Mevcut statik IP adresleri genellikle bir DNS girdisi ile bağlanır.

hem iç hem de dış yük dengeciler oluşturabilirsiniz. İç yük dengecilere yalnızca bir özel IP adresi atanır, bu nedenle İnternet'den erişilemez.

Azure sanal ağları

AKS'de aşağıdaki iki ağ modelinden birini kullanan bir küme dağıtabilirsiniz:

  • Kubenet ağı

    Ağ kaynakları genellikle AKS kümesi dağıtılırken oluşturulur ve yapılandırılır.

  • Azure Container Networking Interface (CNI) ağı

    AKS kümesi, var olan sanal ağ kaynaklarına ve yapılandırmalarına bağlanır.

Kubenet (temel) ağı

Kubenet ağ seçeneği, AKS kümesi oluşturma için varsayılan yapılandırmadır. kubenet ile:

  1. Düğümler, Azure sanal ağ alt ağına bir IP adresi alır.
  2. Podlar, düğümlerin Azure sanal ağ alt ağına göre mantıksal olarak farklı bir adres alanı üzerinden bir IP adresi alır.
  3. Ardından podların Azure sanal ağındaki kaynaklara erişebilmesi için ağ adresi çevirisi (NAT) yapılandırması gerçekleştirilir.
  4. Trafiğin kaynak IP adresi, düğümün birincil IP adresine çevrilir.

Düğümler kubenet Kubernetes eklentisini kullanır. Seçenekleriniz şunlardır:

  • Azure platformunun sizin için sanal ağları oluşturmasına ve yapılandırmasına izin verme veya
  • AKS kümenizi mevcut bir sanal ağ alt ağına dağıtmayı seçin.

Yalnızca düğümler yönlendirilebilir bir IP adresi alır. Podlar, AKS kümesi dışındaki diğer kaynaklarla iletişim kurmak için NAT kullanır. Bu yaklaşım, podların kullanabileceği ağ alanınıza bölmeniz gereken IP adresi sayısını azaltır.

Daha fazla bilgi için bkz. AKS kümesi için kubenet asını yapılandırma.

Azure CNI (gelişmiş) ağ oluşturma

Azure CNI seçeneğinde her pod, alt ağdan doğrudan erişilebilen bir IP adresi alır. Bu IP adreslerinin önceden planlandığı ve ağ alanınız genelinde benzersiz olması gerekir. Her düğümün desteklediği en fazla pod sayısı için bir yapılandırma parametresi vardır. Düğüm başına eşdeğer SAYıDA IP adresi daha sonra önden ayrılmıştır. Planlama olmadan, bu yaklaşım IP adresi tükenmesi veya uygulama talebi artarak kümeleri daha büyük bir alt ağda yeniden oluşturma ihtiyacıyla sonuç verir.

Kubenet'in aksine, aynı sanal ağ üzerinde uç noktalara gelen trafik düğümün birincil IP'sinde NAT değildir. Sanal ağ içindeki trafiğin kaynak adresi pod IP'dir. Sanal ağın dışında olan trafik hala düğümün birincil IP'sini ağına alar.

Düğümler, Azure CNI Kubernetes eklentisini kullanır.

Her biri tek bir Azure VNet'e bağlanan köprülere sahip iki düğümü gösteren diyagram

Daha fazla bilgi için bkz. AKS Azure CNI için yapılandırma.

Ağ modellerini karşılaştırma

Hem kubenet hem de Azure CNI AKS kümeleriniz için ağ bağlantısı sağlar. Ancak, her biri için avantajlar ve dezavantajlar vardır. Üst düzeyde aşağıdaki noktalar geçerlidir:

  • kubenet
    • IP adresi alanı tasarrufu sağlar.
    • Kümenin dışından podlara ulaşmak için Kubernetes iç veya dış yük dengeleyiciyi kullanır.
    • Kullanıcı tanımlı yolları (UDR) el ile yönetir ve sürdürürsiniz.
    • Küme başına en fazla 400 düğüm.
  • Azure CNI
    • Podlar tam sanal ağ bağlantısına sahip olur ve bağlı ağlardan özel IP adresleri aracılığıyla doğrudan ulaşabilirsiniz.
    • Daha fazla IP adresi alanı gerektirir.

Kubenet ile kubenet arasındaki davranış farkları Azure CNI:

Özellik Kubenet Azure CNI
Kümeyi mevcut veya yeni sanal ağa dağıtma Desteklenen - UDR'ler el ile uygulandı Desteklenir
Pod-pod bağlantısı Desteklenir Desteklenir
Pod-VM bağlantısı; Aynı sanal ağ üzerinde VM Pod tarafından başlatıldığı zaman çalışır her iki şekilde de çalışır
Pod-VM bağlantısı; Eşli sanal ağ üzerinde VM Pod tarafından başlatıldığı zaman çalışır her iki şekilde de çalışır
VPN veya Express Route kullanarak şirket içi erişim Pod tarafından başlatıldığı zaman çalışır her iki şekilde de çalışır
Hizmet uç noktaları tarafından güvenliği sağlanacak kaynaklara erişim Desteklenir Desteklenir
Yük dengeleyici hizmeti, sanal ağ veya giriş denetleyicisi kullanarak Kubernetes App Gateway ortaya çıkarma Desteklenir Desteklenir
Varsayılan Azure DNS ve Özel Bölgeler Desteklenir Desteklenir
Düğüm havuzlarını Windows desteği Desteklenmiyor Desteklenir

DNS ile ilgili olarak, hem kubenet hem de Azure CNI eklentileriyle DNS, AKS'de kendi otomatik olarak çalışan bir dağıtım olan CoreDNS tarafından sunulur. Kubernetes'te CoreDNS hakkında daha fazla bilgi için bkz. DNS Hizmetini Özelleştirme. CoreDNS varsayılan olarak bilinmeyen etki alanlarını AKS kümesine dağıtılmış olan Azure Sanal Ağı'nın DNS işlevselliğine iletacak şekilde yapılandırılmıştır. Bu nedenle Azure DNS ve Özel Bölgeler AKS'de çalışan podlar için çalışır.

Ağ modelleri arasında destek kapsamı

Hangi ağ modelini kullanırsanız kullanın, hem kubenet hem Azure CNI aşağıdaki yöntemlerden birini kullanarak dağıtılabilir:

  • Azure platformu, AKS kümesi oluşturma sırasında sanal ağ kaynaklarını otomatik olarak oluşturabilir ve yapılandırabilirsiniz.
  • Aks kümenizi ekleyebilirsiniz. Sanal ağ kaynaklarını el ile oluşturabilir, yapılandırabilirsiniz ve bu kaynaklara ekleyebilirsiniz.

Hizmet uç noktaları veya UDR'ler gibi özellikler hem kubenet hem de Azure CNI destekle desteklese de AKS için destek ilkeleri hangi değişiklikleri yapabilirsiniz? Örnek:

  • Aks kümesi için sanal ağ kaynaklarını el ile oluşturmanız, kendi UDR'lerinizi veya hizmet uç noktalarınızı yapılandırmanız için destek sağlar.
  • Azure platformu AKS kümeniz için sanal ağ kaynaklarını otomatik olarak oluşturursa, kendi UDR'lerinizi veya hizmet uç noktalarınızı yapılandırmak için AKS tarafından yönetilen bu kaynakları el ile değiştiremezsiniz.

Giriş denetleyicileri

LoadBalancer türünde bir Hizmet oluşturmanın yanı sıra temel alınan bir Azure yük dengeleyici kaynağı da oluşturabilirsiniz. Yük dengeleyici, belirli bir bağlantı noktası üzerindeki Hizmetinizin podlarına trafiği dağıtacak şekilde yapılandırılır.

LoadBalancer yalnızca 4. katmanda çalışır. 4. katmanda Hizmet, gerçek uygulamaları fark etmemektedir ve yönlendirmeyle ilgili daha fazla dikkat edilmesi gereken noktalara yer verecektir.

Giriş denetleyicileri 7. katmanda çalışır ve uygulama trafiğini dağıtmak için daha akıllı kurallar kullanabilir. Giriş denetleyicileri genellikle HTTP trafiğini gelen URL'ye göre farklı uygulamalara yönlendirer.

AKS kümesinde giriş trafiği akışını gösteren diyagram

Giriş kaynağı oluşturma

AKS'de NGINX, benzer bir araç veya AKS HTTP uygulama yönlendirme özelliğini kullanarak bir Giriş kaynağı oluşturabilirsiniz. AKS kümesi için HTTP uygulama yönlendirmeyi etkinleştiren Azure platformu, Giriş denetleyicisini ve External-DNS denetleyicisini oluşturur. Kubernetes'te yeni Giriş kaynakları oluşturulduktan sonra, gerekli DNS A kayıtları kümeye özgü bir DNS bölgesinde oluşturulur.

Daha fazla bilgi için bkz. HTTP uygulama yönlendirmesini dağıtma.

Application Gateway Denetleyicisi (AGIC)

Application Gateway Giriş Denetleyicisi (AGIC) eklentisinde AKS müşterileri bulut yazılımlarını İnternet'te sunmak için Azure'ın yerel Application Gateway düzey 7 yük dengeleyiciden faydalanmaktadır. AGIC, konak Kubernetes kümelerini izler ve seçilen Application Gateway İnternet'te ortaya çıkararak sürekli olarak bir kümeyi günceller.

AKS için AGIC eklenti hakkında daha fazla bilgi edinmek için bkz. Application Gateway Denetleyicisi nedir?.

SSL/TLS sonlandırma

SSL/TLS sonlandırması, Giriş'in bir diğer yaygın özelliğidir. HTTPS üzerinden erişilen büyük web uygulamalarında Giriş kaynağı, uygulamanın kendi içinde değil TLS sonlandırmayı işler. Otomatik TLS sertifikasyon oluşturma ve yapılandırma sağlamak için, Giriş kaynağını "Let's Encrypt" gibi sağlayıcıları kullanmak üzere yapılandırabilirsiniz.

Let's Encrypt ile NGINX Giriş denetleyicisi yapılandırma hakkında daha fazla bilgi için bkz. Giriş ve TLS.

İstemci kaynağı IP koruması

Aks kümenizin kapsayıcılara yapılan isteklerde istemci kaynak IP'sini korumak için giriş denetleyicinizi yapılandırma. Giriş denetleyiciniz bir istemcinin isteğini AKS kümeniz içinde bir kapsayıcıya yönlendirse, bu isteğin özgün kaynak IP'si hedef kapsayıcı için kullanılamaz. İstemci kaynak IP'sini korumayı etkinleştirebilirsiniz. İstemcinin kaynak IP'sini, X-Forwarded-For altındaki istek üst bilgisinde kullanılabilir.

Giriş denetleyiciniz üzerinde istemci kaynağı IP koruması kullanıyorsanız TLS geçişini kullanamayın. İstemci kaynağı IP koruması ve TLS geçişi, LoadBalancer türü gibi diğer hizmetlerle kullanılabilir.

Ağ güvenlik grupları

Ağ güvenlik grubu, AKS düğümleri gibi VM'ler için trafiği filtreler. Siz LoadBalancer gibi Hizmetler oluşturdukken, Azure platformu gerekli ağ güvenlik grubu kurallarını otomatik olarak yapılandırıyor.

AKS kümesinde podların trafiğini filtrelemek için ağ güvenlik grubu kurallarını el ile yapılandırmanız gerekmez. Kubernetes Service bildirimlerinizin bir parçası olarak gerekli bağlantı noktalarını ve iletmeyi tanımlamanız gerekir. Azure platformunun uygun kuralları oluşturmasına veya güncelleştirmesine izin verme.

Podlara trafik filtresi kurallarını otomatik olarak uygulamak için ağ ilkelerini de kullanabilirsiniz.

Ağ ilkeleri

Varsayılan olarak AKS kümesinde yer alan tüm podlar sınırlama olmadan trafik göndererek alır. Gelişmiş güvenlik için trafik akışını kontrol altına alan kurallar tanımlayın, örneğin:

  • Arka uç uygulamaları yalnızca gerekli ön uç hizmetleri için kullanılır.
  • Veritabanı bileşenlerine yalnızca onlara bağlanan uygulama katmanları tarafından erişilebilir.

Ağ ilkesi, AKS'de bulunan ve podlar arasındaki trafik akışını denetlemenizi sağlayan bir Kubernetes özelliğidir. Atanan etiketler, ad alanı veya trafik bağlantı noktası gibi ayarlara göre pod'a gelen trafiğe izin verir veya trafiği reddedersiniz. AKS düğümleri için ağ güvenlik grupları daha iyi olsa da, podlar için trafik akışını denetlemenin buluta özel bir yolu ağ ilkeleridir. Aks kümesinde podlar dinamik olarak oluşturulduğu için gerekli ağ ilkeleri otomatik olarak uygulanabilir.

Daha fazla bilgi için bkz. Azure Kubernetes Service (AKS) içinde ağ ilkelerini kullanarak podlar arasında trafiğin güvenliğini sağlama.

Sonraki adımlar

AKS ağı ile çalışmaya başlamanız için kubenet veya Azure CNI kullanarak kendi IP adresi aralıklarınızı kullanarak bir AKS kümesi oluşturun ve Azure CNI.

İlişkili en iyi yöntemler için bkz. AKS'de ağ bağlantısı ve güvenlik için en iyi yöntemler.

Temel Kubernetes ve AKS kavramları hakkında daha fazla bilgi için aşağıdaki makalelere bakın: