Bérlők közötti számítási feladatok identitásának konfigurálása az Azure Kubernetes Service-ben (AKS)
Ebből a cikkből megtudhatja, hogyan konfigurálhatja a bérlők közötti számítási feladatok identitását az Azure Kubernetes Service-ben (AKS). A bérlők közötti számítási feladatok identitása lehetővé teszi egy másik bérlő erőforrásainak elérését az AKS-fürtből. Ebben a példában egy Azure Service Bust hoz létre egy bérlőben, és üzeneteket küld neki egy másik bérlő AKS-fürtjében futó számítási feladatból.
A számítási feladatok identitásával kapcsolatos további információkért tekintse meg a számítási feladatok identitásának áttekintését.
Előfeltételek
Két Azure-előfizetés, mindegyik külön bérlőben található. Ebben a cikkben A bérlőként és B bérlőként hivatkozunk ezekre.
A helyi gépen telepített Azure CLI. Ha nincs telepítve az Azure CLI, olvassa el az Azure CLI telepítése című témakört.
Bash-rendszerhéj-környezet. Ez a cikk a Bash-rendszerhéj szintaxisát használja.
A következő előfizetési adatokkal kell rendelkeznie:
- Bérlő bérlőazonosítója
- A bérlői előfizetés azonosítója
- B bérlői bérlő azonosítója
- B bérlői előfizetés azonosítója
Fontos
Győződjön meg arról, hogy a jelen cikk időtartama alatt ugyanabban a terminálablakban marad a beállított környezeti változók megőrzése érdekében. Ha bezárja a terminálablakot, újra be kell állítania a környezeti változókat.
Erőforrások konfigurálása az A bérlőben
Az A bérlőben létrehoz egy AKS-fürtöt, amelyen engedélyezve van a számítási feladat identitása és az OIDC-kiállító. Ezzel a fürttel üzembe helyezhet egy alkalmazást, amely megpróbál hozzáférni a B bérlő erőforrásaihoz.
Bejelentkezés az A bérlőbe
Jelentkezzen be az A bérlői előfizetésbe a
az login
paranccsal.# Set environment variable TENANT_A_ID=<tenant-id> az login --tenant $TENANT_A_ID
Győződjön meg arról, hogy a megfelelő előfizetéssel dolgozik az A bérlőben a
az account set
parancs használatával.# Set environment variable TENANT_A_SUBSCRIPTION_ID=<subscription-id> # Log in to your Tenant A subscription az account set --subscription $TENANT_A_SUBSCRIPTION_ID
Erőforrások létrehozása az A bérlőben
Hozzon létre egy erőforráscsoportot az A bérlőben az AKS-fürt parancs használatával
az group create
történő üzemeltetéséhez.# Set environment variables RESOURCE_GROUP=<resource-group-name> LOCATION=<location> # Create a resource group az group create --name $RESOURCE_GROUP --location $LOCATION
Hozzon létre egy AKS-fürtöt az A bérlőben a számítási feladat identitásával és a
az aks create
parancs használatával engedélyezett OIDC-kiállítóval.# Set environment variable CLUSTER_NAME=<cluster-name> # Create an AKS cluster az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --enable-oidc-issuer \ --enable-workload-identity \ --generate-ssh-keys
OIDC-kiállító URL-címének lekérése az AKS-fürtből
Kérje le az OIDC-kiállító URL-címét az A bérlőbeli fürtből a
az aks show
parancs használatával.OIDC_ISSUER_URL=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query "oidcIssuerProfile.issuerUrl" --output tsv)
Erőforrások konfigurálása a B bérlőben
A B bérlőben létrehoz egy Azure Service Bust, egy felügyelt identitást, és engedélyeket rendel hozzá az üzenetek olvasásához és a service bushoz való írásához, valamint létrehozza a felügyelt identitás és az A bérlőI AKS-fürt közötti megbízhatóságot.
Bejelentkezés a B bérlőbe
Jelentkezzen ki az A bérlői előfizetésből a
az logout
paranccsal.az logout
Jelentkezzen be a B bérlői előfizetésbe a
az login
paranccsal.# Set environment variable TENANT_B_ID=<tenant-id> az login --tenant $TENANT_B_ID
Győződjön meg arról, hogy a B bérlőben a megfelelő előfizetéssel dolgozik a
az account set
paranccsal.# Set environment variable TENANT_B_SUBSCRIPTION_ID=<subscription-id> # Log in to your Tenant B subscription az account set --subscription $TENANT_B_SUBSCRIPTION_ID
Erőforrások létrehozása a B bérlőben
Hozzon létre egy erőforráscsoportot a B bérlőben a felügyelt identitás üzemeltetéséhez a
az group create
parancs használatával.# Set environment variables RESOURCE_GROUP=<resource-group-name> LOCATION=<location> # Create a resource group az group create --name $RESOURCE_GROUP --location $LOCATION
Hozzon létre egy service busot és egy üzenetsort a B bérlőben a parancsok és
az servicebus queue create
aaz servicebus namespace create
parancsok használatával.# Set environment variable SERVICEBUS_NAME=sb-crosstenantdemo-$RANDOM # Create a new service bus namespace and and return the service bus hostname SERVICEBUS_HOSTNAME=$(az servicebus namespace create \ --name $SERVICEBUS_NAME \ --resource-group $RESOURCE_GROUP \ --disable-local-auth \ --query serviceBusEndpoint \ --output tsv | sed -e 's/https:\/\///' -e 's/:443\///') # Create a new queue in the service bus namespace az servicebus queue create \ --name myqueue \ --namespace $SERVICEBUS_NAME \ --resource-group $RESOURCE_GROUP
Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást a B bérlőben a
az identity create
parancs használatával.# Set environment variable IDENTITY_NAME=${SERVICEBUS_NAME}-identity # Create a user-assigned managed identity az identity create --resource-group $RESOURCE_GROUP --name $IDENTITY_NAME
Erőforrás-azonosítók lekérése és engedélyek hozzárendelése a B bérlőben
Kérje le a felügyelt identitás fő azonosítóját a B bérlőben a
az identity show
parancs használatával.# Get the user-assigned managed identity principalId PRINCIPAL_ID=$(az identity show \ --resource-group $RESOURCE_GROUP \ --name $IDENTITY_NAME \ --query principalId \ --output tsv)
Kérje le a felügyelt identitás ügyfél-azonosítóját a B bérlőben a
az identity show
parancs használatával.CLIENT_ID=$(az identity show \ --resource-group $RESOURCE_GROUP \ --name $IDENTITY_NAME \ --query clientId \ --output tsv)
Kérje le a service bus névtér erőforrás-azonosítóját a B bérlőben a
az servicebus namespace show
parancs használatával.SERVICEBUS_ID=$(az servicebus namespace show \ --name $SERVICEBUS_NAME \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Rendelje hozzá a felügyelt identitást a B bérlői engedélyekhez a service bus-üzenetek olvasásához és írásához a
az role assignment create
parancs használatával.az role assignment create \ --role "Azure Service Bus Data Owner" \ --assignee-object-id $PRINCIPAL_ID \ --assignee-principal-type ServicePrincipal \ --scope $SERVICEBUS_ID
Megbízhatóság létrehozása az AKS-fürt és a felügyelt identitás között
Ebben a szakaszban az A bérlő AKS-fürtje és a B bérlő felügyelt identitása közötti megbízhatóság létrehozásához szükséges összevont identitás-hitelesítő adatokat hozza létre. Az A bérlőben az A bérlő AKS-fürtjének OIDC-kiállítói URL-címét és a felügyelt identitás nevét használja a B bérlőben.
Hozzon létre egy összevont identitás hitelesítő adatokat a
az identity federated-credential create
paranccsal.az identity federated-credential create \ --name $IDENTITY_NAME-$RANDOM \ --identity-name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --issuer $OIDC_ISSUER_URL \ --subject system:serviceaccount:default:myserviceaccount
--subject system:serviceaccount:default:myserviceaccount
az A bérlőben a cikk későbbi részében létrehozott Kubernetes-szolgáltatásfiók neve. Amikor az alkalmazás podja hitelesítési kéréseket küld, a rendszer ezt az értéket az engedélyezési kérelemben szereplő subject
Microsoft Entra-azonosítónak küldi el. A Microsoft Entra ID annak alapján határozza meg a jogosultságot, hogy ez az érték megfelel-e az összevont identitás hitelesítő adatainak létrehozásakor beállított értéknek, ezért fontos, hogy az érték egyezzen.
Alkalmazás üzembe helyezése üzenetek azure Service Bus-üzenetsorba való küldéséhez
Ebben a szakaszban üzembe helyez egy alkalmazást az A bérlőben található AKS-fürtön, amely üzeneteket küld a B bérlő Azure Service Bus-üzenetsorába.
Jelentkezzen be az A bérlőbe, és szerezze be az AKS hitelesítő adatait
Jelentkezzen ki a B bérlői előfizetésből a
az logout
paranccsal.az logout
Jelentkezzen be az A bérlői előfizetésbe a
az login
paranccsal.az login --tenant $TENANT_A_ID
Győződjön meg arról, hogy a megfelelő előfizetéssel dolgozik az A bérlőben a
az account set
parancs használatával.az account set --subscription $TENANT_A_SUBSCRIPTION_ID
Szerezze be az A bérlő A bérlőjében lévő AKS-fürt hitelesítő adatait a
az aks get-credentials
paranccsal.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Kubernetes-erőforrások létrehozása üzenetek azure Service Bus-üzenetsorba való küldéséhez
Hozzon létre egy új Kubernetes ServiceAccount-fiókot a
default
névtérben, és adja át a felügyelt identitás ügyfélazonosítóját a B bérlőben akubectl apply
parancsnak. Az ügyfélazonosítóval hitelesíthető az alkalmazás az A bérlőben az Azure Service Bus B bérlőben.kubectl apply -f - <<EOF apiVersion: v1 kind: ServiceAccount metadata: annotations: azure.workload.identity/client-id: $CLIENT_ID name: myserviceaccount EOF
Hozzon létre egy új Kubernetes-feladatot a
default
névtérben, hogy 100 üzenetet küldjön az Azure Service Bus-üzenetsorba. A podsablon a számítási feladat identitásának és az előző lépésben létrehozott szolgáltatásfióknak a használatára van konfigurálva. Azt is vegye figyelembe, hogy aAZURE_TENANT_ID
környezeti változó a B bérlőazonosítóra van állítva. Erre azért van szükség, mert a számítási feladatok identitása alapértelmezés szerint az AKS-fürt bérlője, ezért explicit módon be kell állítania a B bérlőazonosítóját.kubectl apply -f - <<EOF apiVersion: batch/v1 kind: Job metadata: name: myproducer spec: template: metadata: labels: azure.workload.identity/use: "true" spec: serviceAccountName: myserviceaccount containers: - image: ghcr.io/azure-samples/aks-app-samples/servicebusdemo:latest name: myproducer resources: {} env: - name: OPERATION_MODE value: "producer" - name: MESSAGE_COUNT value: "100" - name: AZURE_SERVICEBUS_QUEUE_NAME value: myqueue - name: AZURE_SERVICEBUS_HOSTNAME value: $SERVICEBUS_HOSTNAME - name: AZURE_TENANT_ID value: $TENANT_B_ID restartPolicy: Never EOF
Az üzemelő példány ellenőrzése
Ellenőrizze, hogy a pod megfelelően van-e konfigurálva az Azure Service Bus-üzenetsor használatára a B bérlőben a pod állapotának a paranccsal történő ellenőrzésével
kubectl describe pod
.# Get the dynamically generated pod name POD_NAME=$(kubectl get po --selector job-name=myproducer -o jsonpath='{.items[0].metadata.name}') # Verify the tenant ID environment variable is set for Tenant B kubectl describe pod $POD_NAME | grep AZURE_TENANT_ID
Ellenőrizze a pod naplóit, hogy az alkalmazás képes volt-e üzeneteket küldeni a bérlők között a
kubectl logs
parancs használatával.kubectl logs $POD_NAME
A kimenetnek a következő példakimenethez hasonlóan kell kinéznie:
... Adding message to batch: Hello World! Adding message to batch: Hello World! Adding message to batch: Hello World! Sent 100 messages
Feljegyzés
További ellenőrzési lépésként az Azure Portalra léphet, és a B bérlőben az Azure Service Bus-üzenetsorra lépve megtekintheti a Service Bus Explorerben küldött üzeneteket.
Az erőforrások eltávolítása
Az üzembe helyezés sikerességének ellenőrzése után törölheti az erőforrásokat az Azure-költségek elkerülése érdekében.
Erőforrások törlése az A bérlőben
Jelentkezzen be az A bérlői előfizetésbe a
az login
paranccsal.az login --tenant $TENANT_A_ID
Győződjön meg arról, hogy a megfelelő előfizetéssel dolgozik az A bérlőben a
az account set
parancs használatával.az account set --subscription $TENANT_A_SUBSCRIPTION_ID
Törölje az Azure-erőforráscsoportot és a benne lévő összes erőforrást a
az group delete
paranccsal.az group delete --name $RESOURCE_GROUP --yes --no-wait
Erőforrások törlése a B bérlőben
Jelentkezzen be a B bérlői előfizetésbe a
az login
paranccsal.az login --tenant $TENANT_B_ID
Győződjön meg arról, hogy a B bérlőben a megfelelő előfizetéssel dolgozik a
az account set
paranccsal.az account set --subscription $TENANT_B_SUBSCRIPTION_ID
Törölje az Azure-erőforráscsoportot és a benne lévő összes erőforrást a
az group delete
paranccsal.az group delete --name $RESOURCE_GROUP --yes --no-wait
Következő lépések
Ebből a cikkből megtudhatja, hogyan konfigurálhatja a bérlők közötti számítási feladatok identitását az Azure Kubernetes Service-ben (AKS). A számítási feladatok identitásával kapcsolatos további információkért tekintse meg a következő cikkeket:
Azure Kubernetes Service