Azure Kubernetes Service (AKS) içindeki küme düğümleri için çıkış trafiğini denetleme
Bu makalede, Azure Kubernetes hizmetinden (AKS) giden trafiği güvenli hale getirmeye olanak tanıyan gerekli ayrıntılar sağlanmaktadır. Temel AKS dağıtımı için küme gereksinimlerini ve isteğe bağlı eklentiler ve özellikler için ek gereksinimleri içerir. Azure Güvenlik Duvarı ile bu gereksinimlerin nasıl yapılandırılacağı hakkında daha fazla bir örneksunulacaktır. Bununla birlikte, bu bilgileri herhangi bir giden kısıtlama yöntemine veya gerecine uygulayabilirsiniz.
Arka Plan
AKS kümeleri bir sanal ağa dağıtılır. Bu ağ yönetilebilecek (AKS tarafından oluşturulan) veya özel (önceden Kullanıcı tarafından önceden yapılandırılmış). Her iki durumda da, kümenin söz konusu sanal ağın dışındaki hizmetlerde giden bağımlılıkları vardır (hizmetin gelen bağımlılığı yoktur).
Yönetim ve operasyonel amaçlar için, bir AKS kümesindeki düğümlerin belirli bağlantı noktalarına ve tam etki alanı adlarına (FQDN) erişmesi gerekir. Bu uç noktalar, düğümlerin API sunucusuyla iletişim kurması veya temel Kubernetes küme bileşenlerini ve düğüm güvenliği güncelleştirmelerini indirip yüklemesi için gereklidir. Örneğin, kümenin temel sistem kapsayıcısı görüntülerini Microsoft Container Registry (MCR) çekmesini gerektirir.
AKS giden bağımlılıkları, bunların arkasında statik adresler bulunmayan FQDN 'Ler ile neredeyse tamamen tanımlıdır. Statik adreslerin olmaması, ağ güvenlik gruplarının bir AKS kümesinden giden trafiği kilitlemek için kullanılamayacağı anlamına gelir.
Varsayılan olarak, AKS kümelerinde sınırsız giden (çıkış) internet erişimi vardır. Bu ağ erişimi düzeyi, çalıştırdığınız düğüm ve hizmetlere, gerektiğinde dış kaynaklara erişmek için izin verir. Çıkış trafiğini kısıtlamak istiyorsanız, sağlıklı küme bakım görevlerini sürdürmek için sınırlı sayıda bağlantı noktasına ve adrese erişilebilir olması gerekir. Giden adreslerin güvenliğini sağlamaya yönelik en basit çözüm, etki alanı adlarına göre giden trafiği denetleyesağlayan bir güvenlik duvarı cihazının kullanılmasına yol açabilir. Örneğin, Azure Güvenlik Duvarı, giden HTTP ve HTTPS trafiğini hedefin FQDN 'sine göre kısıtlayabilir. Ayrıca tercih ettiğiniz güvenlik duvarı ve güvenlik kurallarınızı, bu gerekli bağlantı noktalarına ve adreslere izin verecek şekilde yapılandırabilirsiniz.
Önemli
Bu belge, yalnızca AKS alt ağını bırakarak trafiğin nasıl kilitleneceği hakkında ele alınmaktadır. AKS 'ler varsayılan olarak giriş gereksinimlerine sahip değildir. Ağ güvenlik grupları (NSG 'ler) ve güvenlik duvarları kullanılarak iç alt ağ trafiğinin engellenmesi desteklenmez. Küme içindeki trafiği denetlemek ve engellemek için ağ ilkelerinikullanın.
AKS kümeleri için gerekli giden ağ kuralları ve FQDN 'Ler
Aşağıdaki ağ ve FQDN/uygulama kuralları bir AKS kümesi için gereklidir, Azure Güvenlik Duvarı dışında bir çözüm yapılandırmak istiyorsanız bunları kullanabilirsiniz.
- IP adresi bağımlılıkları HTTP/sn olmayan trafiğe yöneliktir (TCP ve UDP trafiği)
- FQDN HTTP/HTTPS uç noktaları, güvenlik duvarı cihazınıza yerleştirilebilir.
- Joker karakter HTTP/HTTPS uç noktaları, AKS kümenizde farklı bir dizi niteleyicileri temel alarak değişebilen bağımlılıklardır.
- AKS, bu FQDN 'yi kuas sistemi ve Gatekeeper-System altındaki tüm dağıtımlara bir ortam değişkeni olarak eklemek için bir giriş denetleyicisi kullanır. Bu, düğümler ve API sunucusu arasındaki tüm sistem iletişiminin API sunucusu IP 'sini kullanmamasını sağlar.
- API sunucusuyla iletişim kurmak için gereken bir uygulama veya çözümünüz varsa, API SUNUCUNUZUN IP 'sinin 443 numaralı bağlantı noktasına TCP iletişimine izin vermek için ek bir ağ kuralı eklemeniz gerekir.
- Nadir durumlarda, API sunucunuzun IP 'si değişebilir bir bakım işlemi varsa. API sunucusu IP 'sini değiştirebildiğinden planlı bakım işlemlerine her zaman önceden bir iletilir.
Azure genel gerekli ağ kuralları
Gerekli ağ kuralları ve IP adresi bağımlılıkları şunlardır:
| Hedef uç nokta | Protokol | Bağlantı noktası | Kullanın |
|---|---|---|---|
*:1194 Veya ServiceTag - AzureCloud.<Region>:1194 Veya Bölgesel Cıdrs - RegionCIDRs:1194 Veya APIServerPublicIP:1194 (only known after cluster creation) |
UDP | 1194 | Düğümler ve denetim düzlemi arasında Tünellenen güvenli iletişim için. Özel kümeler için bu gerekli değildir |
*:9000 Veya ServiceTag - AzureCloud.<Region>:9000 Veya Bölgesel Cıdrs - RegionCIDRs:9000 Veya APIServerPublicIP:9000 (only known after cluster creation) |
TCP | 9000 | Düğümler ve denetim düzlemi arasında Tünellenen güvenli iletişim için. Özel kümeler için bu gerekli değildir |
*:123 veya ntp.ubuntu.com:123 (Azure Güvenlik Duvarı ağ kuralları kullanılıyorsa) |
UDP | 123 | Linux düğümlerinde ağ zaman Protokolü (NTP) zaman eşitlemesi için gereklidir. |
CustomDNSIP:53 (if using custom DNS servers) |
UDP | 53 | Özel DNS sunucuları kullanıyorsanız, bunların küme düğümleri tarafından erişilebilir olduklarından emin olmanız gerekir. |
APIServerPublicIP:443 (if running pods/deployments that access the API Server) |
TCP | 443 | API sunucusuna erişen pods/dağıtımlar çalıştırıyorsanız, bu pods/dağıtımlar API IP 'sini kullanır. Özel kümeler için bu gerekli değildir |
Azure genel gerekli FQDN/uygulama kuralları
Aşağıdaki FQDN/uygulama kuralları gereklidir:
| Hedef FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
*.hcp.<location>.azmk8s.io |
HTTPS:443 |
Node <-> API Server iletişimi için gereklidir. <location> AKS kümenizin dağıtıldığı bölge ile değiştirin. |
mcr.microsoft.com |
HTTPS:443 |
Microsoft Container Registry (MCR) resimlere erişmek için gereklidir. Bu kayıt defteri ilk taraf görüntülerini/grafiklerini içerir (örneğin, coreDNS, vb.). Bu görüntüler, ölçek ve yükseltme işlemleri de dahil olmak üzere kümenin doğru oluşturulması ve çalışması için gereklidir. |
*.data.mcr.microsoft.com |
HTTPS:443 |
Azure content delivery network (CDN) tarafından desteklenen MCR depolama alanı için gereklidir. |
management.azure.com |
HTTPS:443 |
Azure API 'sine karşı Kubernetes işlemleri için gereklidir. |
login.microsoftonline.com |
HTTPS:443 |
Azure Active Directory kimlik doğrulaması için gereklidir. |
packages.microsoft.com |
HTTPS:443 |
Bu adres, önbelleğe alınmış apt-get işlemleri Için kullanılan Microsoft paketleri deposudur. Örnek paketlere Moby, PowerShell ve Azure CLı dahildir. |
acs-mirror.azureedge.net |
HTTPS:443 |
Bu adres, Kubernetes kullanan ve Azure CNı gibi gerekli ikilileri indirmek ve yüklemek için gereken depoya yöneliktir. |
Azure Çin 21Vianet gereken ağ kuralları
Gerekli ağ kuralları ve IP adresi bağımlılıkları şunlardır:
| Hedef uç nokta | Protokol | Bağlantı noktası | Kullanın |
|---|---|---|---|
*:1194 Veya ServiceTag - AzureCloud.Region:1194 Veya Bölgesel Cıdrs - RegionCIDRs:1194 Veya APIServerPublicIP:1194 (only known after cluster creation) |
UDP | 1194 | Düğümler ve denetim düzlemi arasında Tünellenen güvenli iletişim için. |
*:9000 Veya ServiceTag - AzureCloud.<Region>:9000 Veya Bölgesel CIDR'ler - RegionCIDRs:9000 Veya APIServerPublicIP:9000 (only known after cluster creation) |
TCP | 9000 | Düğümler ve kontrol düzlemi arasında tünelli güvenli iletişim için. |
*:22 Veya ServiceTag - AzureCloud.<Region>:22 Veya Bölgesel CIDR'ler - RegionCIDRs:22 Veya APIServerPublicIP:22 (only known after cluster creation) |
TCP | 22 | Düğümler ve kontrol düzlemi arasında tünelli güvenli iletişim için. |
*:123 veya ntp.ubuntu.com:123 (ağ Azure Güvenlik Duvarı kullanıyorsanız) |
UDP | 123 | Linux düğümlerde Ağ Saati Protokolü (NTP) zaman eşitlemesi için gereklidir. |
CustomDNSIP:53 (if using custom DNS servers) |
UDP | 53 | Özel DNS sunucuları kullanıyorsanız, bunların küme düğümleri tarafından erişilebilir olduğundan emin olun. |
APIServerPublicIP:443 (if running pods/deployments that access the API Server) |
TCP | 443 | API Sunucusu'na erişen podları/dağıtımları çalıştırıyorsanız gereklidir; bu podlar/dağıtımlar API IP'sini kullanır. |
Azure China 21Vianet FQDN/uygulama kuralları
Aşağıdaki FQDN/uygulama kuralları gereklidir:
| Hedef FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
*.hcp.<location>.cx.prod.service.azk8s.cn |
HTTPS:443 |
Node api sunucusu < > için gereklidir. yerine <location> AKS kümenizin dağıtılacağı bölgeyi değiştirin. |
*.tun.<location>.cx.prod.service.azk8s.cn |
HTTPS:443 |
Node api sunucusu < > için gereklidir. yerine <location> AKS kümenizin dağıtılacağı bölgeyi değiştirin. |
mcr.microsoft.com |
HTTPS:443 |
Microsoft Container Registry 'de (MCR) görüntülere erişmek için gereklidir. Bu kayıt defteri birinci taraf görüntüleri/grafikleri (örneğin, coreDNS vb.) içerir. Bu görüntüler, ölçek ve yükseltme işlemleri de dahil olmak üzere kümenin doğru oluşturulması ve çalışması için gereklidir. |
.data.mcr.microsoft.com |
HTTPS:443 |
Azure MCR (Content Delivery Network) tarafından CDN. |
management.chinacloudapi.cn |
HTTPS:443 |
Azure API'sini kullanan Kubernetes işlemleri için gereklidir. |
login.chinacloudapi.cn |
HTTPS:443 |
Kimlik doğrulaması Azure Active Directory gereklidir. |
packages.microsoft.com |
HTTPS:443 |
Bu adres, önbelleğe alınmış apt-get işlemleri için kullanılan Microsoft paketleri deposu. Moby, PowerShell ve Azure CLI örnek paketleridir. |
*.azk8s.cn |
HTTPS:443 |
Bu adres, kubenet ve Azure CNI gibi gerekli ikili dosyaları indirmek ve yüklemek için gereken depoya Azure CNI. |
Azure US Government gerekli ağ kuralları
Gerekli ağ kuralları ve IP adresi bağımlılıkları:
| Hedef Uç Nokta | Protokol | Bağlantı noktası | Kullanın |
|---|---|---|---|
*:1194 Veya ServiceTag - AzureCloud.<Region>:1194 Veya Bölgesel CIDR'ler - RegionCIDRs:1194 Veya APIServerPublicIP:1194 (only known after cluster creation) |
UDP | 1194 | Düğümler ve kontrol düzlemi arasında tünelli güvenli iletişim için. |
*:9000 Veya ServiceTag - AzureCloud.<Region>:9000 Veya Bölgesel CIDR'ler - RegionCIDRs:9000 Veya APIServerPublicIP:9000 (only known after cluster creation) |
TCP | 9000 | Düğümler ve kontrol düzlemi arasında tünelli güvenli iletişim için. |
*:123 veya ntp.ubuntu.com:123 (ağ Azure Güvenlik Duvarı kullanıyorsanız) |
UDP | 123 | Linux düğümlerde Ağ Saati Protokolü (NTP) zaman eşitlemesi için gereklidir. |
CustomDNSIP:53 (if using custom DNS servers) |
UDP | 53 | Özel DNS sunucuları kullanıyorsanız, bunların küme düğümleri tarafından erişilebilir olduğundan emin olun. |
APIServerPublicIP:443 (if running pods/deployments that access the API Server) |
TCP | 443 | API Sunucusu'na erişen podlar/dağıtımlar çalıştırıyorsa, bu podlar/dağıtımlar API IP'sini kullanır. |
Azure US Government gerekli FQDN/uygulama kuralları
Aşağıdaki FQDN/uygulama kuralları gereklidir:
| Hedef FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
*.hcp.<location>.cx.aks.containerservice.azure.us |
HTTPS:443 |
Node api sunucusu < > için gereklidir. yerine <location> AKS kümenizin dağıtılacağı bölgeyi değiştirin. |
mcr.microsoft.com |
HTTPS:443 |
Microsoft Container Registry 'de (MCR) görüntülere erişmek için gereklidir. Bu kayıt defteri birinci taraf görüntüleri/grafikleri (örneğin, coreDNS vb.) içerir. Bu görüntüler, ölçek ve yükseltme işlemleri de dahil olmak üzere kümenin doğru oluşturulması ve çalışması için gereklidir. |
*.data.mcr.microsoft.com |
HTTPS:443 |
Azure MCR teslim ağı (CDN) tarafından desteklemektedir. |
management.usgovcloudapi.net |
HTTPS:443 |
Azure API'sini kullanan Kubernetes işlemleri için gereklidir. |
login.microsoftonline.us |
HTTPS:443 |
Kimlik doğrulaması Azure Active Directory gereklidir. |
packages.microsoft.com |
HTTPS:443 |
Bu adres, önbelleğe alınmış apt-get işlemleri için kullanılan Microsoft paketleri deposu. Moby, PowerShell ve Azure CLI örnek paketleridir. |
acs-mirror.azureedge.net |
HTTPS:443 |
Bu adres, kubenet ve Azure CNI gibi gerekli ikilileri yüklemek için gereken depoya Azure CNI. |
AKS kümeleri için isteğe bağlı önerilen FQDN /uygulama kuralları
Aşağıdaki FQDN /uygulama kuralları isteğe bağlıdır, ancak AKS kümeleri için önerilir:
| Hedef FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
security.ubuntu.com, azure.archive.ubuntu.com, changelogs.ubuntu.com |
HTTP:80 |
Bu adres, Linux küme düğümlerinin gerekli güvenlik düzeltme eklerini ve güncelleştirmelerini indirmelerine olanak sağlar. |
Bu FQDN'leri engellemeyi/bunlara izin vermeyebilirsiniz; düğümler yalnızca bir düğüm görüntüsü yükseltmesi veya küme yükseltmesi işlemi sırasında işletim sistemi güncelleştirmelerini alır.
GPU özellikli AKS kümeleri
Gerekli FQDN/uygulama kuralları
GPU'nun etkin olduğu AKS kümeleri için aşağıdaki FQDN/uygulama kuralları gereklidir:
| Hedef FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
nvidia.github.io |
HTTPS:443 |
Bu adres GPU tabanlı düğümlerde doğru sürücü yüklemesi ve işlemi için kullanılır. |
us.download.nvidia.com |
HTTPS:443 |
Bu adres GPU tabanlı düğümlerde doğru sürücü yüklemesi ve işlemi için kullanılır. |
apt.dockerproject.org |
HTTPS:443 |
Bu adres GPU tabanlı düğümlerde doğru sürücü yüklemesi ve işlemi için kullanılır. |
Windows tabanlı düğüm havuzları
Gerekli FQDN/uygulama kuralları
Sunucu tabanlı düğüm havuzlarını kullanmak için aşağıdaki FQDN /Windows kuralları gereklidir:
| Hedef FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
onegetcdn.azureedge.net, go.microsoft.com |
HTTPS:443 |
Windows ile ilgili ikili dosyalar yüklemek için |
*.mp.microsoft.com, www.msftconnecttest.com, ctldl.windowsupdate.com |
HTTP:80 |
Windows ile ilgili ikili dosyalar yüklemek için |
AKS eklentileri ve tümleştirmeleri
Kapsayıcılar için Azure İzleyici
Kapsayıcılar için Azure İzleyici sağlamak için iki seçenek vardır, serviceTag Azure İzleyici veya gerekli FQDN/Uygulama Kurallarına erişim sebilirsiniz.
Gerekli ağ kuralları
Aşağıdaki FQDN/uygulama kuralları gereklidir:
| Hedef Uç Nokta | Protokol | Bağlantı noktası | Kullanın |
|---|---|---|---|
ServiceTag - AzureMonitor:443 |
TCP | 443 | Bu uç nokta, log analytics ve Log Analytics'e ölçüm Azure İzleyici göndermek için kullanılır. |
Gerekli FQDN/uygulama kuralları
Aşağıdaki FQDN /uygulama kuralları, kapsayıcılar için gerekli olan Azure İzleyici AKS kümeleri için gereklidir:
| FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
| dc.services.visualstudio.com | HTTPS:443 |
Bu uç nokta, ölçümler ve telemetri verileri izleme için Azure İzleyici. |
| *.ods.opinsights.azure.com | HTTPS:443 |
Bu uç nokta, log analytics Azure İzleyici için bu uç nokta tarafından kullanılır. |
| *.oms.opinsights.azure.com | HTTPS:443 |
Bu uç nokta, Log Analytics hizmetinin kimliğini doğrulamak için kullanılan omsagent tarafından kullanılır. |
| *.monitoring.azure.com | HTTPS:443 |
Bu uç nokta, ölçüm verilerini veri kaynağına göndermek Azure İzleyici. |
Azure İlkesi
Gerekli FQDN/uygulama kuralları
Aşağıdaki FQDN /uygulama kuralları, kümenin etkin olduğu AKS kümeleri Azure İlkesi gereklidir.
| FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
data.policy.core.windows.net |
HTTPS:443 |
Bu adres Kubernetes ilkelerini çekmek ve küme uyumluluk durumunu ilke hizmetine rapor etmek için kullanılır. |
store.policy.core.windows.net |
HTTPS:443 |
Bu adres, yerleşik ilkelerin Gatekeeper yapıtlarını çekmek için kullanılır. |
dc.services.visualstudio.com |
HTTPS:443 |
Azure İlkesi içgörü uç noktasına telemetri verileri gönderen bir eklenti. |
Azure China 21Vianet FQDN/uygulama kuralları
Aşağıdaki FQDN /uygulama kuralları, kümenin etkin olduğu AKS kümeleri Azure İlkesi gereklidir.
| FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
data.policy.azure.cn |
HTTPS:443 |
Bu adres Kubernetes ilkelerini çekmek ve küme uyumluluk durumunu ilke hizmetine rapor etmek için kullanılır. |
store.policy.azure.cn |
HTTPS:443 |
Bu adres, yerleşik ilkelerin Gatekeeper yapıtlarını çekmek için kullanılır. |
Azure US Government Gerekli FQDN/uygulama kuralları
Aşağıdaki FQDN /uygulama kuralları, kümenin etkin olduğu AKS kümeleri Azure İlkesi gereklidir.
| FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
data.policy.azure.us |
HTTPS:443 |
Bu adres Kubernetes ilkelerini çekmek ve küme uyumluluk durumunu ilke hizmetine rapor etmek için kullanılır. |
store.policy.azure.us |
HTTPS:443 |
Bu adres, yerleşik ilkelerin Gatekeeper yapıtlarını çekmek için kullanılır. |
Küme uzantıları
Gerekli FQDN/uygulama kuralları
AKS kümelerde küme uzantılarını kullanmak için aşağıdaki FQDN /uygulama kuralları gereklidir.
| FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
<region>.dp.kubernetesconfiguration.azure.com |
HTTPS:443 |
Bu adres, Küme Uzantıları hizmetten yapılandırma bilgilerini getirmek ve uzantı durumunu hizmete rapor etmek için kullanılır. |
mcr.microsoft.com, *.data.mcr.microsoft.com |
HTTPS:443 |
AKS kümesine küme uzantısı aracıları yüklemek için kapsayıcı görüntülerini çekmek için bu adres gereklidir. |
Azure US Government Gerekli FQDN/uygulama kuralları
AKS kümelerde küme uzantılarını kullanmak için aşağıdaki FQDN /uygulama kuralları gereklidir.
| FQDN | Bağlantı noktası | Kullanın |
|---|---|---|
<region>.dp.kubernetesconfiguration.azure.us |
HTTPS:443 |
Bu adres, Küme Uzantıları hizmetten yapılandırma bilgilerini getirmek ve uzantı durumunu hizmete rapor etmek için kullanılır. |
mcr.microsoft.com, *.data.mcr.microsoft.com |
HTTPS:443 |
AKS kümesine küme uzantısı aracıları yüklemek için kapsayıcı görüntülerini çekmek için bu adres gereklidir. |
Azure güvenlik duvarını kullanarak çıkış trafiğini kısıtlama
Azure Güvenlik Duvarı yapılandırmayı basitleştirmek için Azure Kubernetes Service AzureKubernetesService ( ) FQDN Etiketi sağlar.
Not
FQDN etiketi, yukarıda listelenen tüm FQDN'leri içerir ve otomatik olarak güncel tutulur.
SNAT bağlantı noktası tükenmesi sorunlarından kaçınmak için üretim senaryolarında Azure Güvenlik Duvarı en az 20 Ön Uç IP'nin olması önerilir.
Dağıtımın örnek bir mimarisi aşağıda verilmiştir:

