Řízení příchozího přenosu dat pro uzly clusteru v Azure Kubernetes Service (AKS)
Tento článek obsahuje nezbytné podrobnosti, které vám umožní zabezpečit odchozí provoz z vaší Azure Kubernetes Service (AKS). Obsahuje požadavky na cluster pro základní nasazení AKS a další požadavky na volitelné doplňky a funkce. Na konci najdete příklad konfiguracetěchto požadavků pomocí Azure Firewall . Tyto informace ale můžete použít pro libovolnou metodu odchozího omezení nebo zařízení.
Pozadí
Clustery AKS se nasadí ve virtuální síti. Tuto síť je možné spravovat (vytvořená službou AKS) nebo vlastní (předem nakonfigurovaná uživatelem). V obou případech má cluster odchozí závislosti na službách mimo virtuální síť (služba nemá žádné příchozí závislosti).
Pro účely správy a provozu musí uzly v clusteru AKS přistupovat k určitým portům a plně kvalifikovaným názvům domén (FQDN). Tyto koncové body jsou potřeba ke komunikaci uzlů se serverem rozhraní API nebo ke stažení a instalaci základních komponent clusteru Kubernetes a aktualizací zabezpečení uzlu. Cluster například potřebuje vyžádat image základního kontejneru systému z Microsoft Container Registry (MCR).
Odchozí závislosti AKS jsou téměř zcela definované pomocí plně kvalifikovaných název domény, které nemají statické adresy. Absence statických adres znamená, že skupiny zabezpečení sítě není možné použít k uzamčení odchozího provozu z clusteru AKS.
Ve výchozím nastavení mají clustery AKS neomezený odchozí (výchozí) přístup k internetu. Tato úroveň síťového přístupu umožňuje uzlům a službám, které spustíte, přistupovat k externím prostředkům podle potřeby. Pokud chcete omezit odchozí provoz, musí být dostupný omezený počet portů a adres, aby se zachovaly úlohy údržby clusteru, které jsou v pořádku. Nejjednodušším řešením zabezpečení odchozích adres je použití zařízení brány firewall, které dokáže řídit odchozí provoz na základě názvů domén. Azure Firewall můžete například omezit odchozí provoz HTTP a HTTPS na základě plně kvalifikovaných názvu domény cíle. Můžete také nakonfigurovat upřednostňovaná pravidla brány firewall a zabezpečení, která povolí tyto požadované porty a adresy.
Důležité
Tento dokument popisuje pouze to, jak uzamknout provoz opouštějící podsíť AKS. AKS nemá ve výchozím nastavení žádné požadavky na příchozí přenos dat. Blokování provozu interní podsítě pomocí skupin zabezpečení sítě (NSG) a bran firewall se nepodporuje. Pokud chcete řídit a blokovat provoz v rámci clusteru, použijte zásady sítě.
Požadovaná pravidla odchozí sítě a FQDN pro clustery AKS
Pro cluster AKS se vyžaduje následující pravidla sítě a plně kvalifikovaných název domény nebo aplikací. Můžete je použít, pokud chcete nakonfigurovat jiné řešení než Azure Firewall.
- Závislosti IP adres jsou pro přenosy jiné než HTTP/S (provoz TCP i UDP).
- Plně kvalifikovaný název domény koncové body HTTP/HTTPS je možné umístit do zařízení brány firewall.
- Koncové body HTTP/HTTPS se zástupnými znaky jsou závislosti, které se můžou v clusteru AKS lišit na základě počtu kvalifikátorů.
- AKS používá kontroler přístupu k vložení plně kvalifikovaných názvů domény jako proměnné prostředí do všech nasazení v rámci kube-system a gatekeeper-system, který zajišťuje, že veškerá systémová komunikace mezi uzly a serverem rozhraní API používá plně kvalifikovaný název domény serveru rozhraní API, a ne IP adresu serveru rozhraní API.
- Pokud máte aplikaci nebo řešení, které potřebuje komunikaci se serverem rozhraní API, musíte přidat další pravidlo sítě, které umožní komunikaci protokolu TCP s portem 443 IP adresy vašeho serveru rozhraní API.
- Ve výjimečných případech může v případě operace údržby dojít ke změně IP adresy serveru rozhraní API. Operace plánované údržby, které mohou změnit IP adresu serveru rozhraní API, se vždy sdělí předem.
Globální požadovaná pravidla sítě v Azure
Požadovaná pravidla sítě a závislosti IP adres:
| Cílový koncový bod | Protokol | Port | Použití |
|---|---|---|---|
*:1194 Nebo ServiceTag - AzureCloud.<Region>:1194 Nebo Regionální CIDR - RegionCIDRs:1194 Nebo APIServerPublicIP:1194 (only known after cluster creation) |
UDP | 1194 | Pro zabezpečenou komunikaci mezi uzly a řídicí rovinou pomocí tunelového propojení. To se u privátních clusterů nevyžaduje. |
*:9000 Nebo ServiceTag - AzureCloud.<Region>:9000 Nebo Regionální CIDR - RegionCIDRs:9000 Nebo APIServerPublicIP:9000 (only known after cluster creation) |
TCP | 9000 | Pro zabezpečenou komunikaci mezi uzly a řídicí rovinou pomocí tunelového propojení. To se u privátních clusterů nevyžaduje. |
*:123 nebo ntp.ubuntu.com:123 (pokud používáte Azure Firewall pravidla sítě) |
UDP | 123 | Vyžaduje se pro synchronizaci času protokolu NTP (Network Time Protocol) na uzlech Linuxu. |
CustomDNSIP:53 (if using custom DNS servers) |
UDP | 53 | Pokud používáte vlastní servery DNS, musíte zajistit, aby byly přístupné pro uzly clusteru. |
APIServerPublicIP:443 (if running pods/deployments that access the API Server) |
TCP | 443 | Vyžaduje se, pokud se pody nebo nasazení, která přistupuje k serveru rozhraní API, používají tyto pody nebo nasazení IP adresu rozhraní API. To se u privátních clusterů nevyžaduje. |
Globální požadovaný plně kvalifikovaný název domény / pravidla aplikace Azure
Vyžaduje se následující plně kvalifikovaný název domény nebo pravidla aplikace:
| Cílový plně kvalifikovaný název domény | Port | Použití |
|---|---|---|
*.hcp.<location>.azmk8s.io |
HTTPS:443 |
Vyžaduje se pro komunikaci <-> rozhraní API node. Nahraďte <location> oblastí, ve které je váš cluster AKS nasazený. |
mcr.microsoft.com |
HTTPS:443 |
Vyžaduje se pro přístup k imagí Microsoft Container Registry (MCR). Tento registr obsahuje image/grafy třetích stran (například coreDNS atd.). Tyto image jsou potřeba ke správnému vytvoření a fungování clusteru, včetně operací škálování a upgradu. |
*.data.mcr.microsoft.com |
HTTPS:443 |
Vyžaduje se MCR úložiště zálohované sítí pro doručování obsahu Azure (CDN). |
management.azure.com |
HTTPS:443 |
Vyžaduje se pro operace Kubernetes s rozhraním Azure API. |
login.microsoftonline.com |
HTTPS:443 |
Vyžaduje se pro Azure Active Directory ověřování. |
packages.microsoft.com |
HTTPS:443 |
Tato adresa je úložiště balíčků Microsoftu, které se používá pro operace apt-get uložené v mezipaměti. Mezi příklady balíčků patří Moby, PowerShell a Azure CLI. |
acs-mirror.azureedge.net |
HTTPS:443 |
Tato adresa je potřebná pro úložiště potřebné ke stažení a instalaci požadovaných binárních souborů, jako jsou kubenet a Azure CNI. |
Azure China 21Vianet požadovaná pravidla sítě
Požadovaná pravidla sítě a závislosti IP adres:
| Cílový koncový bod | Protokol | Port | Použití |
|---|---|---|---|
*:1194 Nebo ServiceTag - AzureCloud.Region:1194 Nebo Regionální CIDR - RegionCIDRs:1194 Nebo APIServerPublicIP:1194 (only known after cluster creation) |
UDP | 1194 | Pro zabezpečenou komunikaci mezi uzly a řídicí rovinou pomocí tunelového propojení. |
*:9000 Nebo ServiceTag - AzureCloud.<Region>:9000 Nebo Regionální CIDR - RegionCIDRs:9000 Nebo APIServerPublicIP:9000 (only known after cluster creation) |
TCP | 9000 | Pro zabezpečenou komunikaci mezi uzly a řídicí rovinou pomocí tunelového propojení. |
*:22 Nebo ServiceTag - AzureCloud.<Region>:22 Nebo Regionální CIDR - RegionCIDRs:22 Nebo APIServerPublicIP:22 (only known after cluster creation) |
TCP | 22 | Pro zabezpečenou komunikaci mezi uzly a řídicí rovinou pomocí tunelového propojení. |
*:123 nebo ntp.ubuntu.com:123 (pokud používáte Azure Firewall pravidla sítě) |
UDP | 123 | Vyžaduje se pro synchronizaci času protokolu NTP (Network Time Protocol) na uzlech Linuxu. |
CustomDNSIP:53 (if using custom DNS servers) |
UDP | 53 | Pokud používáte vlastní servery DNS, musíte zajistit, aby byly přístupné pro uzly clusteru. |
APIServerPublicIP:443 (if running pods/deployments that access the API Server) |
TCP | 443 | Vyžaduje se, pokud jsou spuštěné pody nebo nasazení, která přistupuje k serveru rozhraní API, tyto pody nebo nasazení používají IP adresu rozhraní API. |
Azure China 21Vianet požadovaný plně kvalifikovaný název domény / pravidla aplikace
Vyžaduje se následující plně kvalifikovaný název domény nebo pravidla aplikace:
| Cílový plně kvalifikovaný název domény | Port | Použití |
|---|---|---|
*.hcp.<location>.cx.prod.service.azk8s.cn |
HTTPS:443 |
Vyžaduje se pro komunikaci <-> rozhraní API node. Nahraďte <location> oblastí, ve které je váš cluster AKS nasazený. |
*.tun.<location>.cx.prod.service.azk8s.cn |
HTTPS:443 |
Vyžaduje se pro komunikaci <-> rozhraní API node. Nahraďte <location> oblastí, ve které je váš cluster AKS nasazený. |
mcr.microsoft.com |
HTTPS:443 |
Vyžaduje se pro přístup k imagí Microsoft Container Registry (MCR). Tento registr obsahuje image/grafy třetích stran (například coreDNS atd.). Tyto image jsou potřeba ke správnému vytvoření a fungování clusteru, včetně operací škálování a upgradu. |
.data.mcr.microsoft.com |
HTTPS:443 |
Vyžaduje se MCR úložiště zálohované službou Azure Content Delivery Network (CDN). |
management.chinacloudapi.cn |
HTTPS:443 |
Vyžaduje se pro operace Kubernetes s rozhraním Azure API. |
login.chinacloudapi.cn |
HTTPS:443 |
Vyžaduje se pro Azure Active Directory ověřování. |
packages.microsoft.com |
HTTPS:443 |
Tato adresa je úložiště balíčků Microsoftu, které se používá pro operace apt-get uložené v mezipaměti. Mezi příklady balíčků patří Moby, PowerShell a Azure CLI. |
*.azk8s.cn |
HTTPS:443 |
Tato adresa je potřebná pro úložiště potřebné ke stažení a instalaci požadovaných binárních souborů, jako jsou kubenet a Azure CNI. |
Vyžaduje se síťová pravidla pro Azure US Government.
Požadovaná pravidla sítě a závislosti IP adres:
| Cílový koncový bod | Protokol | Port | Použití |
|---|---|---|---|
*:1194 Nebo ServiceTag - AzureCloud.<Region>:1194 Nebo Regionální CIDR - RegionCIDRs:1194 Nebo APIServerPublicIP:1194 (only known after cluster creation) |
UDP | 1194 | Pro zabezpečenou komunikaci mezi uzly a řídicí rovinou pomocí tunelového propojení. |
*:9000 Nebo ServiceTag - AzureCloud.<Region>:9000 Nebo Regionální CIDR - RegionCIDRs:9000 Nebo APIServerPublicIP:9000 (only known after cluster creation) |
TCP | 9000 | Pro zabezpečenou komunikaci mezi uzly a řídicí rovinou pomocí tunelového propojení. |
*:123 nebo ntp.ubuntu.com:123 (pokud používáte Azure Firewall pravidla sítě) |
UDP | 123 | Vyžaduje se pro synchronizaci času protokolu NTP (Network Time Protocol) na uzlech Linuxu. |
CustomDNSIP:53 (if using custom DNS servers) |
UDP | 53 | Pokud používáte vlastní servery DNS, musíte zajistit, aby byly přístupné pro uzly clusteru. |
APIServerPublicIP:443 (if running pods/deployments that access the API Server) |
TCP | 443 | Vyžaduje se, pokud se pody nebo nasazení, která přistupuje k serveru rozhraní API, používají tyto pody nebo nasazení IP adresu rozhraní API. |
Azure US Government vyžaduje plně kvalifikovaný název domény / pravidla aplikace
Vyžaduje se následující plně kvalifikovaný název domény nebo pravidla aplikace:
| Cílový plně kvalifikovaný název domény | Port | Použití |
|---|---|---|
*.hcp.<location>.cx.aks.containerservice.azure.us |
HTTPS:443 |
Vyžaduje se pro komunikaci <-> rozhraní API node. Nahraďte <location> oblastí, ve které je váš cluster AKS nasazený. |
mcr.microsoft.com |
HTTPS:443 |
Vyžaduje se pro přístup k imagí Microsoft Container Registry (MCR). Tento registr obsahuje image/grafy třetích stran (například coreDNS atd.). Tyto image jsou potřeba ke správnému vytvoření a fungování clusteru, včetně operací škálování a upgradu. |
*.data.mcr.microsoft.com |
HTTPS:443 |
Vyžaduje se MCR úložiště zálohované sítí pro doručování obsahu Azure (CDN). |
management.usgovcloudapi.net |
HTTPS:443 |
Vyžaduje se pro operace Kubernetes s rozhraním Azure API. |
login.microsoftonline.us |
HTTPS:443 |
Vyžaduje se pro Azure Active Directory ověřování. |
packages.microsoft.com |
HTTPS:443 |
Tato adresa je úložiště balíčků Microsoftu, které se používá pro operace apt-get uložené v mezipaměti. Mezi příklady balíčků patří Moby, PowerShell a Azure CLI. |
acs-mirror.azureedge.net |
HTTPS:443 |
Tato adresa je potřebná pro úložiště potřebné k instalaci požadovaných binárních souborů, jako jsou kubenet a Azure CNI. |
Volitelné doporučené plně kvalifikovaný název domény / pravidla aplikací pro clustery AKS
Následující pravidla plně kvalifikovaných názvu domény nebo aplikací jsou volitelná, ale doporučuje se pro clustery AKS:
| Cílový plně kvalifikovaný název domény | Port | Použití |
|---|---|---|
security.ubuntu.com, azure.archive.ubuntu.com, changelogs.ubuntu.com |
HTTP:80 |
Tato adresa umožňuje uzlům clusteru s Linuxem stáhnout požadované opravy a aktualizace zabezpečení. |
Pokud se rozhodnete tyto FQDN blokovat nebo nepovolit, uzly obdrží aktualizace operačního systému jenom při upgradu image uzlu nebo upgradu clusteru.
Clustery AKS s podporou GPU
Požadovaný plně kvalifikovaný název domény / pravidla aplikace
Pro clustery AKS s povoleným GPU se vyžaduje následující pravidla plně kvalifikovaných názvu domény nebo aplikací:
| Cílový plně kvalifikovaný název domény | Port | Použití |
|---|---|---|
nvidia.github.io |
HTTPS:443 |
Tato adresa se používá ke správné instalaci ovladačů a provozu na uzlech založených na GPU. |
us.download.nvidia.com |
HTTPS:443 |
Tato adresa se používá ke správné instalaci ovladačů a provozu na uzlech založených na GPU. |
apt.dockerproject.org |
HTTPS:443 |
Tato adresa se používá ke správné instalaci ovladačů a provozu na uzlech založených na GPU. |
Windows uzlů založených na serveru
Požadovaný plně kvalifikovaný název domény / pravidla aplikace
Pro použití fondů uzlů založených na Windows Server se vyžaduje následující pravidla plně kvalifikovaných názvů domény nebo aplikací:
| Cílový plně kvalifikovaný název domény | Port | Použití |
|---|---|---|
onegetcdn.azureedge.net, go.microsoft.com |
HTTPS:443 |
Instalace binárních souborů souvisejících s Windows |
*.mp.microsoft.com, www.msftconnecttest.com, ctldl.windowsupdate.com |
HTTP:80 |
Instalace binárních souborů souvisejících s Windows |
Doplňky a integrace AKS
Azure Monitor pro kontejnery
Existují dvě možnosti, jak poskytnout přístup k Azure Monitor pro kontejnery. Můžete povolit Azure Monitor ServiceTag nebo poskytnout přístup k požadovanému plně kvalifikovaným názvu domény nebo pravidlům aplikace.
Požadovaná pravidla sítě
Vyžaduje se následující plně kvalifikovaný název domény nebo pravidla aplikace:
| Cílový koncový bod | Protokol | Port | Použití |
|---|---|---|---|
ServiceTag - AzureMonitor:443 |
TCP | 443 | Tento koncový bod slouží k odesílání dat a protokolů metrik do Azure Monitor a Log Analytics. |
Požadovaný plně kvalifikovaný název domény / pravidla aplikace
Pro clustery AKS, které mají povolené Azure Monitor pro kontejnery, se vyžaduje následující pravidla plně kvalifikovaných Azure Monitor aplikací:
| FQDN | Port | Použití |
|---|---|---|
| dc.services.visualstudio.com | HTTPS:443 |
Tento koncový bod se používá pro metriky a monitorování telemetrie pomocí Azure Monitor. |
| *.ods.opinsights.azure.com | HTTPS:443 |
Tento koncový bod používá Azure Monitor pro ingestování dat Log Analytics. |
| *.oms.opinsights.azure.com | HTTPS:443 |
Tento koncový bod používá omsagent, který se používá k ověřování služby Log Analytics. |
| *.monitoring.azure.com | HTTPS:443 |
Tento koncový bod slouží k odesílání dat metrik do Azure Monitor. |
Azure Policy
Požadovaný plně kvalifikovaný název domény / pravidla aplikace
Pro clustery AKS s povoleným plně kvalifikovaným název domény nebo pravidly aplikací se Azure Policy domény.
| FQDN | Port | Použití |
|---|---|---|
data.policy.core.windows.net |
HTTPS:443 |
Tato adresa se používá k natažení zásad Kubernetes a hlášení stavu dodržování předpisů clusteru službě zásad. |
store.policy.core.windows.net |
HTTPS:443 |
Tato adresa se používá k vyžadování artefaktů Gatekeeperu z předdefinových zásad. |
dc.services.visualstudio.com |
HTTPS:443 |
Azure Policy, který odesílá telemetrická data do koncového bodu služby Applications Insights. |
Azure China 21Vianet požadovaný plně kvalifikovaný název domény / pravidla aplikace
Pro clustery AKS s povoleným plně kvalifikovaným název domény nebo pravidly aplikací se Azure Policy domény.
| FQDN | Port | Použití |
|---|---|---|
data.policy.azure.cn |
HTTPS:443 |
Tato adresa se používá k natažení zásad Kubernetes a hlášení stavu dodržování předpisů clusteru službě zásad. |
store.policy.azure.cn |
HTTPS:443 |
Tato adresa se používá k vyžadování artefaktů Gatekeeperu z předdefinových zásad. |
Požadovaný plně kvalifikovaný název domény nebo pravidla aplikace pro Azure US Government
Pro clustery AKS s povoleným plně kvalifikovaným název domény nebo pravidly aplikací se Azure Policy domény.
| FQDN | Port | Použití |
|---|---|---|
data.policy.azure.us |
HTTPS:443 |
Tato adresa se používá k natažení zásad Kubernetes a hlášení stavu dodržování předpisů clusteru službě zásad. |
store.policy.azure.us |
HTTPS:443 |
Tato adresa se používá k vyžadování artefaktů Gatekeeperu z předdefinových zásad. |
Rozšíření clusteru
Požadovaný plně kvalifikovaný název domény / pravidla aplikace
Pro používání rozšíření clusteru v clusterech AKS se vyžaduje následující pravidla plně kvalifikovaných názvů domény nebo aplikací.
| FQDN | Port | Použití |
|---|---|---|
<region>.dp.kubernetesconfiguration.azure.com |
HTTPS:443 |
Tato adresa se používá k načtení informací o konfiguraci ze služby Rozšíření clusteru a hlášení stavu rozšíření službě. |
mcr.microsoft.com, *.data.mcr.microsoft.com |
HTTPS:443 |
Tato adresa je nutná k vyžadování imagí kontejnerů pro instalaci agentů rozšíření clusteru v clusteru AKS. |
Požadovaný plně kvalifikovaný název domény nebo pravidla aplikace pro Azure US Government
Pro používání rozšíření clusteru v clusterech AKS se vyžaduje následující pravidla plně kvalifikovaných názvů domény nebo aplikací.
| FQDN | Port | Použití |
|---|---|---|
<region>.dp.kubernetesconfiguration.azure.us |
HTTPS:443 |
Tato adresa se používá k načtení informací o konfiguraci ze služby Rozšíření clusteru a hlášení stavu rozšíření službě. |
mcr.microsoft.com, *.data.mcr.microsoft.com |
HTTPS:443 |
Tato adresa je nutná k vyžadování imagí kontejnerů pro instalaci agentů rozšíření clusteru v clusteru AKS. |
Omezení odchozího provozu pomocí služby Azure Firewall
Azure Firewall tuto konfiguraci zjednodušuje Azure Kubernetes Service ( ) značky plně kvalifikovaných název AzureKubernetesService domény.
Poznámka
Značka plně kvalifikovaných název domény obsahuje všechny výše uvedené plně kvalifikovaný název domény a je automaticky aktuální.
Pro produkční scénáře doporučujeme mít minimálně 20 front-endových IP Azure Firewall, abyste se vyhnuli problémům s vyčerpání portů SNAT.
Níže je příklad architektury nasazení:

