Share via


Számítási feladatok identitásának üzembe helyezése és konfigurálása Egy Azure Kubernetes Service-fürtön

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. Ebben a cikkben:

  • AKS-fürt üzembe helyezése az OpenID Csatlakozás-kiállítót és egy Microsoft Entra Számítási feladat ID tartalmazó Azure CLI-vel
  • Hozzáférés biztosítása az Azure Key Vaulthoz
  • Microsoft Entra Számítási feladat ID és Kubernetes-szolgáltatásfiók létrehozása
  • Konfigurálja a felügyelt identitást a jogkivonat-összevonáshoz.

Ez a cikk feltételezi, hogy alapszintű ismereteket szerzett a Kubernetes-fogalmakról. További információkért tekintse meg az Azure Kubernetes Service (AKS) Kubernetes alapfogalmait. Ha nem ismeri a Microsoft Entra Számítási feladat ID, tekintse meg az alábbi Áttekintés cikket.

  • 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ás rendelkezik 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 paranccsal kell számlázni.

Feljegyzés

Ahelyett, hogy manuálisan konfigurálja az összes lépést, van egy másik, Service Csatlakozás or nevű implementáció, amely segít bizonyos lépések automatikus konfigurálásában és ugyanazon eredmény elérésében. Lásd még: Oktatóanyag: Csatlakozás azure-tárfiókba az Azure Kubernetes Service-ben (AKS) a Service Csatlakozás or használatával számítási feladat identitásával.

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.

Futtassa az alábbi parancsokat ezeknek a változóknak a létrehozásához. 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"

AKS-fürt létrehozása

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 alábbi példa egy myAKSCluster nevű fürtöt hoz létre egy csomóponttal a myResourceGroupban:

az aks create --resource-group "${RESOURCE_GROUP}" --name myAKSCluster --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.

Feljegyzés

AKS-fürt létrehozásakor a rendszer automatikusan létrehoz egy második erőforráscsoportot az AKS-erőforrások tárolásához. További információ: Miért jön létre két erőforráscsoport az AKS-sel?

Meglévő AKS-fürt frissítése

Az AKS-fürtöket az az aks update paranccsal és a --enable-workload-identity paraméterrel frissítheti az --enable-oidc-issuer OIDC-kiállító használatához és a számítási feladatok identitásának engedélyezéséhez. Az alábbi példa egy myAKSCluster nevű fürtöt frissít:

az aks update --resource-group "${RESOURCE_GROUP}" --name myAKSCluster --enable-oidc-issuer --enable-workload-identity

Az OIDC-kiállító URL-címének lekérése

Az OIDC-kiállító URL-címének lekéréséhez és egy környezeti változóba való mentéséhez futtassa az alábbi parancsot. Cserélje le az argumentumok --namealapé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/11111111-1111-1111-1111-111111111111/

Alapértelmezés szerint a kiállító az alap URL-címet https://{region}.oic.prod-aks.azure.com/{tenant_id}/{uuid}használja, ahol az érték {region} megegyezik az AKS-fürt üzembe helyezésének helyével. Az érték {uuid} az OIDC-kulcsot jelöli.

Felügyelt identitás létrehozása

Az Azure CLI az account set parancsával beállíthatja, hogy egy adott előfizetés legyen az aktuális aktív előfizetés. Ezután az az identity create paranccsal hozzon létre egy felügyelt identitást.

az identity create --name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --subscription "${SUBSCRIPTION}"

Ezután hozzunk létre egy változót a felügyelt identitásazonosítóhoz.

export USER_ASSIGNED_CLIENT_ID="$(az identity show --resource-group "${RESOURCE_GROUP}" --name "${USER_ASSIGNED_IDENTITY_NAME}" --query 'clientId' -o tsv)"

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

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. Használja az az aks get-credentials parancsot , és cserélje le a fürt nevének és az erőforráscsoport nevének értékeit.

az aks get-credentials --name myAKSCluster --resource-group "${RESOURCE_GROUP}"

Másolja és illessze be a következő többsoros bemenetet az Azure CLI-ben.

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

Az az identity federated-credential create paranccsal 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 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}" --audience api://AzureADTokenExchange

Feljegyzés

Az összevont identitás hitelesítő adatának propagálása néhány másodpercet vesz igénybe a kezdeti hozzáadását követően. Ha a jogkivonat-kérés közvetlenül az összevont identitás hitelesítő adatainak hozzáadása után történik, az néhány percig sikertelen lehet, mivel a gyorsítótár 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á.

Az alkalmazás üzembe helyezése