- Genel Giriş, güvenlik duvarı filtrelerini aşmaya zorlandı
- AKS aracı düğümleri ayrılmış bir alt ağda yalıtılmış.
- Azure Güvenlik Duvarı kendi alt ağın içinde dağıtılır.
- DNAT kuralı, FW genel IP'sini LB ön uç IP'sine çevirir.
- Giden istekler, kullanıcı tanımlı bir yol kullanarak Azure Güvenlik Duvarı iç IP'ye doğru başlar
- AKS aracı düğümlerinden gelen istekler, AKS kümesine dağıtılmış olan alt ağ üzerinde yerleştirilmiş bir UDR'den sonra gelen istekleri takip eder.
- Azure Güvenlik Duvarı genel IP ön ucundan sanal ağdan çıkışlar
- Güvenlik duvarı ön uç IP adresine gelen ve buradan gelen genel İnternet'e veya diğer Azure hizmetleri akışlarına erişim
- İsteğe bağlı olarak, AKS denetim düzlemi erişimi, güvenlik duvarı genel ön uç IP adresini içeren API sunucusu Yetkili IParalıkları tarafından korunur.
- İç Trafik
- İsteğe bağlı olarak, bunun yerine veya genel Load Balancer iç trafik için bir İç Load Balancer kullanabilirsiniz ve bu da kendi alt ağın üzerinde yalıtabilirsiniz.
Aşağıdaki adımlar AKS kümesinden giden trafiği kısıtlamak için Azure Güvenlik Duvarı FQDN etiketini kullanır ve güvenlik duvarı üzerinden genel gelen trafiğin nasıl AzureKubernetesService yapılandırılacaklarına bir örnek sağlar.
Ortam değişkenleri aracılığıyla yapılandırmayı ayarlama
Kaynak oluşturmada kullanılacak ortam değişkenleri kümesi tanımlayın.
PREFIX="aks-egress"
RG="${PREFIX}-rg"
LOC="eastus"
PLUGIN=azure
AKSNAME="${PREFIX}"
VNET_NAME="${PREFIX}-vnet"
AKSSUBNET_NAME="aks-subnet"
# DO NOT CHANGE FWSUBNET_NAME - This is currently a requirement for Azure Firewall.
FWSUBNET_NAME="AzureFirewallSubnet"
FWNAME="${PREFIX}-fw"
FWPUBLICIP_NAME="${PREFIX}-fwpublicip"
FWIPCONFIG_NAME="${PREFIX}-fwconfig"
FWROUTE_TABLE_NAME="${PREFIX}-fwrt"
FWROUTE_NAME="${PREFIX}-fwrn"
FWROUTE_NAME_INTERNET="${PREFIX}-fwinternet"
Birden fazla alt ağa sahip bir sanal ağ oluşturma
Biri küme için, biri de güvenlik duvarı için olmak için iki ayrı alt ağa sahip bir sanal ağ sağlama. İsteğe bağlı olarak, iç hizmet giriş için de bir tane oluşturabilirsiniz.