- Veřejný příchozí přenos dat je nucen procházet filtry brány firewall.
- Uzly agentů AKS jsou izolované ve vyhrazené podsíti.
- Azure Firewall se nasazovat ve vlastní podsíti.
- Pravidlo DNAT přeloží veřejnou IP adresu brány FW na IP adresu front-endu lb.
- Odchozí požadavky začínají z uzlů agentů do Azure Firewall IP adresy pomocí trasy definované uživatelem.
- Požadavky z uzlů agenta AKS se budou řídit UDR, která byla umístěna v podsíti, do které byl cluster AKS nasazen.
- Azure Firewall z virtuální sítě z front-endu veřejné IP adresy
- Přístup k veřejnému internetu nebo jiným službám Azure se toky do a z IP adresy front-endu brány firewall
- Volitelně je přístup k řídicí rovině AKS chráněný autorizovanými rozsahy IP adres serveru rozhraní API,které zahrnují veřejnou front-endovou IP adresu brány firewall.
- Interní provoz
Následující kroky využívají značku plně Azure Firewall k omezení odchozího provozu z clusteru AKS a poskytují příklad konfigurace veřejného příchozího provozu AzureKubernetesService přes bránu firewall.
Nastavení konfigurace prostřednictvím proměnných prostředí
Definujte sadu proměnných prostředí, které se mají použít při vytváření prostředků.
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"
Vytvoření virtuální sítě s několika podsítěmi
Zřídit virtuální síť se dvěma samostatnými podsítěmi, jednu pro cluster, jednu pro bránu firewall. Volitelně můžete také vytvořit jednu pro příchozí příchozí provoz služby.

