Megosztás a következőn keresztül:


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

  1. 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
    
  2. 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

  1. 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
    
  2. 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

  1. Jelentkezzen ki az A bérlői előfizetésből a az logout paranccsal.

    az logout
    
  2. 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
    
  3. 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

  1. 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
    
  2. Hozzon létre egy service busot és egy üzenetsort a B bérlőben a parancsok és az servicebus queue create a az 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
    
  3. 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

  1. 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)
    
  2. 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)
    
  3. 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)
    
  4. 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:myserviceaccountaz 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

  1. Jelentkezzen ki a B bérlői előfizetésből a az logout paranccsal.

    az logout
    
  2. Jelentkezzen be az A bérlői előfizetésbe a az login paranccsal.

    az login --tenant $TENANT_A_ID
    
  3. 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
    
  4. 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

  1. 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 a kubectl 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
    
  2. 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 a AZURE_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

  1. 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évelkubectl 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
    
  2. 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

  1. Jelentkezzen be az A bérlői előfizetésbe a az login paranccsal.

    az login --tenant $TENANT_A_ID
    
  2. 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
    
  3. 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

  1. Jelentkezzen be a B bérlői előfizetésbe a az login paranccsal.

    az login --tenant $TENANT_B_ID
    
  2. 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
    
  3. 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: