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é
- Ez az oktatóanyag feltételezi a Kubernetes-fogalmak alapszintű megértését. 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 a Microsoft Entra Számítási feladat ID áttekintését.
- 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?
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_GROUP
a ,LOCATION
,SERVICE_ACCOUNT_NAME
,SUBSCRIPTION
USER_ASSIGNED_IDENTITY_NAME
ésFEDERATED_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
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.
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
-n
alapé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.com
haszná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
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.
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!'
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
Á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}"
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}"
Á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
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}"
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
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
Ellenőrizze, hogy az összes tulajdonság megfelelően van-e injektálva a webhookkal a kubectl describe paranccsal.
kubectl describe pod quick-start
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.
Törölje a podot a
kubectl delete pod
paranccsal.kubectl delete pod quick-start
Törölje a szolgáltatásfiókot a
kubectl delete sa
paranccsal.kubectl delete sa "${SERVICE_ACCOUNT_NAME}" --namespace "${SERVICE_ACCOUNT_NAMESPACE}"
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.