Vytvořte skupinu prostředků pro uložení všech prostředků.
# Create Resource Group
az group create --name $RG --location $LOC
Vytvořte virtuální síť se dvěma podsítěmi pro hostování clusteru AKS a Azure Firewall. Každá z nich bude mít vlastní podsíť. Pojďme začít používat AKS síť.
# 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
Vytvoření a nastavení Azure Firewall s UDR
Musí být nakonfigurovaná pravidla příchozího a odchozího Azure Firewall. Hlavním účelem brány firewall je umožnit organizacím konfigurovat podrobná pravidla příchozího provozu a odchozí přenos dat do clusteru AKS a z něj.

Důležité
Pokud váš cluster nebo aplikace vytvoří velký počet odchozích připojení směrovaných na stejnou nebo malou podmnožinu cílů, budete možná potřebovat víc IP adres front-endu, abyste se vyhnuli maxingům portů na front-endu. Další informace o tom, jak vytvořit bránu firewall Azure s více IP adresami, najdete tady .
Vytvořte prostředek veřejné IP adresy standardní SKU, který bude použit jako Azure Firewall adresa front-endu.
az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
Zaregistrujte verzi Preview rozhraní příkazového řádku pro vytvoření Azure Firewall.
# 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
IP adresa, kterou jste vytvořili dříve, se teď dá přiřadit ke front-endu brány firewall.
Poznámka
Nastavení veřejné IP adresy na Azure Firewall může trvat několik minut. Aby bylo možné využít plně kvalifikovaný název domény u pravidel sítě, potřebujeme povolený proxy server DNS, pokud je povolená brána firewall, bude naslouchat na portu 53 a předává požadavky DNS na výše uvedený server DNS. To umožní bráně firewall automaticky přeložit tento plně kvalifikovaný název domény.
# 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
Po úspěšném dokončení předchozího příkazu uložte IP adresu front-endu firewallu pro pozdější konfiguraci.
# 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)
Poznámka
Pokud používáte zabezpečený přístup k serveru rozhraní AKS API s povolenými rozsahy IP adres, musíte přidat veřejnou IP adresu brány firewall do povoleného rozsahu IP adres.
Vytvoření UDR s segmentem směrování na Azure Firewall
Azure automaticky směruje provoz mezi podsítěmi Azure, virtuálními sítěmi a místními sítěmi. Pokud chcete změnit některý z výchozích směrování Azure, provedete to tak, že vytvoříte směrovací tabulku.
Vytvořte prázdnou směrovací tabulku, kterou chcete přidružit k dané podsíti. Směrovací tabulka bude definovat další segment směrování, jak Azure Firewall vytvořili výše. Každá podsíť může mít přidruženou žádnou nebo jednu směrovací tabulku.
# 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
Informace o tom, jak můžete přepsat výchozí systémové trasy Azure nebo přidat další trasy do směrovací tabulky podsítě, najdete v dokumentaci k tabulce směrování virtuální sítě .
Přidávání pravidel brány firewall
Níže jsou uvedená tři Síťová pravidla, která můžete použít ke konfiguraci brány firewall, možná budete muset tato pravidla přizpůsobit v závislosti na vašem nasazení. První pravidlo umožňuje přístup k portu 9000 přes protokol TCP. Druhé pravidlo umožňuje přístup k portům 1194 a 123 přes protokol UDP (Pokud provádíte nasazení do Azure Čína 21Vianet, budete možná potřebovat Další). Obě tato pravidla budou umožňovat jenom provoz směřující do oblasti Azure s CIDR, kterou používáme, v tomto případě Východní USA. Nakonec přidáme třetí pravidlo sítě, ve kterém se otevírají porty 123 až do ntp.ubuntu.com plně kvalifikovaného názvu domény přes UDP (přidání plně kvalifikovaného názvu domény jako pravidlo sítě je jednou z konkrétních funkcí Azure firewall a budete je muset při použití vlastních možností přizpůsobit).
Po nastavení síťových pravidel přidáme také pravidlo aplikace pomocí nástroje AzureKubernetesService , které pokrývá všechny potřebné plně kvalifikované názvy domén, které jsou přístupné prostřednictvím portu TCP 443 a portu 80.
# 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
Další informace o službě Azure Firewall najdete v dokumentaci k Azure firewall .
Přidružení směrovací tabulky k AKS
K přidružení clusteru k bráně firewall musí vyhrazená podsíť pro podsíť clusteru odkazovat na tabulku směrování vytvořenou výše. Přidružení se dá udělat vyvoláním příkazu do virtuální sítě, která drží cluster i bránu firewall k aktualizaci směrovací tabulky podsítě clusteru.
# 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
Nasazení AKS s odchozím typem UDR do existující sítě
Cluster AKS se teď dá nasadit do existující virtuální sítě. Použijeme také odchozí typ userDefinedRouting . Tato funkce zajišťuje, že veškerý odchozí provoz bude vynucený přes bránu firewall a nebudou existovat žádné další výstupní cesty (ve výchozím nastavení se dá použít Load Balancer odchozího typu).

