Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A szervezetek általában szigorú biztonsági és megfelelőségi követelményekkel rendelkeznek a kimenő (kimenő) hálózati forgalom fürtből való szabályozásához az adatkiszivárgás kockázatának kiküszöbölése érdekében. Alapértelmezés szerint a standard SKU Azure Kubernetes Service (AKS) fürtök korlátlan kimenő internet-hozzáférést biztosítanak. A hálózati hozzáférés ezen szintje lehetővé teszi, hogy a futtatott csomópontok és szolgáltatások szükség szerint hozzáférjenek a külső erőforrásokhoz. Ha korlátozni szeretné a kimenő forgalmat, korlátozott számú portnak és címnek kell elérhetőnek lennie a fürt kifogástalan karbantartási feladatainak fenntartásához. Az AKS-fürtök kimenő hálózati és teljes tartománynévre vonatkozó szabályait tárgyaló fogalmi dokumentum tartalmazza az AKS-fürt számára szükséges végpontok listáját, valamint az opcionális bővítményeket és funkciókat.
A fürtből kimenő forgalom korlátozásának egyik gyakori megoldása egy tűzfaleszköz használata a forgalom tűzfalszabályok alapján történő korlátozására. A tűzfal akkor alkalmazható, ha az alkalmazás kimenő hozzáférést igényel, de ha a kimenő kéréseket ellenőrizni és védeni kell. A tűzfal kézi konfigurálása a kimenő forgalomhoz szükséges szabályokkal és teljes tartománynevekkel nehézkes folyamat, különösen akkor, ha az egyetlen követelmény egy izolált AKS klaszter létrehozása, amelynek nincsenek kimenő függőségei a klaszter rendszerindításához.
Az adatkiszivárgás kockázatának csökkentése érdekében a hálózati izolált fürt lehetővé teszi az AKS-fürt kimenő hálózati függőségek nélküli rendszerindítását, még akkor is, ha fürtösszetevőket/lemezképeket kér le a Microsoft Artifact Registryből (MAR). A fürt operátora fokozatosan állíthatja be az engedélyezett kimenő forgalmat minden olyan szcenárióhoz, amelyet szeretne engedélyezni. Ez a cikk végigvezeti a hálózati izolált fürt létrehozásának lépésein.
Mielőtt hozzákezdene
- Olvassa el ennek a funkciónak a fogalmi áttekintését, amely magyarázatot nyújt a hálózati izolált fürtök működésére. Az áttekintési cikk a következőket is tartalmazza:
- Két lehetőséget ismertet a clusterek indításához használt privát Azure Container Registry (ACR) erőforráshoz – AKS által felügyelt ACR vagy saját ACR.
- Két privát fürtmód ismertetése az API-kiszolgálóhoz való privát hozzáférés létrehozásához – privát kapcsolatalapú vagy API Server VNet-integráció.
- A fürt kimenőforgalom-vezérlésének két kimenő típusát ismerteti –
nonevagyblock(előzetes verzió). - A hálózati elkülönítésű fürtök jelenlegi korlátozásait ismerteti.
Megjegyzés:
A kimenő típus none általánosan elérhető.
A kimenő típus block előzetes verzióban érhető el.
Fontos
Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióihoz részleges támogatást nyújt az ügyfélszolgálat a tőle telhető legjobb módon. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: Az Azure Cloud Shell használatának első lépései.
Ha a CLI referencia parancsokat helyben szeretnéd futtatni, telepítsd az Azure CLI-t. Ha Windows vagy macOS rendszeren fut, fontolja meg az Azure CLI-t egy Docker-konténerben futtatni. További információkért lásd: Az Azure CLI használata Docker-konténerben.
Ha egy helyileg telepített verziót használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. Az azonosítási folyamat befejezéséhez kövesse a terminálján megjelenő lépéseket. További bejelentkezési lehetőségekért lásd: Hitelesítés az Azure-ba az Azure CLI használatával.
Amikor megjelenik a felszólítás, az első használatkor telepítse az Azure CLI bővítményt. További információ a bővítményekről: Bővítmények használata és kezelése az Azure CLI-vel.
Futtasd a az version parancsot, hogy megtudd a telepített verziót és függő könyvtárakat. A legújabb verzióra való frissítéshez futtassa a az upgrade parancsot.
- Ez a cikk az Azure CLI 2.73.0-s vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
- Ha kimenő típust
aks-preview(előzetes verziót) használ, telepítse az Azureblockvagy újabb verzióját.- Ha még nem rendelkezik a
aks-previewbővítményrel, telepítse aaz extension addparancs használatával.az extension add --name aks-preview - Ha már rendelkezik a
aks-previewbővítményrel, frissítse, hogy biztosan a legújabb verzióval rendelkezzen aaz extension updateparancs használatával.az extension update --name aks-preview
- Ha még nem rendelkezik a
- Az AKS-fürtök hálózat-elszigetelt fürtjei a Kubernetes 1.30-es vagy újabb verziójával támogatottak.
- Ha a Saját (BYO) Azure Container Registry (ACR) lehetőséget választja, győződjön meg arról, hogy az ACR Premium SKU szolgáltatási szint.
- Ha API Server VNet-integrációval konfigurált, hálózatilag elkülönített fürtöt használ, kövesse az API Server VNet-integráció használata az Azure Kubernetes Service-ben című cikkben ismertetett előfeltételeket és útmutatást.
Környezeti változók beállítása
Állítsa be a cikkben használt környezeti változókat. Az ACR-névnek globálisan egyedinek kell lennie, és csak kisbetűs alfanumerikus karaktereket kell tartalmaznia.
RESOURCE_GROUP="myResourceGroup"
LOCATION="eastus"
AKS_NAME="myAKSCluster"
VNET_NAME="myVNet"
AKS_SUBNET_NAME="aksSubnet"
ACR_SUBNET_NAME="acrSubnet"
APISERVER_SUBNET_NAME="apiServerSubnet"
REGISTRY_NAME="myregistry${RANDOM}"
CLUSTER_IDENTITY_NAME="clusterIdentity"
KUBELET_IDENTITY_NAME="kubeletIdentity"
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
- Egy Azure-fiók, aktív előfizetéssel. Ha még nincs, hozz létre egy ingyenes fiókot, mielőtt elkezdenéd.
- A Terraform telepítése és konfigurálása.
- Az Azure CLI telepítve van, és be van jelentkezve a(z)
az loginhasználatával; ez az üzembe helyezés ellenőrzéséhez és a fürthöz való csatlakozáshoz használható. Telepítse Azure CLI, ha még nem rendelkezik vele. -
kubectltelepítve a klaszterhez való csatlakozáshoz. Ha az Azure Cloud Shellt használja,kubectlmár telepítve van. A helyi telepítéshez használja aaz aks install-cliparancsot. -
jqtelepítve van, és a Terraform állapotának elemzésére szolgál az üzembe helyezés ellenőrzésekor. Az Azure Cloud Shellben a(z)jqmár telepítve van.
Elkülönített hálózati fürt üzembe helyezése az AKS által felügyelt ACR használatával
Az AKS ebben a beállításban létrehoz, kezel és egyeztet egy ACR-erőforrást. Nem kell engedélyeket hozzárendelnie vagy kezelnie az ACR-t. Az AKS kezeli a hálózatilag elkülönített fürtben használt gyorsítótárszabályokat, a privát kapcsolatot és a privát végpontot.
Hozz létre egy elkülönített hálózati fürtöt
Hálózati elkülönített AKS-fürt létrehozásakor válasszon a következő privát fürtmódok közül: privát kapcsolatalapú vagy API Server VNet-integráció.
Állítsa be az összetevő forrását és kimenő típusát a hálózatelkülönítési követelmények alapján.
| Paraméter | Elfogadott értékek/effektus |
|---|---|
--bootstrap-artifact-source |
Direct közvetlenül a Microsoft Artifact Registryből (MAR) tölti le a lemezképeket, és nem hálózatilag elkülönített.
Cache rendszerképeket kér le egy privát ACR-ből, és el van különítve a hálózattól. |
--outbound-type |
none nem konfigurálja a fürt kimenő kapcsolatait, így ezeket Ön konfigurálhatja.
block (előzetes verzió) letiltja az összes kimenő kapcsolatot. |
Privát kapcsolaton alapuló
Hozzon létre egy privát, kapcsolaton alapuló, hálózattól elkülönített klasztert az az aks create parancs futtatásával, --bootstrap-artifact-source, --enable-private-cluster és --outbound-type paraméterekkel.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --outbound-type none --network-plugin azure --enable-private-cluster
API Server VNet-integráció
Hozzon létre egy, az API Server VNet-integrációval konfigurált hálózati izolált fürtöt az az aks create parancs futtatásával --bootstrap-artifact-source, --enable-private-clusterés --enable-apiserver-vnet-integration--outbound-type paraméterekkel.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --outbound-type none --network-plugin azure --enable-private-cluster --enable-apiserver-vnet-integration
A meglévő AKS-fürt frissítése a hálózattól izolált típusra
Ha inkább egy meglévő AKS-fürtön szeretné engedélyezni a hálózatelkülönítést egy új fürt létrehozása helyett, használja az az aks update parancsot.
Ha egy meglévő AKS-fürtön engedélyezni szeretné a hálózati elkülönítési funkciót, először futtassa a következő parancsot a frissítéshez bootstrap-artifact-source:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache
Ezután manuálisan újra kell létrehoznia az összes meglévő csomópontkészletet:
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Megjegyzés:
Az első újraimázs befejezéséig meg kell győződnie arról, hogy a kimenő forgalom létezik. Annak ellenőrzéséhez, hogy a reimage befejeződött-e, futtassa a következőt:
NODEPOOLS=$(az aks nodepool list \
--resource-group "${RESOURCE_GROUP}" \
--cluster-name "${AKS_NAME}" \
--query "[].name" -o tsv)
for NODEPOOL in $NODEPOOLS; do
echo "Waiting for node pool $NODEPOOL to finish upgrading..."
az aks nodepool wait \
--resource-group "${RESOURCE_GROUP}" \
--cluster-name "${AKS_NAME}" \
--name "$NODEPOOL" \
--updated
echo "Node pool $NODEPOOL upgrade succeeded."
done
Várjon, és győződjön meg arról, hogy az újraimázs befejeződik, majd futtassa a következő parancsot a frissítéshez outbound-type:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --outbound-type none
Fontos
Ne felejtse el azonnal újraimázni a fürt csomópontkészleteit, miután az összetevő forrását gyorsítótárba frissítette. Ellenkező esetben a funkció nem lép érvénybe a fürtre.
Elkülönített hálózati fürt üzembe helyezése saját ACR használatával
Az AKS támogatja a saját ACR (Bring Your Own - BYO) használatát. A BYO ACR-forgatókönyv támogatásához az AKS-fürt létrehozása előtt konfigurálnia kell egy privát ACR-végpontot és egy privát DNS-zónát.
Az alábbi lépések bemutatják, hogyan készítse elő ezeket az erőforrásokat:
- Egyéni virtuális hálózat és alhálózatok az AKS-hez és az ACR-hez.
- ACR, ACR-gyorsítótárszabály, privát végpont és privát DNS-zóna.
- Speciális vezérlősík-identitás és kubelet-identitás.
1. lépés: A virtuális hálózat és alhálózatok létrehozása
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
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
2. lépés: A virtuális hálózat kimenő kapcsolatának letiltása (nem kötelező)
Tegye például priváttá az AKS-alhálózatot úgy, hogy az alapértelmezett kimenő hozzáférését false értékre állítja be.
az network vnet subnet update --resource-group ${RESOURCE_GROUP} --vnet-name ${VNET_NAME} --name ${AKS_SUBNET_NAME} --default-outbound false
Egyéb támogatott módszerekről és áttűnési szempontokról a virtuális hálózat kimenő kapcsolatának letiltása című témakörben olvashat.
3. lépés: Az ACR létrehozása és az összetevő-gyorsítótár engedélyezése
Hozza létre az ACR-t, ha a nyilvános hálózati hozzáférés le van tiltva.
az acr create --resource-group ${RESOURCE_GROUP} --name ${REGISTRY_NAME} --sku Premium --public-network-enabled false REGISTRY_ID=$(az acr show --name ${REGISTRY_NAME} -g ${RESOURCE_GROUP} --query 'id' --output tsv)Hozzon létre egy ACR-gyorsítótárszabályt az alábbi paranccsal, amellyel a felhasználók gyorsítótárazhatják a MAR tárolólemezképeket és bináris fájlokat az új ACR-ben. A gyorsítótárszabály nevének és az adattár nevének a következő szakaszban található útmutatást kell követnie.
az acr cache create -n aks-managed-mcr -r ${REGISTRY_NAME} -g ${RESOURCE_GROUP} --source-repo "mcr.microsoft.com/*" --target-repo "aks-managed-repository/*"
Megjegyzés:
A BYO ACR-ben az Ön felelőssége, hogy az ACR-gyorsítótárszabályt a fentieknek megfelelően hozza létre és karbantartsa. Ez a lépés létfontosságú a klaszterek létrehozása, működtetése és frissítése szempontjából. Ezt a gyorsítótárszabályt NEM szabad módosítani.
4. lépés: Privát végpont létrehozása az ACR-hez
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)
5. lépés: Privát DNS-zóna létrehozása és rekordok hozzáadása
Hozzon létre egy privát DNS-zónát .privatelink.azurecr.io Adja hozzá a beállításjegyzék REST-végpontjának {REGISTRY_NAME}.azurecr.ioés a beállításjegyzék-adatvégpontnak {REGISTRY_NAME}.{LOCATION}.data.azurecr.ioa rekordjait.
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}
6. lépés: Vezérlősík és kubelet identitások létrehozása
Irányítósík identitása
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-identitás
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)
Ha egy meglévő AKS-fürtöt frissít, hagyja ki az előző identitáslétrehozási parancsokat, és kérje le a meglévő kubelet-identitásobjektum-azonosítót:
KUBELET_IDENTITY_PRINCIPAL_ID=$(az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --query identityProfile.kubeletidentity.objectId -o tsv)
ACR-lekérési jogosultságok megadása a kubelet identitás számára
Ellenőrizze a beállításjegyzék szerepkör-hozzárendelési engedélyeinek módját, és válassza ki a megfelelő lekérési szerepkört. Az ABAC-kompatibilis regisztrációs adatbázisok használják a szerepkört Container Registry Repository Reader . A nem ABAC-kompatibilis regisztrációs adatbázisok használják a szerepkört AcrPull .
ROLE_ASSIGNMENT_MODE=$(az acr show --name ${REGISTRY_NAME} --resource-group ${RESOURCE_GROUP} --query roleAssignmentMode -o tsv)
if [[ "${ROLE_ASSIGNMENT_MODE}" == "rbac-abac" ]]; then
ACR_PULL_ROLE="Container Registry Repository Reader"
else
ACR_PULL_ROLE="AcrPull"
fi
az role assignment create --role "${ACR_PULL_ROLE}" --scope ${REGISTRY_ID} --assignee-object-id ${KUBELET_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal
Miután konfigurálta ezeket az erőforrásokat, a BYO ACR-rel létrehozhatja a hálózatilag elszigetelt AKS-fürtöt.
7. lépés: Hálózati izolált fürt létrehozása BYO ACR használatával
Hálózati elkülönített fürt létrehozásakor válasszon a következő privát fürtmódok közül: privát kapcsolatalapú vagy API Server VNet-integráció.
Állítsa be az összetevő forrását és kimenő típusát a hálózatelkülönítési követelmények alapján.
| Paraméter | Elfogadott értékek/effektus |
|---|---|
--bootstrap-artifact-source |
Direct közvetlenül a Microsoft Artifact Registryből (MAR) tölti le a lemezképeket, és nem hálózatilag elkülönített.
Cache rendszerképeket kér le egy privát ACR-ből, és el van különítve a hálózattól. |
--outbound-type |
none nem konfigurálja a fürt kimenő kapcsolatait, így ezeket Ön konfigurálhatja.
block (előzetes verzió) letiltja az összes kimenő kapcsolatot. |
Privát kapcsolaton alapuló
Hozzon létre egy privát linkkapcsolat alapú, hálózatilag izolált fürtöt, amely az ACR-hez a szükséges paraméterekkel az az aks create parancs futtatásával fér hozzá.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --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
API Server VNet-integráció
Az API Server VNet-integrációval konfigurált hálózati izolált fürt esetében először hozzon létre egy alhálózatot, és rendelje hozzá a megfelelő szerepkört a következő parancsokkal:
az network vnet subnet create --name ${APISERVER_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.3.0/24 --delegations Microsoft.ContainerService/managedClusters
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
az role assignment create --scope ${SUBNET_ID} --role "Network Contributor" --assignee-object-id ${CLUSTER_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal
Hozzon létre egy privát hálózati izolált fürtöt, amely az API Server VNet-integrációval van konfigurálva, és az az aks create parancs futtatásával fér hozzá az ACR-hez a szükséges paraméterekkel.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --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 --enable-apiserver-vnet-integration --apiserver-subnet-id ${APISERVER_SUBNET_ID}
Meglévő AKS-fürt frissítése
Ha inkább egy meglévő AKS-fürtön szeretné engedélyezni a hálózatelkülönítést egy új fürt létrehozása helyett, használja az az aks update parancsot.
A BYO ACR privát végpontjának és privát DNS-zónájának létrehozásakor használja a meglévő AKS-fürt meglévő virtuális hálózatát és alhálózatait. Amikor hozzárendeli a megfelelő ACR pull szerepkört a kubelet identitásához, a meglévő AKS-fürt meglévő kubelet-identitását használja.
Ha egy meglévő AKS-fürtön engedélyezni szeretné a hálózati elkülönítési funkciót, először futtassa a következő parancsot a frissítéshez bootstrap-artifact-source:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID}
Ezután manuálisan újra kell létrehoznia az összes meglévő csomópontkészletet:
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Megjegyzés:
Az első újraimázs befejezéséig meg kell győződnie arról, hogy a kimenő forgalom létezik. Annak ellenőrzéséhez, hogy a reimage befejeződött-e, futtassa a következőt:
NODEPOOLS=$(az aks nodepool list \
--resource-group "${RESOURCE_GROUP}" \
--cluster-name "${AKS_NAME}" \
--query "[].name" -o tsv)
for NODEPOOL in $NODEPOOLS; do
echo "Waiting for node pool $NODEPOOL to finish upgrading..."
az aks nodepool wait \
--resource-group "${RESOURCE_GROUP}" \
--cluster-name "${AKS_NAME}" \
--name "$NODEPOOL" \
--updated
echo "Node pool $NODEPOOL upgrade succeeded."
done
Várjon, és győződjön meg arról, hogy az újraimázs befejeződik, majd futtassa a következő parancsot a frissítéshez outbound-type:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --outbound-type none
Fontos
Ne felejtse el azonnal újraimázni a fürt csomópontkészleteit, miután az összetevő forrását gyorsítótárba frissítette. Ellenkező esetben a funkció nem lép érvénybe a fürtre.
Az ACR-azonosító frissítése
A hálózati elkülönített fürthöz használt privát ACR-t frissítheti. Az ACR-erőforrásazonosító azonosításához használja a az aks show parancsot.
az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}
Az ACR-azonosító frissítéséhez futtassa a az aks update parancsot a --bootstrap-artifact-source és --bootstrap-container-registry-resource-id paraméterekkel.
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id <new-byo-acr-resource-id>
Ha egy meglévő fürt ACR-azonosítóját frissíti, manuálisan újra kell konfigurálnia az összes meglévő csomópontot.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Fontos
Ne felejtse el újraimázni a fürt csomópontkészleteit, miután engedélyezte a hálózati izolált fürtfunkciót. Ellenkező esetben a funkció nem lép érvénybe a fürtre.
Hálózatilag izolált fürt üzembe helyezése a Terraform használatával
Megjegyzés:
A cikk mintakódja a Azure Terraform GitHub-adattárban található. Megtekintheti a Terraform aktuális és korábbi verzióinak teszteredmény-naplóját.
Ez a Terraform-minta egy hálózatilag elkülönített fürtöt helyez üzembe a cikk korábbi részében ismertetett AKS által felügyelt ACR lehetőség használatával. Az AzureRM-szolgáltató még nem teszi elérhetővé az összes, a minta által használt, hálózatilag izolált rendszerindítási beállítást, így a minta az AzAPI-szolgáltatót használja a felügyelt fürterőforrás üzembe helyezéséhez a szükséges API-verzión. A saját ACR használatát lehetővé tevő (BYO) beállításhoz jelenleg nem érhető el Terraform-minta. A BYO ACR használatához kövesse a cikk korábbi Azure CLI útmutatását.
A minta a következő erőforrásokat helyezi üzembe:
-
Erőforráscsoport (
Microsoft.Resources/resourceGroups). - A hálózattól elkülönített AKS-fürt (
Microsoft.ContainerService/managedClusters), amely a következőket használja:- Rendszer által hozzárendelt felügyelt identitás.
- Egyetlen rendszercsomópont-készlet egy
Standard_D2s_v3csomóponttal, és az automatikus skálázás le van tiltva. - A
azurehálózati beépülő modulnál aoutboundTypebeállításanoneértékre történik, így a fürtnek a rendszerindításhoz nincs szüksége kimenő hálózati függőségekre. -
apiServerAccessProfile.enablePrivateClusterbeállítva erre:true, ami egy Private Link-alapú privát fürtöt hoz létre. -
bootstrapProfile.artifactSourcebeállításra vanCacheállítva, így az AKS létrehozza, kezeli és egyezteti a saját ACR-gyorsítótárát a fürt elindításához ahelyett, hogy közvetlenül Microsoft Artifact Registryből (MAR) kér le. Ahogy a cikk korábbi részében már szerepelt, ezt az ACR-t nem kell saját kezűleg létrehoznia vagy kezelnie, és a hálózattól elkülönített fürt által használt gyorsítótárszabályokat, Private Linket és privát végpontot az AKS kezeli.
A fürt a telepítési régióban támogatott alapértelmezett Kubernetes-verzióval jön létre. Egy adott verzió rögzítéséhez adja hozzá a kubernetesVersion elemet a main.tf fájlban található fürt properties blokkjához, és a az aks get-versions parancs használatával győződjön meg arról, hogy a verzió elérhető az adott régióban.
Hozzon létre egy könyvtárat a Terraform-mintakód teszteléséhez és az aktuális könyvtárvá alakításához.
Hozzon létre egy elnevezett
main.tffájlt, és másolja bele a következő tesztelt mintakonfigurációt.terraform { required_version = ">= 1.6.0" required_providers { azapi = { source = "Azure/azapi" version = "~> 2.0" } random = { source = "hashicorp/random" version = "~> 3.6" } } } provider "azapi" {} resource "random_string" "suffix" { length = 6 upper = false special = false } locals { location = "westus2" resource_group_name = "rg-aks-network-isolated-${random_string.suffix.result}" aks_name = "aks-netisolated-${random_string.suffix.result}" dns_prefix = "aksnetiso${random_string.suffix.result}" } resource "azapi_resource" "resource_group" { type = "Microsoft.Resources/resourceGroups@2024-03-01" name = local.resource_group_name location = local.location } resource "azapi_resource" "aks_cluster" { type = "Microsoft.ContainerService/managedClusters@2025-08-01" name = local.aks_name parent_id = azapi_resource.resource_group.id location = local.location identity { type = "SystemAssigned" } body = { properties = { dnsPrefix = local.dns_prefix agentPoolProfiles = [ { name = "systempool" count = 1 vmSize = "Standard_D2s_v3" mode = "System" osType = "Linux" type = "VirtualMachineScaleSets" enableAutoScaling = false } ] networkProfile = { networkPlugin = "azure" outboundType = "none" } apiServerAccessProfile = { enablePrivateCluster = true } bootstrapProfile = { artifactSource = "Cache" } } } }
Terraform inicializálása
Az üzembe helyezés inicializálásához futtassa a Terraform parancsot terraform init. Ez a parancs letölti azokat a azapi szolgáltatókat és random szolgáltatókat, amelyek a mintában szereplő erőforrások kezeléséhez szükségesek.
terraform init -upgrade
A konfiguráció formázása és ellenőrzése
Futtassa a terraform fmt parancsot a konfigurációs fájl formázásához, és a terraform validate parancsot annak megerősítéséhez, hogy a konfiguráció szintaktikailag érvényes.
terraform fmt
terraform validate
Terraform végrehajtási terv létrehozása
Futtassa a(z) terraform plan elemet egy végrehajtási terv létrehozásához.
terraform plan -out main.tfplan
A Terraform végrehajtási terv alkalmazása
Futtassa a terraform apply parancsot, hogy alkalmazza a végrehajtási tervet az Azure-előfizetésére.
terraform apply main.tfplan
Az erőforráscsoport és a privát, hálózat által elkülönített AKS-fürt létrehozása több percet vesz igénybe.
Az alkalmazás telepítésének ellenőrzése
Ez a minta nem definiál Terraform-kimeneteket, ezért a jq és a terraform show -json használatával kérheti le a létrehozott erőforráscsoport és a fürt nevét az erőforrás állapotából, miután a terraform apply befejeződik. Mindkét erőforrást a azapi szolgáltatónál kezelheti, és az attribútumuk name tartalmazza a feloldott erőforrásnevet.
RESOURCE_GROUP=$(terraform show -json | jq -r '.values.root_module.resources[] | select(.address=="azapi_resource.resource_group") | .values.name')
AKS_NAME=$(terraform show -json | jq -r '.values.root_module.resources[] | select(.address=="azapi_resource.aks_cluster") | .values.name')
Győződjön meg arról, hogy a fürt a várt hálózati elkülönítési beállításokkal jött létre a(z) az aks show paranccsal.
az aks show --resource-group $RESOURCE_GROUP --name $AKS_NAME --query "{outboundType:networkProfile.outboundType, artifactSource:bootstrapProfile.artifactSource, privateCluster:apiServerAccessProfile.enablePrivateCluster}"
A kimenet azt mutatja, hogy a(z) true értéke artifactSource, a(z) Cache értéke outboundType, és a(z) none értéke privateCluster, ami megerősíti, hogy a fürt hálózatilag el van különítve, és az AKS által felügyelt ACR-gyorsítótárból inicializálódik.
Csatlakozzon a klaszterhez
Mivel ez egy privát fürt, olyan ügyfélről csatlakozzon, amely hálózati eléréssel rendelkezik a fürt privát végpontjához, például egy azonos vagy társviszonyban lévő virtuális hálózatban futó virtuális gépről, vagy az Azure Cloud Shellből, ha az a fürt virtuális hálózatához csatlakozik. Kérje le a fürt hitelesítő adatait a az aks get-credentials parancs használatával, majd ellenőrizze a kapcsolatot a kubectl get nodes parancs használatával.
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME
kubectl get nodes
Erőforrások tisztítása
Ha már nincs szüksége a cikkben létrehozott erőforrásokra, távolítsa el őket a további költségek elkerülése érdekében.
Warning
A(z) terraform destroy futtatása eltávolít minden, ehhez a konfigurációhoz tartozó Terraform állapotfájlban nyomon követett erőforrást, beleértve az erőforráscsoportot és az AKS-fürtöt is. Mielőtt megsemmisítené, alaposan tekintse át a tervet, és kerülje a megosztott vagy éles infrastruktúrán való futtatást.
Futtassa a terraform plan parancsot a -destroy kapcsolóval, hogy megtekinthesse, mit fog eltávolítani a Terraform.
terraform plan -destroy -out main.destroy.tfplan
Futtassa a(z) terraform apply parancsot a megsemmisítési terv alkalmazásához, és távolítsa el az ezen minta által létrehozott összes erőforrást.
terraform apply main.destroy.tfplan
Annak ellenőrzése, hogy a hálózati izolált fürt engedélyezve van-e az AKS-ben
Annak ellenőrzéséhez, hogy a hálózattól elkülönített fürt funkció engedélyezve van-e, használja a az aks show parancsot.
az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}
Az alábbi kimenet egy none kimenő típussal konfigurált, hálózatilag elkülönített fürtöt mutat be. Győződjön meg arról, hogy a(z) outboundType értéke none vagy block értékre van állítva, és hogy a(z) artifactSource értéke Cache értékre van állítva. A containerRegistryId mező azonosítja a rendszerindításhoz használt ACR-t.
{
"kubernetesVersion": "<major>.<minor>.<patch>",
"name": "myAKSCluster",
"type": "Microsoft.ContainerService/ManagedClusters",
"properties": {
"networkProfile": {
"outboundType": "none"
},
"bootstrapProfile": {
"artifactSource": "Cache",
"containerRegistryId": "/subscriptions/my-subscription-id/resourceGroups/my-node-resource-group-name/providers/Microsoft.ContainerRegistry/registries/my-registry-name"
}
}
}
Hálózati izolált fürt letiltása az AKS-en
Tiltsa le a hálózati izolált fürt funkciót a az aks update parancs futtatásával a --bootstrap-artifact-source és --outbound-type paraméterekkel.
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Direct --outbound-type LoadBalancer
Ha letiltja a funkciót egy meglévő fürtben, manuálisan újra kell létrehoznia az összes meglévő csomópontot.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Fontos
Ne felejtse el újraimázni a fürt csomópontkészleteit, miután letiltotta a hálózati elkülönített fürtszolgáltatást. Ellenkező esetben a funkció nem lép érvénybe a fürtre.
Hibaelhárítás
Ha problémákat tapasztal, például a rendszerkép lekérése meghiúsul, tekintse meg a hálózat által elkülönített Azure Kubernetes Service-fürtökkel kapcsolatos problémák hibaelhárítását.
Következő lépések
Ha az Azure Firewall használatával szeretné beállítani a kimenő korlátozás konfigurációját, látogasson el a Kimenő forgalom szabályozása az Azure Firewall használatával az AKS-ben című témakörben.
Ha korlátozni szeretné, hogy a podok hogyan kommunikáljanak egymás között, és East-West a fürtön belüli forgalomkorlátozásokat, tekintse meg a podok közötti adatforgalom biztonságossá tételét az AKS hálózati házirendjeinek használatával.