Tüm kaynakları tutmak için bir kaynak grubu oluşturun.
# Create Resource Group
az group create --name $RG --location $LOC
AKS kümesi ve sanal ağı barındırmak için iki alt ağa sahip bir sanal Azure Güvenlik Duvarı. Her biri kendi alt ağın olur. AKS ağıyla başlayalım.
# Dedicated virtual network with AKS subnet
az network vnet create \
--resource-group $RG \
--name $VNET_NAME \
--location $LOC \
--address-prefixes 10.42.0.0/16 \
--subnet-name $AKSSUBNET_NAME \
--subnet-prefix 10.42.1.0/24
# Dedicated subnet for Azure Firewall (Firewall name cannot be changed)
az network vnet subnet create \
--resource-group $RG \
--vnet-name $VNET_NAME \
--name $FWSUBNET_NAME \
--address-prefix 10.42.2.0/24
UDR ile Azure Güvenlik Duvarı oluşturma ve ayarlama
Azure Güvenlik Duvarı ve giden kurallarının yapılandırılması gerekir. Güvenlik duvarının temel amacı, kuruluşların AKS Kümesine gelen ve aks kümesi dışında ayrıntılı giriş ve çıkış trafiği kuralları yapılandırmalarına olanak sağlamaktır.

Önemli
Kümeniz veya uygulamanız hedeflerin aynı veya küçük alt kümesine yönlendirilen çok sayıda giden bağlantı oluşturuyorsa, ön uç IP'leri başına bağlantı noktalarının üst limitini önlemek için daha fazla güvenlik duvarı ön uç IP'sini gerekebilir. Birden çok IP ile Azure güvenlik duvarı oluşturma hakkında daha fazla bilgi için buraya bakın
Ön uç adresi olarak kullanılacak standart bir SKU genel IP Azure Güvenlik Duvarı oluşturun.
az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
Önizleme cli-extension'sini kaydeden bir Azure Güvenlik Duvarı.
# Install Azure Firewall preview CLI extension
az extension add --name azure-firewall
# Deploy Azure Firewall
az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
Daha önce oluşturulan IP adresi artık güvenlik duvarı ön ucuna atanabilir.
Not
Genel IP adresinin Azure Güvenlik Duvarı birkaç dakika sürebilir. Ağ kurallarında FQDN'den yararlanacak şekilde DNS ara sunucusunun etkinleştirilmesi gerekir. Etkinleştirildiğinde güvenlik duvarı 53 bağlantı noktasını dinler ve DNS isteklerini yukarıda belirtilen DNS sunucusuna iletir. Bu, güvenlik duvarının bu FQDN'yi otomatik olarak çevirmesine olanak sağlar.
# Configure Firewall IP Config
az network firewall ip-config create -g $RG -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBLICIP_NAME --vnet-name $VNET_NAME
Önceki komut başarılı olduğunda güvenlik duvarı ön uç IP adresini daha sonra yapılandırma için kaydedin.
# Capture Firewall IP Address for Later Use
FWPUBLIC_IP=$(az network public-ip show -g $RG -n $FWPUBLICIP_NAME --query "ipAddress" -o tsv)
FWPRIVATE_IP=$(az network firewall show -g $RG -n $FWNAME --query "ipConfigurations[0].privateIpAddress" -o tsv)
Not
Yetkili IPadresi aralıklarına sahip AKS API sunucusuna güvenli erişim kullanıyorsanız, güvenlik duvarı genel IP'sini yetkili IP aralığına eklemeniz gerekir.
Azure Güvenlik Duvarı'a atlama ile UDR oluşturma
Azure, Azure alt ağları, sanal ağlar ve şirket içi ağlar arasındaki trafiği otomatik olarak yönlendirmektedir. Azure'ın varsayılan yönlendirmesini değiştirmek için bir yol tablosu oluşturabilirsiniz.
Belirli bir alt ağ ile ilişkilendirilen boş bir yol tablosu oluşturun. Yol tablosu, bir sonraki atlamayı yukarıda oluşturulan Azure Güvenlik Duvarı olarak tanımlar. Her alt ağ ile ilişkili sıfır veya bir yol tablosu olabilir.
# Create UDR and add a route for Azure Firewall
az network route-table create -g $RG -l $LOC --name $FWROUTE_TABLE_NAME
az network route-table route create -g $RG --name $FWROUTE_NAME --route-table-name $FWROUTE_TABLE_NAME --address-prefix 0.0.0.0/0 --next-hop-type VirtualAppliance --next-hop-ip-address $FWPRIVATE_IP
az network route-table route create -g $RG --name $FWROUTE_NAME_INTERNET --route-table-name $FWROUTE_TABLE_NAME --address-prefix $FWPUBLIC_IP/32 --next-hop-type Internet
Azure'ın varsayılan sistem yollarını geçersiz kılma veya bir alt ağın yol tablosuna başka yollar ekleme hakkında sanal ağ yönlendirme tablosu belgelerine bakın.
Güvenlik duvarı kuralları ekleme
Güvenlik duvarınızı yapılandırmak için kullanabileceğiniz üç ağ kuralı aşağıda verilmiştir; bu kuralları dağıtımınız temel alarak uyarlamanız gerekebilir. İlk kural TCP üzerinden 9000 bağlantı noktasına erişime izin verir. İkinci kural UDP üzerinden 1194 ve 123 bağlantı noktalarına erişime izin verir (dağıtım Azure China 21Vianet daha fazlasını gerekli olabilir). Bu kuralların her ikisi de yalnızca kullanmakta olduğu Azure Bölgesi CIDR'sine (bu durumda azure bölgesi CIDR'sine) Doğu ABD. Son olarak, UDP aracılığıyla FQDN'ye 123 bağlantı noktasını açma üçüncü bir ağ kuralı ekleyebiliyoruz (ağ kuralı olarak ntp.ubuntu.com FQDN eklemek, Azure Güvenlik Duvarı'nin belirli özelliklerinden biridir ve kendi seçeneklerinizi kullanırken uyarlamanız gerekir).
Ağ kurallarını ayardikten sonra, TCP bağlantı noktası 443 ve bağlantı noktası 80 üzerinden erişilebilen tüm gerekli FQDN'leri kapsayan kullanarak bir uygulama kuralı da AzureKubernetesService ekleyebilirsiniz.
# Add FW Network Rules
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apiudp' --protocols 'UDP' --source-addresses '*' --destination-addresses "AzureCloud.$LOC" --destination-ports 1194 --action allow --priority 100
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apitcp' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureCloud.$LOC" --destination-ports 9000
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'time' --protocols 'UDP' --source-addresses '*' --destination-fqdns 'ntp.ubuntu.com' --destination-ports 123
# Add FW Application Rules
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'fqdn' --source-addresses '*' --protocols 'http=80' 'https=443' --fqdn-tags "AzureKubernetesService" --action allow --priority 100
Azure Güvenlik Duvarı hizmeti hakkında daha fazla bilgi edinmek için Azure Güvenlik Duvarı bakın.
Yönlendirme tablosu ile AKS'i ilişkilendirme
Kümeyi güvenlik duvarıyla ilişkilendirmek için, kümenin alt ağın ayrılmış alt ağı yukarıda oluşturulan yol tablosuna başvurmalıdır. İlişkileme, kümenin alt ağının yol tablosu güncelleştirmek için hem kümeyi hem de güvenlik duvarını tutan sanal ağa bir komut verilip yapılabilir.
# Associate route table with next hop to Firewall to the AKS subnet
az network vnet subnet update -g $RG --vnet-name $VNET_NAME --name $AKSSUBNET_NAME --route-table $FWROUTE_TABLE_NAME
Var olan ağa giden UDR türüyle AKS dağıtma
Artık mevcut sanal ağa bir AKS kümesi dağıtılabilir. Giden türünü de userDefinedRouting kullanacağız. Bu özellik, tüm giden trafiğin güvenlik duvarı üzerinden zorlanmayacak ve başka çıkış yolu olmayacaktır (varsayılan olarak Load Balancer giden türü kullanılabilir).