Az alkalmazás podok telepítésekor a jegyzéknek hivatkoznia kell a Kubernetes-szolgáltatásfiók létrehozása lépésben létrehozott szolgáltatásfiókra . Az alábbi jegyzék bemutatja, hogyan hivatkozhat a fiókra, különösen a metaadatok\névtér és a spec\serviceAccountName tulajdonságokra:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  name: your-pod
  namespace: "${SERVICE_ACCOUNT_NAMESPACE}"
  labels:
    azure.workload.identity/use: "true"  # Required, only the pods with this label can use workload identity
spec:
  serviceAccountName: "${SERVICE_ACCOUNT_NAME}"
  containers:
    - image: <your image>
      name: <containerName>
EOF

Fontos

Győződjön meg arról, hogy a számítási feladat identitását használó alkalmazás podjai hozzáadták a következő címkét azure.workload.identity/use: "true" a pod specifikációjához, ellenkező esetben a podok újraindítása után meghiúsulnak.

Nem kötelező – Engedélyek megadása az Azure Key Vault eléréséhez

Erre a lépésre akkor van szükség, ha podról kell hozzáférnie az Azure Key Vaultban csatlakoztatott titkos kulcsokhoz, kulcsokhoz és tanúsítványokhoz. A hozzáférés felügyelt identitással való konfigurálásához hajtsa végre az alábbi lépéseket. Ezek a lépések feltételezik, hogy már létrehozott és konfigurált Azure Key Vaultot az előfizetésében. Ha nincs ilyenje, olvassa el az Azure Key Vault létrehozása az Azure CLI használatával című témakört.

A folytatás előtt a következő információkra van szüksége:

  • A Key Vault neve
  • A Key Vaultot tartalmazó erőforráscsoport

Ezeket az információkat az Azure CLI-paranccsal kérdezheti le: az keyvault list.

  1. Állítson be egy hozzáférési szabályzatot a felügyelt identitáshoz a kulcstartó titkos kulcsainak eléréséhez az alábbi parancsok futtatásával:

    export KEYVAULT_RESOURCE_GROUP="myResourceGroup"
    export KEYVAULT_NAME="myKeyVault"
    export USER_ASSIGNED_CLIENT_ID="$(az identity show --resource-group "${RESOURCE_GROUP}" --name "${USER_ASSIGNED_IDENTITY_NAME}" --query 'clientId' -o tsv)"
    
    az keyvault set-policy --name "${KEYVAULT_NAME}" --secret-permissions get --spn "${USER_ASSIGNED_CLIENT_ID}"
    
  2. Titkos kulcs létrehozása a Key Vaultban:

    export KEYVAULT_SECRET_NAME="my-secret"
    
    az keyvault secret set --vault-name "${KEYVAULT_NAME}" \
       --name "${KEYVAULT_SECRET_NAME}" \
       --value "Hello\!"
    
  3. Key Vault URL-címének exportálása:

    export KEYVAULT_URL="$(az keyvault show --resource-group ${KEYVAULT_RESOURCE_GROUP} --name ${KEYVAULT_NAME} --query properties.vaultUri -o tsv)"
    
  4. Helyezzen üzembe egy podot, amely a fenti szolgáltatásfiókra és a Key Vault URL-címére hivatkozik:

    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
    

Annak ellenőrzéséhez, hogy a webhook megfelelően injektálja-e az összes tulajdonságot, használja a kubectl leíró parancsot:

kubectl describe pod quick-start | grep "SECRET_NAME:"

Ha sikeres, a kimenetnek a következőhöz hasonlónak kell lennie:

      SECRET_NAME:                 ${KEYVAULT_SECRET_NAME}

Annak ellenőrzéséhez, hogy a pod képes-e jogkivonatot lekérni és hozzáférni az erőforráshoz, használja a kubectl logs parancsot:

kubectl logs quick-start

Ha sikeres, a kimenetnek a következőhöz hasonlónak kell lennie:

I0114 10:35:09.795900       1 main.go:63] "successfully got secret" secret="Hello\\!"

Számítási feladatok identitásának letiltása

Ha le szeretné tiltani a Microsoft Entra Számítási feladat ID azon az AKS-fürtön, ahol engedélyezve és konfigurálva van, futtassa a következő parancsot:

az aks update --resource-group "${RESOURCE_GROUP}" --name myAKSCluster --disable-workload-identity

Következő lépések

Ebben a cikkben üzembe helyezett egy Kubernetes-fürtöt, és konfigurálta egy számítási feladat identitásának használatára az alkalmazás számítási feladatainak előkészítéséhez a hitelesítő adatokkal való hitelesítéshez. Most már készen áll az alkalmazás üzembe helyezésére és konfigurálására, hogy a számítási feladat identitását az Azure Identity ügyfélkódtár legújabb verziójával használja. Ha nem tudja átírni az alkalmazást a legújabb ügyfélkódtár-verzió használatára, beállíthatja az alkalmazás podját a felügyelt identitás és a számítási feladat identitásának rövid távú migrálási megoldásként történő hitelesítésére.