Share via


Oktatóanyag: Számítási feladatok identitásának használata egy alkalmazással az Azure Kubernetes Service-ben (AKS)

Az Azure Kubernetes Service (AKS) egy felügyelt Kubernetes-szolgáltatás, amely lehetővé teszi a Kubernetes-fürtök gyors üzembe helyezését és kezelését. Az oktatóanyag során az alábbi lépéseket fogja végrehajtani:

  • AKS-fürt üzembe helyezése az Azure CLI használatával OpenID Csatlakozás (OIDC) kiállítóval és felügyelt identitással.
  • Hozzon létre egy Azure Key Vaultot és titkos kulcsot.
  • Hozzon létre egy Microsoft Entra Számítási feladat ID és Egy Kubernetes-szolgáltatásfiókot.
  • Konfigurálja a felügyelt identitást a jogkivonat-összevonáshoz.
  • Telepítse a számítási feladatot, és ellenőrizze a hitelesítést a számítási feladat identitásával.

Mielőtt elkezdené

Előfeltételek

  • Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
  • Ez a cikk az Azure CLI 2.47.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.
  • A fürt létrehozásához használt identitásnak rendelkeznie kell a megfelelő minimális engedélyekkel. Az AKS-hez való hozzáféréssel és identitással kapcsolatos további információkért lásd az Azure Kubernetes Service (AKS) hozzáférési és identitásbeállításait.
  • Ha több Azure-előfizetéssel rendelkezik, válassza ki a megfelelő előfizetés-azonosítót, amelyben az erőforrásokat az az account set paranccsal kell számlázni.

Erőforráscsoport létrehozása

Az Azure-erőforráscsoportok olyan logikai csoportok, amelyekben az Azure-erőforrások üzembe helyezése és kezelése történik. Erőforráscsoport létrehozásakor a rendszer kérni fogja, hogy adjon meg egy helyet. Ez a hely az erőforráscsoport metaadatainak tárolási helye, és ahol az erőforrások az Azure-ban futnak, ha nem ad meg egy másik régiót az erőforrás létrehozása során.

A következő példában létrehozunk egy myResourceGroup nevű erőforráscsoportot az eastus helyen.

  • Hozzon létre egy erőforráscsoportot az az group create paranccsal.

    az group create --name myResourceGroup --location eastus
    

    Az alábbi kimeneti példa az erőforráscsoport sikeres létrehozásához hasonlít:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    

Környezeti változók exportálása

A szükséges identitások konfigurálásához szükséges lépések egyszerűsítése érdekében az alábbi lépések környezeti változókat határoznak meg a fürtre való hivatkozáshoz.

  • Ezeket a változókat az alábbi parancsokkal hozhatja létre. Cserélje le az alapértelmezett értékeket RESOURCE_GROUPa , LOCATION, SERVICE_ACCOUNT_NAME, SUBSCRIPTIONUSER_ASSIGNED_IDENTITY_NAMEés FEDERATED_IDENTITY_CREDENTIAL_NAME.

    export RESOURCE_GROUP="myResourceGroup"
    export LOCATION="westcentralus"
    export SERVICE_ACCOUNT_NAMESPACE="default"
    export SERVICE_ACCOUNT_NAME="workload-identity-sa"
    export SUBSCRIPTION="$(az account show --query id --output tsv)"
    export USER_ASSIGNED_IDENTITY_NAME="myIdentity"
    export FEDERATED_IDENTITY_CREDENTIAL_NAME="myFedIdentity"
    export KEYVAULT_NAME="azwi-kv-tutorial"
    export KEYVAULT_SECRET_NAME="my-secret"
    