Mevcut sanal ağın içinde sağlama erişimi olan bir hizmet sorumlusu oluşturma
AKS tarafından küme kaynakları oluşturmak için bir küme kimliği (yönetilen kimlik veya hizmet sorumlusu) kullanılır. Oluşturma zamanında geçirilen bir hizmet sorumlusu, AKS tarafından kullanılan Depolama kaynakları, IP'ler ve Load Balancer'lar gibi temel AKS kaynaklarını oluşturmak için kullanılır (bunun yerine yönetilen kimlik de kullanabilirsiniz). Aşağıdaki uygun izinler verilmezse AKS Kümesi sağlanmaz.
# Create SP and Assign Permission to Virtual Network
az ad sp create-for-rbac -n "${PREFIX}sp"
Şimdi aşağıdaki ve yerine önceki komut çıktısı tarafından otomatik olarak otomatik olarak yapılan hizmet sorumlusu APPID PASSWORD appid ve hizmet sorumlusu parolasını yazın. AKS'nin buna kaynak dağıtablandırılaya kadar hizmet sorumlusuna izinleri vermek için sanal ağ kaynak kimliğine başvuracağız.
APPID="<SERVICE_PRINCIPAL_APPID_GOES_HERE>"
PASSWORD="<SERVICEPRINCIPAL_PASSWORD_GOES_HERE>"
VNETID=$(az network vnet show -g $RG --name $VNET_NAME --query id -o tsv)
# Assign SP Permission to VNET
az role assignment create --assignee $APPID --scope $VNETID --role "Network Contributor"
Burada gerekli olan ayrıntılı izinleri kontrol edin.
Not
Kubenet ağ eklentisini kullanıyorsanız, kubenet'in yeni yönlendirme kuralları eklemek için bir yol tablosu gerektirdiğinden AKS hizmet sorumlusuna veya yönetilen kimliklere önceden oluşturulmuş yol tablosu için izinler vermelisiniz.
RTID=$(az network route-table show -g $RG -n $FWROUTE_TABLE_NAME --query id -o tsv)
az role assignment create --assignee $APPID --scope $RTID --role "Network Contributor"
AKS'yi dağıtma
Son olarak AKS kümesi, küme için ayrılmış olan mevcut alt ağda dağıtılabilir. dağıtılacak hedef alt ağ, ortam değişkeniyle $SUBNETID tanımlanır. Önceki adımlarda $SUBNETID değişkeni tanımlamadık. Alt ağ kimliğinin değerini ayarlamak için aşağıdaki komutu kullanabilirsiniz:
SUBNETID=$(az network vnet subnet show -g $RG --vnet-name $VNET_NAME --name $AKSSUBNET_NAME --query id -o tsv)
Alt ağda zaten var olan UDR'sini kullanmak için giden türünü tanımlayabilirsiniz. Bu yapılandırma AKS'nin yük dengeleyici için kurulumu ve IP sağlamayı atlamayı etkinleştirmesini sağlar.
Önemli
Sınırlamalar da dahil olmak üzere giden UDR türü hakkında daha fazla bilgi için bkz. çıkış giden türü UDR.
İpucu
Küme dağıtımına Özel Küme gibi ek özellikler eklenebilir.
API sunucusuna erişimi yalnızca güvenlik duvarının genel uç noktasıyla sınırlamak için API sunucusu yetkili IP aralıkları için AKS özelliği eklenebilir. Yetkili IP aralıkları özelliği diyagramda isteğe bağlı olarak ifade edildi. API sunucusu erişimini sınırlamak için yetkili IP aralığı özelliğini etkinleştirerek geliştirici araçlarınız güvenlik duvarının sanal ağına yönelik bir sıçrama kutusu kullanmalısınız veya tüm geliştirici uç noktalarını yetkili IP aralığına eklemeniz gerekir.
az aks create -g $RG -n $AKSNAME -l $LOC \
--node-count 3 --generate-ssh-keys \
--network-plugin $PLUGIN \
--outbound-type userDefinedRouting \
--service-cidr 10.41.0.0/16 \
--dns-service-ip 10.41.0.10 \
--docker-bridge-address 172.17.0.1/16 \
--vnet-subnet-id $SUBNETID \
--service-principal $APPID \
--client-secret $PASSWORD \
--api-server-authorized-ip-ranges $FWPUBLIC_IP
API sunucusuna geliştirici erişimini etkinleştirme
Önceki adımda küme için yetkili IP aralıkları kullandıysanız, API sunucusuna buradan erişmek için geliştirici araç IP adreslerinizi onaylı IP aralıkları listesine eklemeniz gerekir. Bir diğer seçenek de Güvenlik Duvarı'nın sanal ağı içindeki ayrı bir alt ağ içinde gerekli araçla bir sıçrama kutusu yapılandırmaktır.
Aşağıdaki komutu kullanarak onaylanan aralıklara başka bir IP adresi ekleyin
# Retrieve your IP address
CURRENT_IP=$(dig @resolver1.opendns.com ANY myip.opendns.com +short)
# Add to AKS approved list
az aks update -g $RG -n $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/32
Yeni oluşturduğunuz Kubernetes kümesine bağlanmak üzere yapılandırmak için [az aks get-credentials][az-aks-get-credentials] kubectl komutunu kullanın.
az aks get-credentials -g $RG -n $AKSNAME
Genel hizmet dağıtma
Artık hizmetleri açığa çıkararak ve bu kümeye uygulama dağıtmaya başlayabilirsiniz. Bu örnekte, bir genel hizmeti açığa çıkaracağız, ancak iç yük dengeleyici aracılığıyla bir iç hizmeti de açığa çıkarmayı seçebilirsiniz.

