Een AKS-cluster (Azure Kubernetes Service) met netwerkisolatie maken (preview)
Organisaties hebben doorgaans strikte beveiligings- en nalevingsvereisten om uitgaand (uitgaand) netwerkverkeer van een cluster te reguleren om risico's van gegevensexfiltratie te elimineren. Azure Kubernetes Service-clusters (AKS) hebben standaard onbeperkte uitgaande internettoegang. Met dit netwerktoegangsniveau kunnen knooppunten en services die u uitvoert toegang krijgen tot externe resources, indien nodig. Als u uitgaand verkeer wilt beperken, moet een beperkt aantal poorten en adressen toegankelijk zijn voor het onderhouden van goede clusteronderhoudstaken.
Eén oplossing voor het beveiligen van uitgaande adressen is het gebruik van een firewallapparaat dat uitgaand verkeer kan beheren op basis van domeinnamen.
Een andere oplossing, een netwerk geïsoleerd AKS-cluster (preview), vereenvoudigt het instellen van uitgaande beperkingen voor een cluster. Een netwerk geïsoleerd AKS-cluster vermindert het risico op gegevensexfiltratie of onbedoelde blootstelling van openbare eindpunten van het cluster.
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals is' en 'als beschikbaar' en ze worden uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Voordat u begint
- Lees het conceptuele overzicht van deze functie, waarin wordt uitgelegd hoe netwerk-geïsoleerde clusters werken. Het overzichtsartikel bevat ook:
- In dit artikel worden de twee toegangsmethoden uitgelegd: ACR of BYO ACR die door AKS worden beheerd.
- Beschrijft de huidige beperkingen.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Voor dit artikel is versie 2.63.0 of hoger van de Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie daar al geïnstalleerd.
Installeer de
aks-preview
Azure CLI-extensie versie 9.0.0b2 of hoger.Als u de
aks-preview
extensie nog niet hebt, installeert u deze met behulp van deaz extension add
opdracht.az extension add --name aks-preview
Als u de extensie al hebt, werkt u deze
aks-preview
bij om te controleren of u de nieuwste versie hebt met behulp van deaz extension update
opdracht.az extension update --name aks-preview
Registreer de
NetworkIsolatedClusterPreview
functievlag met behulp van de opdracht az feature register .az feature register --namespace Microsoft.ContainerService --name NetworkIsolatedClusterPreview
Controleer de registratiestatus met behulp van de opdracht az feature show . Het duurt enkele minuten voordat de status Geregistreerd wordt weergegeven:
az feature show --namespace Microsoft.ContainerService --name NetworkIsolatedClusterPreview
Notitie
Als u ervoor kiest om een netwerkisolatiecluster te maken met API Server VNet-integratie die is geconfigureerd voor privétoegang van de API-server, moet u de bovenstaande stappen herhalen om ook de functievlag te registreren
EnableAPIServerVnetIntegrationPreview
. Wanneer de status Geregistreerd is, vernieuwt u de registratie van deMicrosoft.ContainerService
enMicrosoft.ContainerRegistry
resourceproviders met behulp van de opdracht az provider register:az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.ContainerRegistry
Als u de optie Bring Your Own (BYO) Azure Container Registry (ACR) kiest, moet u ervoor zorgen dat de ACR voldoet aan de volgende vereisten:
- Anonieme pull-toegang moet zijn ingeschakeld voor de ACR.
- De ACR moet van de Premium SKU-servicelaag zijn
(Optioneel) Als u een optionele AKS-functie of invoegtoepassing wilt gebruiken waarvoor uitgaande netwerktoegang is vereist, bevat dit document de uitgaande vereisten voor elke functie. In dit document worden ook de functies of invoegtoepassingen opgesomd die ondersteuning bieden voor private link-integratie voor beveiligde verbindingen vanuit het virtuele netwerk van het cluster. Als private link-integratie niet beschikbaar is voor een van deze functies, kan het cluster worden ingesteld met een door de gebruiker gedefinieerde routeringstabel en een Azure Firewall op basis van de netwerkregels en toepassingsregels die vereist zijn voor die functie.
Notitie
De volgende AKS-clusterextensies worden nog niet ondersteund op geïsoleerde netwerkclusters:
Een netwerkisolatiecluster implementeren met AKS-beheerde ACR
AKS maakt, beheert en verzoent een ACR-resource in deze optie. U hoeft geen machtigingen toe te wijzen of de ACR te beheren. AKS beheert de cacheregels, private link en het privé-eindpunt dat wordt gebruikt in het geïsoleerde netwerkcluster.
Een netwerkisolatiecluster maken
Wanneer u een geïsoleerde AKS-netwerkcluster maakt, kunt u een van de volgende privéclustermodi kiezen: Private Link of API Server Vnet-integratie.
Ongeacht de modus die u selecteert, stelt u in --bootstrap-artifact-source
en --outbound-type
parameters.
--bootstrap-artifact-source
kan worden ingesteld op of Direct
Cache
overeenkomen met het gebruik van een directe MCR (NIET-netwerk geïsoleerd) en een privé-ACR (netwerk geïsoleerd) voor respectievelijk pull-installatiekopieën.
De --outbound-type parameter
kan worden ingesteld op of none
block
. Als het uitgaande type is ingesteld op none
, stelt AKS geen uitgaande verbindingen in voor het cluster, zodat de gebruiker deze zelf kan configureren. Als het uitgaande type is ingesteld op blokkeren, worden alle uitgaande verbindingen geblokkeerd.
Private Link
Maak een op private link gebaseerd netwerk geïsoleerd AKS-cluster door de opdracht az aks create uit te voeren met --bootstrap-artifact-source
, --enable-private-cluster
en --outbound-type
parameters.
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
VNet-integratie van API Server
Maak een netwerk geïsoleerd AKS-cluster dat is geconfigureerd met API Server VNet-integratie door de opdracht az aks create uit te voeren met--bootstrap-artifact-source
, --enable-private-cluster
--enable-apiserver-vnet-integration
en --outbound-type
parameters.
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
Een bestaand AKS-cluster bijwerken naar een geïsoleerd netwerktype
Als u liever netwerkisolatie op een bestaand AKS-cluster inschakelt in plaats van een nieuw cluster te maken, gebruikt u de opdracht az aks update .
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --outbound-type none
Nadat de functie is ingeschakeld, kunnen alle nieuw toegevoegde knooppunten zonder uitgaand verkeer worden opgestart. Wanneer u netwerkisolatie inschakelt op een bestaand cluster, moet u alle bestaande knooppunten handmatig opnieuw instellen.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Belangrijk
Vergeet niet om de knooppuntgroepen van het cluster opnieuw te maken nadat u de netwerkisolatiemodus voor een bestaand cluster hebt ingeschakeld. Anders wordt de functie niet van kracht voor het cluster.
Een netwerkisolatiecluster implementeren met bring your own ACR
AKS biedt ondersteuning voor bring your own (BYO) ACR. Ter ondersteuning van het BYO ACR-scenario moet u een privé-ACR-eindpunt en een privé-DNS-zone configureren voordat u het AKS-cluster maakt.
De volgende stappen laten zien hoe u deze resources voorbereidt:
- Aangepast virtueel netwerk en subnetten voor AKS en ACR.
- ACR, ACR-cacheregel, privé-eindpunt en privé-DNS-zone.
- Aangepaste identiteit van besturingsvlak en kubelet-identiteit.
Stap 1: Het virtuele netwerk en subnetten maken
De standaard uitgaande toegang voor het AKS-subnet moet onwaar zijn.
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
Stap 2: de ACR maken en de artefactcache inschakelen
Maak de ACR met de private link en anonieme pull-toegang.
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)
Maak een ACR-cacheregel zodat gebruikers MCR-containerinstallatiekopieën in de nieuwe ACR in de cache kunnen opslaan.
az acr cache create -n acr-cache-rule -r ${REGISTRY_NAME} -g ${RESOURCE_GROUP} --source-repo "mcr.microsoft.com/*" --target-repo "*"
Stap 3: Een privé-eindpunt maken voor de 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)
Stap 4: Een privé-DNS-zone maken en records toevoegen
Maak een privé-DNS-zone met de naam privatelink.azurecr.io
. Voeg de records voor het register REST-eindpunt {REGISTRY_NAME}.azurecr.io
en het registergegevenseindpunt {REGISTRY_NAME}.{REGISTRY_LOCATION}.data.azurecr.io
toe.
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}
Stap 5: Besturingsvlak- en Kubelet-identiteiten maken
Identiteit van besturingsvlak
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)
Kubelet-identiteit
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)
AcrPull-machtigingen verlenen voor de Kubelet-identiteit
az role assignment create --role AcrPull --scope ${REGISTRY_ID} --assignee-object-id ${KUBELET_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal
Nadat u deze resources hebt geconfigureerd, kunt u doorgaan met het maken van het geïsoleerde AKS-netwerkcluster met BYO ACR.
Stap 6: Een geïsoleerd netwerkcluster maken met behulp van de BYO ACR
Wanneer u een geïsoleerde AKS-netwerkcluster maakt, kunt u een van de volgende privéclustermodi kiezen: Private Link of API Server Vnet-integratie.
Ongeacht de modus die u selecteert, stelt u in --bootstrap-artifact-source
en --outbound-type
parameters.
--bootstrap-artifact-source
kan worden ingesteld op of Direct
Cache
overeenkomen met het gebruik van een directe MCR (NIET-netwerk geïsoleerd) en een privé-ACR (netwerk geïsoleerd) voor respectievelijk pull-installatiekopieën.
De --outbound-type parameter
kan worden ingesteld op of none
block
. Als het uitgaande type is ingesteld op none
, stelt AKS geen uitgaande verbindingen in voor het cluster, zodat de gebruiker deze zelf kan configureren. Als het uitgaande type is ingesteld op blokkeren, worden alle uitgaande verbindingen geblokkeerd.
Private Link
Maak een op private link gebaseerd netwerk geïsoleerd cluster dat toegang heeft tot uw ACR door de opdracht az aks create uit te voeren met de vereiste parameters.
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
VNet-integratie van API Server
Voor een netwerk geïsoleerd cluster met VNet-integratie van API-server maakt u eerst een subnet en wijst u de juiste rol toe met de volgende opdrachten:
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
Maak een netwerk geïsoleerd AKS-cluster dat is geconfigureerd met API Server VNet-integratie en open uw ACR door de opdracht az aks create uit te voeren met de vereiste parameters.
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}
Een bestaand AKS-cluster bijwerken
Als u liever netwerkisolatie op een bestaand AKS-cluster inschakelt in plaats van een nieuw cluster te maken, gebruikt u de opdracht az aks update .
Wanneer u het privé-eindpunt en de privé-DNS-zone voor de BYO ACR maakt, gebruikt u het bestaande virtuele netwerk en de subnetten van het bestaande AKS-cluster. Wanneer u de AcrPull-machtiging toewijst aan de kubelet-identiteit, gebruikt u de bestaande kubelet-identiteit van het bestaande AKS-cluster.
Gebruik de volgende opdracht om de netwerkisolatiefunctie in te schakelen op een bestaand AKS-cluster:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID} --outbound-type none
Nadat de netwerk-geïsoleerde clusterfunctie is ingeschakeld, kunnen knooppunten in de nieuw toegevoegde knooppuntgroep zonder uitgaand verkeer worden opgestart. U moet de installatiekopie van bestaande knooppuntgroepen opnieuw instellen, zodat nieuw geschaald knooppunt kan worden opgestart. Wanneer u de functie inschakelt op een bestaand cluster, moet u alle bestaande knooppunten handmatig opnieuw instellen.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Belangrijk
Vergeet niet om de knooppuntgroepen van het cluster opnieuw te maken nadat u de functie netwerkisolatiecluster hebt ingeschakeld. Anders wordt de functie niet van kracht voor het cluster.
Uw ACR-id bijwerken
Het is mogelijk om de persoonlijke ACR bij te werken die wordt gebruikt met een geïsoleerd AKS-netwerkcluster. Gebruik de az aks show
opdracht om de ACR-resource-id te identificeren.
az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}
Het bijwerken van de ACR-id wordt uitgevoerd door de opdracht uit te voeren met de az aks update
--bootstrap-artifact-source
en --bootstrap-container-registry-resource-id
parameters.
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id <New BYO ACR resource ID>
Wanneer u de ACR-id op een bestaand cluster bijwerkt, moet u alle bestaande knooppunten handmatig opnieuw in een installatiekopie maken.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Belangrijk
Vergeet niet om de knooppuntgroepen van het cluster opnieuw te maken nadat u de functie netwerkisolatiecluster hebt ingeschakeld. Anders wordt de functie niet van kracht voor het cluster.
Controleren of netwerkisolatiecluster is ingeschakeld
Gebruik de opdracht az aks show show om te controleren of de netwerkisolatieclusterfunctie is ingeschakeld
az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}
In de volgende uitvoer ziet u dat de functie is ingeschakeld, op basis van de waarden van de outboundType
eigenschap (geen of geblokkeerd) en artifactSource
eigenschap (cache).
"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"
},
...
}
Netwerkisolatiecluster uitschakelen
Schakel de netwerk-geïsoleerde clusterfunctie uit door de az aks update
opdracht uit te voeren met de --bootstrap-artifact-source
en --outbound-type
parameters.
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Direct --outbound-type LoadBalancer
Wanneer u de functie op een bestaand cluster uitschakelt, moet u alle bestaande knooppunten handmatig opnieuw in een installatiekopie maken.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Belangrijk
Vergeet niet om de knooppuntgroepen van het cluster opnieuw te maken nadat u de functie netwerkisolatiecluster hebt uitgeschakeld. Anders wordt de functie niet van kracht voor het cluster.
Volgende stappen
In dit artikel hebt u geleerd welke poorten en adressen u wilt toestaan als u uitgaand verkeer voor het cluster wilt beperken.
Als u de configuratie van uitgaande beperkingen wilt instellen met behulp van Azure Firewall, gaat u naar Uitgaand verkeer beheren met behulp van Azure Firewall in AKS.
Zie Verkeer tussen pods beveiligen tussen pods in AKS als u wilt beperken hoe pods communiceren tussen zichzelf en Oost-West-verkeer binnen het cluster.
Azure Kubernetes Service