Vytvoření instančního objektu s přístupem ke zřízení v existující virtuální síti
Identitu clusteru (spravovanou identitu nebo instanční objekt) používá AKS k vytváření prostředků clusteru. instanční objekt, který se předává v čase vytvoření, se používá k vytvoření základních prostředků AKS, jako jsou Storage prostředky, ip adresy a nástroje pro vyrovnávání zatížení používané v AKS (místo toho můžete také použít spravovanou identitu ). Pokud nejsou níže udělená příslušná oprávnění, nebudete moct zřídit cluster AKS.
# Create SP and Assign Permission to Virtual Network
az ad sp create-for-rbac -n "${PREFIX}sp"
Nyní nahraďte APPID a PASSWORD níže objektem AppID a heslo instančního objektu, které jsou automaticky generovány předchozím výstupem příkazu. Odkaz na ID prostředku virtuální sítě vám poskytne oprávnění k instančnímu objektu, aby AKS mohli do něj nasadit prostředky.
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"
Tadymůžete ověřit podrobná oprávnění, která jsou potřeba.
Poznámka
Pokud používáte modul plug-in kubenet Network, budete muset pro předem vytvořenou směrovací tabulku přidělit oprávnění instančního objektu AKS nebo spravovaná identita, protože kubenet vyžaduje, aby tabulka směrování přidala pravidla směrování nezbytné.
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"
Nasazení AKS
Cluster AKS se nakonec dá nasadit do existující podsítě, kterou jsme pro cluster vyhrazujeme. Cílová podsíť, do které se má nasadit, je definována s proměnnou prostředí $SUBNETID . V předchozích krocích jsme nedefinovali $SUBNETID proměnnou. Chcete-li nastavit hodnotu ID podsítě, můžete použít následující příkaz:
SUBNETID=$(az network vnet subnet show -g $RG --vnet-name $VNET_NAME --name $AKSSUBNET_NAME --query id -o tsv)
Budete definovat typ odchozího připojení pro použití UDR, který již v podsíti existuje. Tato konfigurace umožní AKS přeskočit nastavení a zřizování IP adres pro nástroj pro vyrovnávání zatížení.
Důležité
Další informace o odchozím typu UDR, včetně omezení, najdete v tématu odchozí výstupní typ udr.
Tip
Do nasazení clusteru, jako je například soukromý cluster, lze přidat další funkce.
Funkci AKS pro rozsahy IP adres autorizovaných serverem API lze přidat k omezení přístupu serveru rozhraní API pouze k veřejnému koncovému bodu brány firewall. Funkce povolených rozsahů IP adres je v diagramu označena jako volitelná. Když povolíte funkci schváleného rozsahu IP adres pro omezení přístupu k serveru rozhraní API, nástroje pro vývojáře musí použít JumpBox z virtuální sítě brány firewall nebo musíte přidat všechny koncové body pro vývojáře do povoleného rozsahu IP adres.
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
Povolení přístupu pro vývojáře k serveru rozhraní API
Pokud jste v předchozím kroku použili schválené rozsahy IP adres pro cluster, musíte přidat IP adresy vývojářských nástrojů do seznamu clusterů AKS schválených rozsahů IP adres, abyste z něj mohli získat přístup k serveru rozhraní API. Další možností je nakonfigurovat JumpBox s potřebnými nástroji v samostatné podsíti ve virtuální síti brány firewall.
Pomocí následujícího příkazu přidejte do schválených rozsahů další IP adresu.
# 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
K nakonfigurování kubectl připojení k nově vytvořenému clusteru Kubernetes použijte příkaz [az AKS Get-Credentials] [az-AKS-Get-Credentials].
az aks get-credentials -g $RG -n $AKSNAME
Nasazení veřejné služby
Teď můžete začít vystavovat služby a nasazovat aplikace do tohoto clusteru. V tomto příkladu vystavíme veřejnou službu, ale můžete se také rozhodnout vystavit interní službu prostřednictvím interního nástroje pro vyrovnávání zatížení.