AKS-fürt létrehozása

  1. Hozzon létre egy AKS-fürtöt az az aks create paranccsal a paraméterrel az --enable-oidc-issuer OIDC-kiállító használatához.

    az aks create --resource-group "${RESOURCE_GROUP}" --name myAKSCluster --node-count 1 --enable-oidc-issuer --enable-workload-identity --generate-ssh-keys
    

    Néhány perc elteltével a parancs befejeződik, és JSON formátumú információkat ad vissza a fürtről.

  2. Kérje le az OIDC-kiállító URL-címét, és mentse egy környezeti változóba az alábbi paranccsal. Cserélje le az argumentumok -nalapértelmezett értékét , amely a fürt neve.

    export AKS_OIDC_ISSUER="$(az aks show --name myAKSCluster --resource-group "${RESOURCE_GROUP}" --query "oidcIssuerProfile.issuerUrl" -o tsv)"
    

    A változónak a következő példához hasonló kiállítói URL-címet kell tartalmaznia:

    https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/
    

    Alapértelmezés szerint a kiállító az alap URL-címet https://{region}.oic.prod-aks.azure.comhasználja, ahol az érték {region} megegyezik az AKS-fürt üzembe helyezésének helyével.

Azure Key Vault és titkos kulcs létrehozása

  1. Hozzon létre egy Azure Key Vaultot az oktatóanyagban létrehozott erőforráscsoportban az az keyvault create paranccsal.

    az keyvault create --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --name "${KEYVAULT_NAME}" --enable-rbac-authorization false
    

    A parancs kimenete az újonnan létrehozott kulcstartó tulajdonságait jeleníti meg. Jegyezze fel az alábbi két tulajdonságot:

    • Name: A paraméternek --name megadott tárolónév.
    • vaultUri: A példában ez a következő https://<your-unique-keyvault-name>.vault.azure.net/: . A tárolót a REST API-ján keresztül használó alkalmazásoknak ezt az URI-t kell használniuk.

    Az Azure-fiókja jelenleg az egyetlen, amelyik jogosult arra, hogy műveleteket végezzen ezen az új tárolón.

  2. Adjon hozzá egy titkos kulcsot a tárolóhoz az az keyvault secret set paranccsal. A jelszó a környezeti változóhoz KEYVAULT_SECRET_NAME megadott érték, és benne tárolja a Hello! értékét.

    az keyvault secret set --vault-name "${KEYVAULT_NAME}" --name "${KEYVAULT_SECRET_NAME}" --value 'Hello!'
    
  3. Adja hozzá a Key Vault URL-címét a környezeti változóhoz KEYVAULT_URL az az keyvault show paranccsal.

    export KEYVAULT_URL="$(az keyvault show --resource-group "${RESOURCE_GROUP}" --name ${KEYVAULT_NAME} --query properties.vaultUri -o tsv)"
    

Felügyelt identitás létrehozása és engedélyek megadása a titkos kód eléréséhez

  1. Állítson be egy adott előfizetést aktuális aktív előfizetésként az az account set paranccsal.

    az account set --subscription "${SUBSCRIPTION}"
    
  2. Felügyelt identitás létrehozása az az identity create paranccsal.

    az identity create --name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --subscription "${SUBSCRIPTION}"
    
  3. Állítson be egy hozzáférési szabályzatot a felügyelt identitáshoz a Key Vault titkos kulcsának eléréséhez az alábbi parancsokkal.

    export USER_ASSIGNED_CLIENT_ID="$(az identity show --resource-group "${RESOURCE_GROUP}" --name "${USER_ASSIGNED_IDENTITY_NAME}" --query 'clientId' -otsv)"
    
    az keyvault set-policy --name "${KEYVAULT_NAME}" --secret-permissions get --spn "${USER_ASSIGNED_CLIENT_ID}"
    

Kubernetes-szolgáltatásfiók létrehozása

  1. Hozzon létre egy Kubernetes-szolgáltatásfiókot, és jegyzetelje meg az előző lépésben létrehozott felügyelt identitás ügyfélazonosítójával az az aks get-credentials paranccsal. Cserélje le a fürt és az erőforráscsoport nevének alapértelmezett értékét.

    az aks get-credentials --name myAKSCluster --resource-group "${RESOURCE_GROUP}"
    
  2. Másolja a következő többsoros bemenetet a terminálba, és futtassa a parancsot a szolgáltatásfiók létrehozásához.

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      annotations:
        azure.workload.identity/client-id: ${USER_ASSIGNED_CLIENT_ID}
      name: ${SERVICE_ACCOUNT_NAME}
      namespace: ${SERVICE_ACCOUNT_NAMESPACE}
    EOF
    

    A következő kimenet hasonlít az identitás sikeres létrehozására:

    Serviceaccount/workload-identity-sa created
    