Aşağıdaki yaml dosyasını adlı dosyaya kopyalayıp Azure voting uygulama uygulamasını example.yaml dağıtın.
# voting-storage-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: voting-storage
spec:
replicas: 1
selector:
matchLabels:
app: voting-storage
template:
metadata:
labels:
app: voting-storage
spec:
containers:
- name: voting-storage
image: mcr.microsoft.com/aks/samples/voting/storage:2.0
args: ["--ignore-db-dir=lost+found"]
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_ROOT_PASSWORD
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_USER
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_PASSWORD
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_DATABASE
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
---
# voting-storage-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: voting-storage-secret
type: Opaque
data:
MYSQL_USER: ZGJ1c2Vy
MYSQL_PASSWORD: UGFzc3dvcmQxMg==
MYSQL_DATABASE: YXp1cmV2b3Rl
MYSQL_ROOT_PASSWORD: UGFzc3dvcmQxMg==
---
# voting-storage-pv-claim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
# voting-storage-service.yaml
apiVersion: v1
kind: Service
metadata:
name: voting-storage
labels:
app: voting-storage
spec:
ports:
- port: 3306
name: mysql
selector:
app: voting-storage
---
# voting-app-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: voting-app
spec:
replicas: 1
selector:
matchLabels:
app: voting-app
template:
metadata:
labels:
app: voting-app
spec:
containers:
- name: voting-app
image: mcr.microsoft.com/aks/samples/voting/app:2.0
imagePullPolicy: Always
ports:
- containerPort: 8080
name: http
env:
- name: MYSQL_HOST
value: "voting-storage"
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_USER
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_PASSWORD
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_DATABASE
- name: ANALYTICS_HOST
value: "voting-analytics"
---
# voting-app-service.yaml
apiVersion: v1
kind: Service
metadata:
name: voting-app
labels:
app: voting-app
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
name: http
selector:
app: voting-app
---
# voting-analytics-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: voting-analytics
spec:
replicas: 1
selector:
matchLabels:
app: voting-analytics
version: "2.0"
template:
metadata:
labels:
app: voting-analytics
version: "2.0"
spec:
containers:
- name: voting-analytics
image: mcr.microsoft.com/aks/samples/voting/analytics:2.0
imagePullPolicy: Always
ports:
- containerPort: 8080
name: http
env:
- name: MYSQL_HOST
value: "voting-storage"
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_USER
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_PASSWORD
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: voting-storage-secret
key: MYSQL_DATABASE
---
# voting-analytics-service.yaml
apiVersion: v1
kind: Service
metadata:
name: voting-analytics
labels:
app: voting-analytics
spec:
ports:
- port: 8080
name: http
selector:
app: voting-analytics
Aşağıdakini çalıştırarak hizmeti dağıtın:
kubectl apply -f example.yaml
Bu kurala DNAT kuralı Azure Güvenlik Duvarı
Önemli
Çıkış trafiğini kısıtlamak Azure Güvenlik Duvarı tüm çıkış trafiğini zorlamak için bir kullanıcı tanımlı yol (UDR) oluşturmak üzere Azure Güvenlik Duvarı'i kullanıyorsanız, giriş trafiğine doğru şekilde izin vermek için Güvenlik Duvarı'da uygun bir DNAT kuralı sanız emin olun. Bir Azure Güvenlik Duvarı UDR ile birlikte kullanmak, asimetrik yönlendirme nedeniyle giriş kurulumunu bozar. (AKS alt ağının güvenlik duvarının özel IP adresine giden varsayılan bir yolu varsa ancak genel yük dengeleyici ( giriş veya Kubernetes hizmeti türü: LoadBalancer) kullanıyorsanız bu sorun oluşur. Bu durumda, gelen yük dengeleyici trafiği genel IP adresi üzerinden alınmıştır, ancak dönüş yolu güvenlik duvarının özel IP adresi üzerinden gider. Güvenlik duvarı durum bilgisine tabi olduğundan, güvenlik duvarının kurulu bir oturumdan haberdar olmadığını çünkü dönen paketi atlar. Sanal ağlarınızı giriş veya Azure Güvenlik Duvarı yük dengeleyiciniz ile tümleştirin, bkz. Azure Azure Güvenlik Duvarı ile Standart Load Balancer.
Gelen bağlantının yapılandırılması için dnat kuralının Azure Güvenlik Duvarı. Kümenizin bağlantısını test etmek için, güvenlik duvarı ön uç genel IP adresi için iç hizmet tarafından ortaya çıkacak iç IP'ye yönlendirecek bir kural tanımlanır.
Hedef adres, erişilecek güvenlik duvarında bağlantı noktası olduğu için özelleştirilebilir. Çevrilmiş adres, iç yük dengeleyicinin IP adresi olabilir. Çevrilmiş bağlantı noktası, Kubernetes hizmetiniz için açık bağlantı noktası olması gerekir.
Kubernetes hizmeti tarafından oluşturulan yük dengeleyiciye atanan iç IP adresini belirtmeniz gerekir. Aşağıdakini çalıştırarak adresi alın:
kubectl get services
Gereken IP adresi, aşağıdakine benzer şekilde EXTERNAL-IP sütununda listelenir.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.41.0.1 <none> 443/TCP 10h
voting-analytics ClusterIP 10.41.88.129 <none> 8080/TCP 9m
voting-app LoadBalancer 10.41.185.82 20.39.18.6 80:32718/TCP 9m
voting-storage ClusterIP 10.41.221.201 <none> 3306/TCP 9m
Aşağıdakini çalıştırarak hizmet IP'sini al:
SERVICE_IP=$(kubectl get svc voting-app -o jsonpath='{.status.loadBalancer.ingress[*].ip}')
Aşağıdakini çalıştırarak NAT kuralını ekleyin:
az network firewall nat-rule create --collection-name exampleset --destination-addresses $FWPUBLIC_IP --destination-ports 80 --firewall-name $FWNAME --name inboundrule --protocols Any --resource-group $RG --source-addresses '*' --translated-port 80 --action Dnat --priority 100 --translated-address $SERVICE_IP
Bağlantıyı doğrulama
Tarayıcıda Azure Güvenlik Duvarı uç IP adresine gidin.
AKS oylama uygulamasını görüyorsanız. Bu örnekte Güvenlik duvarı genel IP'si 52.253.228.132 olarak ve

Kaynakları temizleme
Azure kaynaklarını temizlemek için AKS kaynak grubunu silin.
az group delete -g $RG
Sonraki adımlar
Bu makalede, kümenin çıkış trafiğini kısıtlamak istiyorsanız hangi bağlantı noktalarının ve adreslerin izin verdiklerini öğrendiniz. Ayrıca, Azure Güvenlik Duvarı 'nı kullanarak giden trafiğinizi nasıl güvenli hale getirmek istediğinizi gördünüz.
Gerekirse, giden tür userDefinedRoute belgelerininardından trafiği tercih ettiğiniz çıkış çözümünüze iletmek için yukarıdaki adımları genelleştirebilirsiniz.
Küme içindeki ve East-West trafik kısıtlamaları arasında Pod 'nin nasıl iletişim kuracağını kısıtlamak istiyorsanız, aks 'deki ağ ilkelerini kullanarak Pod arasındaki güvenli trafiğiinceleyin.