Nasaďte aplikaci hlasovací aplikace v Azure zkopírováním níže uvedeného YAML do souboru s názvem example.yaml .
# 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
Nasaďte službu spuštěním:
kubectl apply -f example.yaml
Přidat pravidlo DNAT do Azure Firewall
Důležité
Když použijete Azure Firewall k omezení odchozího provozu a vytvoření trasy definované uživatelem (UDR) k vynucení veškerého odchozího provozu, ujistěte se, že jste v bráně firewall vytvořili příslušné pravidlo DNAT pro správné povolení provozu příchozího přenosu dat. Použití Azure Firewall s UDR v důsledku asymetrického směrování narušuje nastavení příchozího přenosu dat. (K tomuto problému dochází, pokud má podsíť AKS výchozí trasu, která přechází na soukromou IP adresu brány firewall, ale používáte veřejný Nástroj pro vyrovnávání zatížení – příchozí nebo Kubernetes služba typu: Vyrovnávání zatížení sítě). V tomto případě se příchozí provoz nástroje pro vyrovnávání zatížení přijímá prostřednictvím veřejné IP adresy, ale návratová cesta prochází přes privátní IP adresu brány firewall. Vzhledem k tomu, že brána firewall je stavová, dojde k vrácení vráceného paketu, protože brána firewall neví o zavedené relaci. Informace o tom, jak integrovat Azure Firewall s vaším nástrojem pro vyrovnávání zatížení pro příchozí přenosy nebo služby, najdete v tématu věnovaném integraci Azure firewall s Azure Standard Load Balancer.
Aby bylo možné konfigurovat příchozí připojení, musí být do Azure Firewall zapsáno pravidlo DNAT. Pro otestování připojení ke clusteru je definováno pravidlo pro veřejnou IP adresu front-endu firewall pro směrování do interní IP adresy vystavené interní službou.
Cílovou adresu lze přizpůsobit, protože se jedná o port brány firewall, pro který má být k dispozici. Přeložená adresa musí být IP adresa interního nástroje pro vyrovnávání zatížení. Přeložený port musí být vystavený port pro vaši službu Kubernetes.
Budete muset zadat interní IP adresu přiřazenou k nástroji pro vyrovnávání zatížení, který vytvořila služba Kubernetes. Načtěte adresu spuštěním:
kubectl get services
Požadovaná IP adresa bude uvedena ve sloupci EXTERNAL-IP, podobně jako v následujícím příkladu.
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
Získejte IP adresu služby spuštěním:
SERVICE_IP=$(kubectl get svc voting-app -o jsonpath='{.status.loadBalancer.ingress[*].ip}')
Přidejte pravidlo překladu adres (NAT) tak, že spustíte:
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
Ověření možností připojení
V prohlížeči přejděte na IP adresu front-endu Azure Firewall a ověřte připojení.
Měla by se zobrazit hlasovací aplikace AKS. V tomto příkladu byla veřejná IP adresa brány firewall 52.253.228.132 .

Vyčištění prostředků
Pokud chcete vyčistit prostředky Azure, odstraňte skupinu prostředků AKS.
az group delete -g $RG
Další kroky
V tomto článku jste zjistili, jaké porty a adresy je možné povolit, pokud chcete omezit odchozí provoz pro cluster. Také jste zjistili, jak zabezpečit odchozí provoz pomocí Azure Firewall.
V případě potřeby můžete výše uvedené kroky zobecnit a předat provoz do vašeho upřednostňovaného řešení pro odchozí přenosy podle dokumentace k typu userDefinedRoute odchozích přenosů.
Pokud chcete omezit způsob, jakým pody mezi sebou komunikují, a East-West provozu v rámci clusteru najdete v tématu Zabezpečení provozu mezi pody pomocí zásad sítě v AKS.