Kurz: Použití identity úloh s aplikací ve službě Azure Kubernetes Service (AKS)
Azure Kubernetes Service (AKS) je spravovaná služba Kubernetes, která umožňuje rychle nasazovat a spravovat clustery Kubernetes. V tomto kurzu se naučíte:
- Nasaďte cluster AKS pomocí Azure CLI s vystavitelem a spravovanou identitou openID Připojení (OIDC).
- Vytvoření služby Azure Key Vault a tajného kódu
- Vytvořte ID úloh Microsoft Entra a účet služby Kubernetes.
- Nakonfigurujte spravovanou identitu pro federaci tokenů.
- Nasaďte úlohu a ověřte ověřování pomocí identity úlohy.
Než začnete
- V tomto kurzu se předpokládá základní znalost konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro Službu Azure Kubernetes Service (AKS).
- Pokud ID úloh Microsoft Entra neznáte, podívejte se na přehled ID úloh Microsoft Entra.
- Při vytváření clusteru AKS se automaticky vytvoří druhá skupina prostředků pro uložení prostředků AKS. Další informace najdete v tématu Proč se v AKS vytvářejí dvě skupiny prostředků?
Požadavky
- Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
- Tento článek vyžaduje verzi 2.47.0 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
- Identita, kterou používáte k vytvoření clusteru, musí mít odpovídající minimální oprávnění. Další informace o přístupu a identitě pro AKS najdete v tématu Možnosti přístupu a identit pro Službu Azure Kubernetes Service (AKS).
- Pokud máte více předplatných Azure, vyberte odpovídající ID předplatného, ve kterém se mají prostředky fakturovat pomocí příkazu az account set .
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logická skupina, ve které se nasazují a spravují prostředky Azure. Při vytváření skupiny prostředků se zobrazí výzva k zadání umístění. Toto umístění je umístění úložiště metadat vaší skupiny prostředků a místo, kde vaše prostředky běží v Azure, pokud během vytváření prostředků nezadáte jinou oblast.
Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění eastus.
Vytvořte skupinu prostředků pomocí příkazu az group create .
az group create --name myResourceGroup --location eastus
Následující příklad výstupu se podobá úspěšnému vytvoření skupiny prostředků:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Export proměnných prostředí
Chcete-li zjednodušit kroky konfigurace požadovaných identit, následující postup definuje proměnné prostředí pro referenci v clusteru.
Vytvořte tyto proměnné pomocí následujících příkazů. Nahraďte výchozí hodnoty pro
RESOURCE_GROUP
,LOCATION
,SERVICE_ACCOUNT_NAME
,SUBSCRIPTION
,USER_ASSIGNED_IDENTITY_NAME
aFEDERATED_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"
Vytvoření clusteru AKS
Vytvořte cluster AKS pomocí příkazu az aks create s parametrem
--enable-oidc-issuer
pro použití vystavitele OIDC.az aks create --resource-group "${RESOURCE_GROUP}" --name myAKSCluster --node-count 1 --enable-oidc-issuer --enable-workload-identity --generate-ssh-keys
Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.
Pomocí následujícího příkazu získejte adresu URL vystavitele OIDC a uložte ji do proměnné prostředí. Nahraďte výchozí hodnotu argumentů
-n
, což je název clusteru.export AKS_OIDC_ISSUER="$(az aks show --name myAKSCluster --resource-group "${RESOURCE_GROUP}" --query "oidcIssuerProfile.issuerUrl" -o tsv)"
Proměnná by měla obsahovat adresu URL vystavitele podobnou následujícímu příkladu:
https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/
Ve výchozím nastavení je vystavitel nastaven na použití základní adresy URL
https://{region}.oic.prod-aks.azure.com
, kde hodnota pro{region}
shodu s umístěním clusteru AKS je nasazena.
Vytvoření služby Azure Key Vault a tajného kódu
Pomocí příkazu az keyvault create vytvořte službu Azure Key Vault ve skupině prostředků, kterou jste vytvořili v tomto kurzu.
az keyvault create --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --name "${KEYVAULT_NAME}" --enable-rbac-authorization false
Výstup tohoto příkazu zobrazuje vlastnosti nově vytvořeného trezoru klíčů. Poznamenejte si hodnoty dvou vlastností uvedených níže:
Name
: Název trezoru, který jste zadali do parametru--name
.vaultUri
: V příkladu jehttps://<your-unique-keyvault-name>.vault.azure.net/
to . Aplikace, které používají váš trezor prostřednictvím REST API musí používat tento identifikátor URI.
V tuto chvíli je váš účet Azure jediným účtem s oprávněním provádět jakékoli operace s tímto novým trezorem.
Přidejte do trezoru tajný klíč pomocí příkazu az keyvault secret set . Heslo je hodnota, kterou jste zadali pro proměnnou
KEYVAULT_SECRET_NAME
prostředí, a uloží do ní hodnotu Hello! .az keyvault secret set --vault-name "${KEYVAULT_NAME}" --name "${KEYVAULT_SECRET_NAME}" --value 'Hello!'
Přidejte adresu URL služby Key Vault do proměnné
KEYVAULT_URL
prostředí pomocí příkazu az keyvault show .export KEYVAULT_URL="$(az keyvault show --resource-group "${RESOURCE_GROUP}" --name ${KEYVAULT_NAME} --query properties.vaultUri -o tsv)"
Vytvoření spravované identity a udělení oprávnění pro přístup k tajnému kódu
Pomocí příkazu az account set nastavte konkrétní předplatné jako aktuální aktivní předplatné.
az account set --subscription "${SUBSCRIPTION}"
Vytvořte spravovanou identitu pomocí příkazu az identity create .
az identity create --name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --subscription "${SUBSCRIPTION}"
Pomocí následujících příkazů nastavte zásadu přístupu pro spravovanou identitu pro přístup k tajnému kódu služby Key Vault.
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}"
Vytvoření účtu služby Kubernetes
Vytvořte účet služby Kubernetes a pomocí příkazu az aks get-credentials ho označte ID klienta spravované identity vytvořené v předchozím kroku. Nahraďte výchozí hodnotu názvu clusteru a název skupiny prostředků.
az aks get-credentials --name myAKSCluster --resource-group "${RESOURCE_GROUP}"
Zkopírujte následující víceřádkový vstup do terminálu a spuštěním příkazu vytvořte účet služby.
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
Následující výstup se podobá úspěšnému vytvoření identity:
Serviceaccount/workload-identity-sa created
Vytvoření přihlašovacích údajů federované identity
Pomocí příkazu az identity federated-credential create vytvořte přihlašovací údaje federované identity mezi spravovanou identitou, vystavitelem účtu služby a předmětem.
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}
Poznámka:
Rozšíření přihlašovacích údajů federované identity po jeho počátečním přidání trvá několik sekund. Pokud je žádost o token okamžitě dostupná po přidání přihlašovacích údajů federované identity, může docházet k selhání po dobu několika minut, protože mezipaměť se naplní v adresáři starými daty. Abyste se tomuto problému vyhnuli, můžete po přidání přihlašovacích údajů federované identity přidat mírné zpoždění.
Nasazení úlohy
Pomocí následujícího příkazu nasaďte pod, který odkazuje na účet služby vytvořený v předchozím kroku.
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
Následující výstup se podobá úspěšnému vytvoření podu:
pod/quick-start created
Pomocí příkazu kubectl describe zkontrolujte, jestli se všechny vlastnosti správně vloží do webhooku.
kubectl describe pod quick-start
Pomocí příkazu kubectl logs ověřte, že pod může získat token a získat přístup k tajnému kódu ze služby Key Vault.
kubectl logs quick-start
Následující výstup se podobá úspěšnému přístupu tokenu:
I1013 22:49:29.872708 1 main.go:30] "successfully got secret" secret="Hello!"
Vyčištění prostředků
Tyto prostředky můžete nechat na místě. Pokud už tyto prostředky nepotřebujete, odstraňte je pomocí následujících příkazů.
Odstraňte pod pomocí
kubectl delete pod
příkazu.kubectl delete pod quick-start
Pomocí příkazu odstraňte účet
kubectl delete sa
služby.kubectl delete sa "${SERVICE_ACCOUNT_NAME}" --namespace "${SERVICE_ACCOUNT_NAMESPACE}"
Pomocí příkazu az group delete odstraňte skupinu prostředků Azure a všechny její prostředky.
az group delete --name "${RESOURCE_GROUP}"
Další kroky
V tomto kurzu jste nasadili cluster Kubernetes a pak nasadili jednoduchou aplikaci kontejneru pro testování práce s ID úloh Microsoft Entra.
Tento kurz je určený pro úvodní účely. Pokyny k vytváření úplných řešení pomocí AKS pro produkční prostředí najdete v pokynech k řešení AKS.