Összevont identitás hitelesítő adatainak létrehozása

  • Hozza létre az összevont identitás hitelesítő adatait a felügyelt identitás, a szolgáltatásfiók kiállítója és a tulajdonos között az az identity federated-credential create paranccsal.

    az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name ${USER_ASSIGNED_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --issuer ${AKS_OIDC_ISSUER} --subject system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}
    

    Feljegyzés

    Az összevont identitás hitelesítő adatainak propagálása néhány másodpercet vesz igénybe a kezdeti hozzáadás után. Ha az összevont identitás hitelesítő adatainak hozzáadása után azonnal elérhető egy jogkivonat-kérés, előfordulhat, hogy néhány percig sikertelen lesz, mivel a gyorsítótár a régi adatokkal van feltöltve a könyvtárban. A probléma elkerülése érdekében az összevont identitás hitelesítő adatainak hozzáadása után némi késést adhat hozzá.

A számítási feladat üzembe helyezése

  1. Helyezzen üzembe egy podot, amely az előző lépésben létrehozott szolgáltatásfiókra hivatkozik az alábbi paranccsal.

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: quick-start
      namespace: ${SERVICE_ACCOUNT_NAMESPACE}
      labels:
        azure.workload.identity/use: "true"
    spec:
      serviceAccountName: ${SERVICE_ACCOUNT_NAME}
      containers:
        - image: ghcr.io/azure/azure-workload-identity/msal-go
          name: oidc
          env:
          - name: KEYVAULT_URL
            value: ${KEYVAULT_URL}
          - name: SECRET_NAME
            value: ${KEYVAULT_SECRET_NAME}
      nodeSelector:
        kubernetes.io/os: linux
    EOF
    

    A következő kimenet hasonlít a pod sikeres létrehozására:

    pod/quick-start created
    
  2. Ellenőrizze, hogy az összes tulajdonság megfelelően van-e injektálva a webhookkal a kubectl describe paranccsal.

    kubectl describe pod quick-start
    
  3. Ellenőrizze, hogy a pod képes-e jogkivonatot lekérni, és a kubectl-naplók parancsával elérni a titkos kulcsot a Key Vaultból.

    kubectl logs quick-start
    

    A következő kimenet hasonlít a jogkivonat sikeres elérésére:

    I1013 22:49:29.872708       1 main.go:30] "successfully got secret" secret="Hello!"
    

Az erőforrások eltávolítása

Előfordulhat, hogy ezeket az erőforrásokat a helyén szeretné hagyni. Ha már nincs szüksége ezekre az erőforrásokra, törölje az alábbi parancsokat.

  1. Törölje a podot a kubectl delete pod paranccsal.

    kubectl delete pod quick-start
    
  2. Törölje a szolgáltatásfiókot a kubectl delete sa paranccsal.

    kubectl delete sa "${SERVICE_ACCOUNT_NAME}" --namespace "${SERVICE_ACCOUNT_NAMESPACE}"
    
  3. Törölje az Azure-erőforráscsoportot és annak összes erőforrását az az group delete paranccsal.

    az group delete --name "${RESOURCE_GROUP}"
    

Következő lépések

Ebben az oktatóanyagban üzembe helyezett egy Kubernetes-fürtöt, majd üzembe helyezett egy egyszerű tárolóalkalmazást egy Microsoft Entra Számítási feladat ID való működés teszteléséhez.

Ez az oktatóanyag bevezető célokat szolgál. Az éles AKS-sel való teljes körű megoldások létrehozásával kapcsolatos útmutatásért tekintse meg az AKS-megoldásokkal kapcsolatos útmutatást.