Vytvoření clusteru Azure Kubernetes Service (AKS) v izolované síti (Preview)
Organizace obvykle mají přísné požadavky na zabezpečení a dodržování předpisů pro regulaci odchozího (odchozího) síťového provozu z clusteru, aby se eliminovala rizika exfiltrace dat. Ve výchozím nastavení mají clustery Azure Kubernetes Service (AKS) neomezený odchozí přístup k internetu. Tato úroveň síťového přístupu umožňuje uzlům a službám, které spouštíte, přistupovat k externím prostředkům podle potřeby. Pokud chcete omezit odchozí provoz, musí být k údržbě úloh údržby clusteru přístupný omezený počet portů a adres.
Jedním z řešení zabezpečení odchozích adres je použití zařízení brány firewall, které může řídit odchozí provoz na základě názvů domén.
Dalším řešením je izolovaný cluster AKS v síti (Preview), které zjednodušuje nastavení odchozích omezení pro cluster, který je mimo provoz. Izolovaný cluster AKS v síti snižuje riziko exfiltrace dat nebo neúmyslného vystavení veřejných koncových bodů clusteru.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Než začnete
- Přečtěte si koncepční přehled této funkce, která vysvětluje, jak fungují clustery izolované v síti. Článek s přehledem:
- Vysvětluje dvě metody přístupu, AKS spravované ACR nebo BYO ACR, můžete si vybrat z tohoto článku.
- Popisuje aktuální omezení.
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Tento článek vyžaduje verzi 2.63.0 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je tam už nainstalovaná nejnovější verze.
aks-preview
Nainstalujte rozšíření Azure CLI verze 9.0.0b2 nebo novější.Pokud rozšíření ještě
aks-preview
nemáte, nainstalujte hoaz extension add
pomocí příkazu.az extension add --name aks-preview
Pokud už rozšíření máte
aks-preview
, aktualizujte hoaz extension update
, abyste pomocí příkazu měli nejnovější verzi.az extension update --name aks-preview
NetworkIsolatedClusterPreview
Pomocí příkazu az feature register zaregistrujte příznak funkce.az feature register --namespace Microsoft.ContainerService --name NetworkIsolatedClusterPreview
Pomocí příkazu az feature show ověřte stav registrace. Zobrazení stavu Zaregistrované trvá několik minut:
az feature show --namespace Microsoft.ContainerService --name NetworkIsolatedClusterPreview
Poznámka:
Pokud se rozhodnete vytvořit izolovaný síťový cluster s integrací virtuální sítě API Serveru nakonfigurovanou pro privátní přístup k serveru ROZHRANÍ API, budete muset zopakovat výše uvedené kroky a zaregistrovat
EnableAPIServerVnetIntegrationPreview
příznak funkce. Pokud se stav projeví jako zaregistrovaný, aktualizujte registraciMicrosoft.ContainerService
Microsoft.ContainerRegistry
poskytovatelů prostředků pomocí příkazu az provider register :az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.ContainerRegistry
Pokud zvolíte možnost Přineste si vlastní (BYO) Azure Container Registry (ACR), musíte zajistit, aby služba ACR splňovala následující požadavky:
- Pro ACR musí být povolený anonymní přístup k vyžádání změn.
- Služba ACR musí být na úrovni služby SKU Premium.
(Volitelné) Pokud chcete použít libovolnou volitelnou funkci AKS nebo doplněk, který vyžaduje odchozí síťový přístup, tento dokument obsahuje požadavky na odchozí spojení pro každou funkci. Tento dokument také uvádí funkce nebo doplňky, které podporují integraci privátního propojení pro zabezpečené připojení z virtuální sítě clusteru. Pokud integrace privátního propojení není pro žádnou z těchto funkcí dostupná, je možné cluster nastavit s uživatelsky definovanou směrovací tabulkou a službou Azure Firewall na základě pravidel sítě a pravidel aplikací požadovaných pro tuto funkci.
Poznámka:
Následující rozšíření clusteru AKS se zatím v izolovaných síťových clusterech nepodporují:
Nasazení síťového izolovaného clusteru pomocí AKS spravovaného ACR
AKS v této možnosti vytvoří, spravuje a srovná prostředek ACR. Nemusíte přiřazovat žádná oprávnění ani spravovat ACR. AKS spravuje pravidla mezipaměti, privátní propojení a privátní koncový bod používaný v izolovaném síťovém clusteru.
Vytvoření izolovaného clusteru v síti
Při vytváření síťového izolovaného clusteru AKS můžete zvolit jeden z následujících režimů privátního clusteru – Integrace privátního propojení nebo virtuální sítě serveru API.
Bez ohledu na režim, který vyberete, nastavíte --bootstrap-artifact-source
a --outbound-type
nastavíte parametry.
--bootstrap-artifact-source
pro vyžádání imagí se dá nastavit na buď Direct
nebo Cache
odpovídající použití přímého MCR (NE izolované sítě) a privátní služby ACR (izolovaná síť).
Může --outbound-type parameter
být nastavena na hodnotu nebo block
none
. Pokud je typ odchozího připojení nastavený na none
, AKS nenastaví pro cluster žádná odchozí připojení, což uživateli umožní nakonfigurovat je samostatně. Pokud je typ odchozího připojení nastavený na blokování, jsou všechna odchozí připojení blokovaná.
Privátní propojení
Spuštěním příkazu az aks create s parametrem a spuštěním příkazu az aks create vytvořte cluster AKS v izolované síti založené na privátním propojení.--outbound-type
--bootstrap-artifact-source
--enable-private-cluster
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --bootstrap-artifact-source Cache --outbound-type none --network-plugin azure --enable-private-cluster
Integrace virtuální sítě serveru API
Spuštěním příkazu az aks create s parametrem --bootstrap-artifact-source
a --enable-private-cluster
--enable-apiserver-vnet-integration
--outbound-type
parametry vytvořte cluster AKS izolovaný v izolované síti AKS nakonfigurovaný s integrací virtuální sítě API Serveru.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --bootstrap-artifact-source Cache --outbound-type none --network-plugin azure --enable-private-cluster --enable-apiserver-vnet-integration
Aktualizace existujícího clusteru AKS na izolovaný typ sítě
Pokud byste raději povolili izolaci sítě v existujícím clusteru AKS místo vytvoření nového clusteru, použijte příkaz az aks update .
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --outbound-type none
Po povolení funkce se všechny nově přidané uzly můžou úspěšně spustit bez výchozího přenosu dat. Pokud povolíte izolaci sítě v existujícím clusteru, mějte na paměti, že potřebujete ručně znovu vytvořit všechny existující uzly.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Důležité
Po povolení režimu izolace sítě pro existující cluster nezapomeňte znovu vytvořit fondy uzlů clusteru. Jinak se tato funkce pro cluster neprojeví.
Nasazení síťového izolovaného clusteru s využitím vlastní služby ACR
AKS podporuje přineste si vlastní (BYO) ACR. Pokud chcete podporovat scénář BYO ACR, musíte před vytvořením clusteru AKS nakonfigurovat privátní koncový bod ACR a zónu privátního DNS.
Následující kroky ukazují, jak připravit tyto prostředky:
- Vlastní virtuální síť a podsítě pro AKS a ACR
- Pravidlo mezipaměti ACR, privátní koncový bod a privátní zóna DNS.
- Vlastní identita řídicí roviny a identita kubeletu
Krok 1: Vytvoření virtuální sítě a podsítí
Výchozí odchozí přístup pro podsíť AKS musí být false.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az network vnet create --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --address-prefixes 192.168.0.0/16
az network vnet subnet create --name ${AKS_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.1.0/24 --default-outbound-access false
SUBNET_ID=$(az network vnet subnet show --name ${AKS_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --query 'id' --output tsv)
az network vnet subnet create --name ${ACR_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.2.0/24 --private-endpoint-network-policies Disabled
Krok 2: Vytvoření ACR a povolení mezipaměti artefaktů
Vytvořte ACR pomocí privátního propojení a anonymního přístupu k vyžádání změn.
az acr create --resource-group ${RESOURCE_GROUP} --name ${REGISTRY_NAME} --sku Premium --public-network-enabled false az acr update --resource-group ${RESOURCE_GROUP} --name ${REGISTRY_NAME} --anonymous-pull-enabled true REGISTRY_ID=$(az acr show --name ${REGISTRY_NAME} -g ${RESOURCE_GROUP} --query 'id' --output tsv)
Vytvořte pravidlo mezipaměti ACR, které uživatelům umožní ukládat image kontejnerů MCR do mezipaměti v nové službě ACR.
az acr cache create -n acr-cache-rule -r ${REGISTRY_NAME} -g ${RESOURCE_GROUP} --source-repo "mcr.microsoft.com/*" --target-repo "*"
Krok 3: Vytvoření privátního koncového bodu pro ACR
az network private-endpoint create --name myPrivateEndpoint --resource-group ${RESOURCE_GROUP} --vnet-name ${VNET_NAME} --subnet ${ACR_SUBNET_NAME} --private-connection-resource-id ${REGISTRY_ID} --group-id registry --connection-name myConnection
NETWORK_INTERFACE_ID=$(az network private-endpoint show --name myPrivateEndpoint --resource-group ${RESOURCE_GROUP} --query 'networkInterfaces[0].id' --output tsv)
REGISTRY_PRIVATE_IP=$(az network nic show --ids ${NETWORK_INTERFACE_ID} --query "ipConfigurations[?privateLinkConnectionProperties.requiredMemberName=='registry'].privateIPAddress" --output tsv)
DATA_ENDPOINT_PRIVATE_IP=$(az network nic show --ids ${NETWORK_INTERFACE_ID} --query "ipConfigurations[?privateLinkConnectionProperties.requiredMemberName=='registry_data_$LOCATION'].privateIPAddress" --output tsv)
Krok 4: Vytvoření privátní zóny DNS a přidání záznamů
Vytvořte privátní zónu DNS s názvem privatelink.azurecr.io
. Přidejte záznamy pro koncový bod {REGISTRY_NAME}.azurecr.io
REST registru a koncový bod {REGISTRY_NAME}.{REGISTRY_LOCATION}.data.azurecr.io
dat registru .
az network private-dns zone create --resource-group ${RESOURCE_GROUP} --name "privatelink.azurecr.io"
az network private-dns link vnet create --resource-group ${RESOURCE_GROUP} --zone-name "privatelink.azurecr.io" --name MyDNSLink --virtual-network ${VNET_NAME} --registration-enabled false
az network private-dns record-set a create --name ${REGISTRY_NAME} --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP}
az network private-dns record-set a add-record --record-set-name ${REGISTRY_NAME} --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP} --ipv4-address ${REGISTRY_PRIVATE_IP}
az network private-dns record-set a create --name ${REGISTRY_NAME}.${LOCATION}.data --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP}
az network private-dns record-set a add-record --record-set-name ${REGISTRY_NAME}.${LOCATION}.data --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP} --ipv4-address ${DATA_ENDPOINT_PRIVATE_IP}
Krok 5: Vytvoření řídicí roviny a identit kubeletu
Identita řídicí roviny
az identity create --name ${CLUSTER_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP}
CLUSTER_IDENTITY_RESOURCE_ID=$(az identity show --name ${CLUSTER_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'id' -o tsv)
CLUSTER_IDENTITY_PRINCIPAL_ID=$(az identity show --name ${CLUSTER_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'principalId' -o tsv)
Identita Kubeletu
az identity create --name ${KUBELET_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP}
KUBELET_IDENTITY_RESOURCE_ID=$(az identity show --name ${KUBELET_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'id' -o tsv)
KUBELET_IDENTITY_PRINCIPAL_ID=$(az identity show --name ${KUBELET_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'principalId' -o tsv)
Udělení oprávnění AcrPull pro identitu Kubelet
az role assignment create --role AcrPull --scope ${REGISTRY_ID} --assignee-object-id ${KUBELET_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal
Po nakonfigurování těchto prostředků můžete pokračovat vytvořením síťového izolovaného clusteru AKS s BYO ACR.
Krok 6: Vytvoření clusteru izolovaného v síti pomocí BYO ACR
Při vytváření síťového izolovaného clusteru AKS můžete zvolit jeden z následujících režimů privátního clusteru – Integrace privátního propojení nebo virtuální sítě serveru API.
Bez ohledu na režim, který vyberete, nastavíte --bootstrap-artifact-source
a --outbound-type
nastavíte parametry.
--bootstrap-artifact-source
pro vyžádání imagí se dá nastavit na buď Direct
nebo Cache
odpovídající použití přímého MCR (NE izolované sítě) a privátní služby ACR (izolovaná síť).
Může --outbound-type parameter
být nastavena na hodnotu nebo block
none
. Pokud je typ odchozího připojení nastavený na none
, AKS nenastaví pro cluster žádná odchozí připojení, což uživateli umožní nakonfigurovat je samostatně. Pokud je typ odchozího připojení nastavený na blokování, jsou všechna odchozí připojení blokovaná.
Privátní propojení
Spuštěním příkazu az aks create s požadovanými parametry vytvořte izolovaný cluster založený na privátním propojení, který přistupuje k ACR.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --vnet-subnet-id ${SUBNET_ID} --assign-identity ${CLUSTER_IDENTITY_RESOURCE_ID} --assign-kubelet-identity ${KUBELET_IDENTITY_RESOURCE_ID} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID} --outbound-type none --network-plugin azure --enable-private-cluster
Integrace virtuální sítě serveru API
V případě síťového izolovaného clusteru s integrací virtuální sítě serveru API nejprve vytvořte podsíť a přiřaďte správnou roli pomocí následujících příkazů:
az network vnet subnet create --name ${APISERVER_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.3.0/24
export APISERVER_SUBNET_ID=$(az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name ${VNET_NAME} --name ${APISERVER_SUBNET_NAME} --query id -o tsv)
az role assignment create --scope ${APISERVER_SUBNET_ID} --role "Network Contributor" --assignee-object-id ${CLUSTER_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal
Spuštěním příkazu az aks create s požadovanými parametry vytvořte izolovaný cluster AKS nakonfigurovaný s integrací virtuální sítě API Serveru a přístupem k ACR.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --vnet-subnet-id ${SUBNET_ID} --assign-identity ${CLUSTER_IDENTITY_RESOURCE_ID} --assign-kubelet-identity ${KUBELET_IDENTITY_RESOURCE_ID} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID} --outbound-type none --network-plugin azure --enable-apiserver-vnet-integration --apiserver-subnet-id ${APISERVER_SUBNET_ID}
Aktualizace existujícího clusteru AKS
Pokud byste raději povolili izolaci sítě v existujícím clusteru AKS místo vytvoření nového clusteru, použijte příkaz az aks update .
Při vytváření privátního koncového bodu a privátní zóny DNS pro BYO ACR použijte existující virtuální síť a podsítě existujícího clusteru AKS. Když přiřadíte oprávnění AcrPull k identitě kubeletu, použijte existující identitu kubeletu existujícího clusteru AKS.
Pokud chcete povolit síťovou izolovanou funkci v existujícím clusteru AKS, použijte následující příkaz:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID} --outbound-type none
Po povolení funkce izolovaného clusteru v síti se uzly v nově přidaném fondu uzlů můžou úspěšně spustit bez výchozího přenosu dat. Existující fondy uzlů je nutné znovu naimažovat, aby se nově škálovaný uzel mohl úspěšně spustit. Když funkci povolíte v existujícím clusteru, musíte ručně znovu vytvořit všechny existující uzly.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Důležité
Po povolení funkce izolovaného clusteru nezapomeňte znovu vytvořit fondy uzlů clusteru. Jinak se tato funkce pro cluster neprojeví.
Aktualizace ID služby ACR
Privátní službu ACR používanou s izolovaným clusterem AKS v síti je možné aktualizovat. K identifikaci ID prostředku ACR použijte az aks show
příkaz.
az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}
Aktualizace ID služby ACR se provádí spuštěním az aks update
příkazu s parametry --bootstrap-artifact-source
a --bootstrap-container-registry-resource-id
parametry.
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id <New BYO ACR resource ID>
Když aktualizujete ID služby ACR v existujícím clusteru, musíte ručně znovu vytvořit všechny existující uzly.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Důležité
Po povolení funkce izolovaného clusteru nezapomeňte znovu vytvořit fondy uzlů clusteru. Jinak se tato funkce pro cluster neprojeví.
Ověřte, že je povolený izolovaný cluster v síti.
Pokud chcete ověřit, jestli je funkce izolovaného clusteru v síti povolená, použijte příkaz az aks show .
az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}
Následující výstup ukazuje, že je funkce povolená na základě hodnot outboundType
vlastnosti (žádné nebo blokované) a artifactSource
vlastnosti (Cached).
"kubernetesVersion": "1.30.3",
"name": "myAKSCluster"
"type": "Microsoft.ContainerService/ManagedClusters"
"properties": {
...
"networkProfile": {
...
"outboundType": "none",
...
},
...
"bootstrapProfile": {
"artifactSource": "Cache",
"containerRegistryId": "/subscriptions/my-subscription-id/my-node-resource-group-name/providers/Microsoft.ContainerRegistry/registries/my-registry-name"
},
...
}
Zakázání izolovaného síťového clusteru
Zakažte funkci izolovaného clusteru v síti spuštěním az aks update
příkazu s parametry --bootstrap-artifact-source
a --outbound-type
parametry.
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Direct --outbound-type LoadBalancer
Když tuto funkci zakážete v existujícím clusteru, musíte ručně znovu vytvořit všechny existující uzly.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Důležité
Po zakázání funkce izolovaného clusteru v síti nezapomeňte znovu vytvořit fondy uzlů clusteru. Jinak se tato funkce pro cluster neprojeví.
Další kroky
V tomto článku jste zjistili, jaké porty a adresy chcete povolit, pokud chcete omezit odchozí provoz pro cluster.
Pokud chcete nastavit konfiguraci odchozích omezení pomocí služby Azure Firewall, přejděte na stránku Řízení odchozího provozu pomocí služby Azure Firewall v AKS.
Pokud chcete omezit, jak pody komunikují mezi sebou a omezeními provozu východ-západ v rámci clusteru, přečtěte si článek Zabezpečení provozu mezi pody pomocí zásad sítě v AKS.
Azure Kubernetes Service