Nasazení a konfigurace federace identit úloh v Kubernetes s podporou Azure Arc (Preview)
Funkci identity úloh můžete povolit v clusteru Kubernetes s podporou Azure Arc pomocí Azure CLI. Tento proces se řídí těmito základními kroky:
- Povolte funkci identity úloh v novém nebo existujícím clusteru Kubernetes s podporou Arc.
- Vytvořte spravovanou identitu (nebo registraci aplikace) a účet služby Kubernetes.
- Nakonfigurujte spravovanou identitu pro federaci tokenů.
- Nakonfigurujte poznámky účtu služby a popisky podů aplikací tak, aby používaly identitu úloh.
- Nakonfigurujte nastavení identity úloh v clusteru Kubernetes.
- Zakažte identitu úloh v clusteru.
Přehled této funkce najdete v tématu Federace identit úloh v Kubernetes s podporou Azure Arc (Preview).
Důležité
Funkce federace identit úloh Azure Arc je aktuálně ve verzi PREVIEW. Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.
Tip
Tento článek popisuje kroky potřebné k nasazení a konfiguraci identity úloh v clusteru Kubernetes s podporou Arc. Informace o povolení identity úloh v jiných typech clusterů najdete v následujících článcích:
Požadavky
- Identita úloh pro clustery Kubernetes s podporou Azure Arc (Preview) se podporuje v následujících distribucích Kubernetes:
- Cluster Ubuntu Linux se systémem K3s
- AKS v Edge Essentials
- AKS v HCI 23H2
Pokud chcete použít funkci identity úloh, musíte mít Azure CLI verze 2.64 nebo vyšší a az connectedk8s
verzi 1.10.0 nebo vyšší. Před aktualizací verze az connectedk8s
nezapomeňte aktualizovat verzi Azure CLI. Pokud používáte Azure Cloud Shell, nainstaluje se nejnovější verze Azure CLI.
Povolení identity úloh v clusteru
Podle příslušných kroků povolte funkci identity úloh pro nový cluster Kubernetes s podporou Arc nebo existující. V obou případech nezapomeňte nahradit název a skupinu prostředků hodnotami a podle potřeby nakonfigurovat parametry.
Parametr | Popis | Povinní účastníci |
---|---|---|
--enable-oidc-issuer |
Generuje a hostuje adresu URL vystavitele OIDC, což je veřejně přístupná adresa URL, která serveru rozhraní API umožňuje najít veřejné podpisové klíče pro ověření tokenů. | Požaduje se |
--enable-workload-identity |
Nainstaluje webhook pro ztlumení přístupu, který vypíše token podepsaného účtu služby do dobře známé cesty a vloží proměnné prostředí související s ověřováním do podů aplikace na základě nastavení účtu služby s poznámkami. Pokud tento parametr není povolený, musíte u nového clusteru připojit promítaný svazek do dobře známé cesty, která pro cestu zpřístupní token podepsaného účtu služby. | Volitelné |
Nastavení proměnných prostředí
Pro usnadnění používání se na proměnné prostředí definované níže odkazují v příkladech v tomto článku. Nahraďte tyto hodnoty vlastními hodnotami:
export RESOURCE_GROUP="myRG"
export LOCATION="eastus"
export CLUSTER_NAME="mycluster"
export SERVICE_ACCOUNT_NAMESPACE="myKubernetesnamespace"
export SERVICE_ACCOUNT_NAME="mysa"
export SUBSCRIPTION="$(az account show --query id --output tsv)"
export USER_ASSIGNED_IDENTITY_NAME="myIdentity"
export FEDERATED_IDENTITY_CREDENTIAL_NAME="myFedIdentity"
Pokud chcete vytvořit cluster s podporou Azure Arc s povolenou identitou úloh, použijte následující příkaz:
az connectedk8s connect --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" --enable-oidc-issuer –-enable-workload-identity
Pokud chcete povolit identitu úloh v existujícím clusteru Kubernetes s podporou Arc, použijte update
příkaz.
az connectedk8s update --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" --enable-oidc-issuer --enable-workload-identity
Načtení adresy URL vystavitele OIDC
Načtěte adresu URL vystavitele OIDC a uložte ji do proměnné prostředí. Tato adresa URL vystavitele se použije v následujícím kroku.
export OIDC_ISSUER="$(az connectk8s show --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" \
--query "oidcIssuerProfile.issuerUrl" \
--output tsv)"
Pokud chcete zobrazit proměnnou prostředí, zadejte echo ${OIDC_ISSUER}
. Proměnná prostředí by měla obsahovat adresu URL vystavitele, podobně jako v následujícím příkladu:
https://northamerica.oic.prod-arc.azure.com/00000000-0000-0000-0000-000000000000/12345678-1234-1234-1234-123456789123/
Ve výchozím nastavení je vystavitel nastaven na použití základní adresy URL https://{region}.oic.prod-arc.azure.com/{tenant_id}/{uuid}
, kde hodnota odpovídá {region}
umístění, kde se vytvoří cluster Kubernetes s podporou Arc. Hodnota {uuid}
představuje klíč OpenID Connect (OIDC), což je neměnný náhodně vygenerovaný identifikátor GUID pro každý cluster.
Vytvoření spravované identity
az identity create
Pomocí příkazu vytvořte spravovanou identitu přiřazenou uživatelem. S identitou úlohy se vytvoří vztah důvěryhodnosti mezi tokenem identity správy přiřazené uživatelem a tokenem účtu účtu služby clusteru Kubernetes.
az identity create \
--name "${USER_ASSIGNED_IDENTITY_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--subscription "${SUBSCRIPTION}"
Načtěte ID klienta spravované identity a uložte ho do proměnné prostředí.
export USER_ASSIGNED_CLIENT_ID="$(az identity show \
--resource-group "${RESOURCE_GROUP}" \
--name "${USER_ASSIGNED_IDENTITY_NAME}" \
--query 'clientId' \
--output tsv)"
Vytvoření účtu služby Kubernetes
Vytvořte účet služby Kubernetes a označte ho ID klienta spravované identity vytvořené v předchozím kroku. Podepsané tokeny přidružené k účtu služby Kubernetes se po navázání vztahu důvěryhodnosti mezi těmito dvěma tokeny vymění za token ID Microsoft Entra.
Pomocí následujícího fragmentu kódu YAML vytvořte účet služby s přidanou poznámkou identity úlohy.
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
azure.workload.identity/client-id: "${USER_ASSIGNED_CLIENT_ID}"
name: "${SERVICE_ACCOUNT_NAME}"
namespace: "${SERVICE_ACCOUNT_NAMESPACE}"
Vytvoření přihlašovacích údajů federované identity
az identity federated-credential create
Pomocí příkazu vytvořte přihlašovací údaje federované identity mezi spravovanou identitou, vystavitelem účtu služby a předmětem. Tento krok vytvoří vztah důvěryhodnosti mezi clusterem Kubernetes a Microsoft Entra pro výměnu tokenů. Další informace o přihlašovacích údajích federované identity v Microsoft Entra najdete v tématu Přehled přihlašovacích údajů federované identity v Microsoft Entra ID.
az identity federated-credential create \
--name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} \
--identity-name "${USER_ASSIGNED_IDENTITY_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--issuer "${OIDC_ISSUER}" \
--subject system:serviceaccount:"${SERVICE_ACCOUNT_NAMESPACE}":"${SERVICE_ACCOUNT_NAME}" \
--audience api://AzureADTokenExchange
Poznámka:
Po přidánípřihlašovacích Pokud se žádost o token provede okamžitě po přidání přihlašovacích údajů federované identity, může požadavek selhat, dokud se mezipaměť neaktualizuje. Pokud se chcete tomuto problému vyhnout, přidejte do skriptů mírné zpoždění po přidání přihlašovacích údajů federované identity.
Konfigurace poznámek a popisků podů účtu služby
Pro konfiguraci identity úloh na základě požadavků aplikace jsou k dispozici následující poznámky k účtu služby a podům. Popisek podu uvedený níže je povinný, pokud –-enable-workload-identity
je nastaven na true
.
Poznámky k účtu služby
Všechny poznámky k účtu služby jsou volitelné. Pokud není zadána poznámka, použije se výchozí hodnota.
Poznámka | Popis | Výchozí |
---|---|---|
azure.workload.identity/client-id |
ID klienta aplikace Microsoft Entra, které se má použít s podem. | |
azure.workload.identity/tenant-id |
ID tenanta Azure, ve kterém je zaregistrovaná aplikace Microsoft Entra. | AZURE_TENANT_ID Proměnná prostředí extrahovaná z azure-wi-webhook-config objektu ConfigMap |
azure.workload.identity/service-account-token-expiration |
expirationSeconds pole pro token účtu projektované služby. Nakonfigurujte, aby se zabránilo výpadkům způsobeným chybami během aktualizace tokenu účtu služby. Vypršení platnosti tokenu účtu služby Kubernetes neodpovídá tokenům Microsoft Entra. Platnost tokenů Microsoft Entra vyprší 24 hodin po jejich vystavení. |
3600 (podporovaný rozsah je 3600–86400) |
Popisky podů
Poznámka | Popis | Doporučená hodnota | Požaduje se |
---|---|---|---|
azure.workload.identity/use |
Požadováno ve specifikaci šablony podu. Pokud –-enable-workload-identity je nastavená hodnota true , ztlumí se pouze pody s tímto popiskem pomocí webhooku pro ztlumení přístupu pro vložení proměnných prostředí specifických pro Azure a svazku tokenu účtu projektované služby. |
true |
Ano |
Poznámky podů
Všechny poznámky podu jsou volitelné. Pokud není zadána poznámka, použije se výchozí hodnota.
Poznámka | Popis | Výchozí |
---|---|---|
azure.workload.identity/service-account-token-expiration |
expirationSeconds pole pro token účtu projektované služby. Nakonfigurujte, aby se zabránilo výpadkům způsobeným chybami během aktualizace tokenu účtu služby. Vypršení platnosti tokenu účtu služby Kubernetes neodpovídá tokenům Microsoft Entra. Platnost tokenů Microsoft Entra vyprší 24 hodin po jejich vystavení. |
3600 (podporovaný rozsah je 3600–86400) |
azure.workload.identity/skip-containers |
Představuje seznam kontejnerů oddělených středníkem, který přeskočí přidání svazku tokenu účtu služby s projektem. Například: container1;container2 . |
Ve výchozím nastavení se do všech kontejnerů přidá svazek tokenu projektu účtu služby, pokud je pod označený azure.workload.identity/use: true . |
Konfigurace nastavení identity úloh v clusteru Kubernetes
Server rozhraní API v clusteru Kubernetes musí být nakonfigurovaný tak, aby vystavoval tokeny účtu služby, které obsahují veřejně přístupnou adresu URL vystavitele OIDC (aby Entra věděla, kde najít veřejné klíče pro ověření tokenu).
Pokud chcete nakonfigurovat nastavení identity úloh v Ubuntu Linuxu s využitím K3s, dokončete konfiguraci pomocí následujících kroků:
Vytvořte konfigurační soubor k3s.
Úpravou
/etc/rancher/k3s/config.yaml
přidáte tato nastavení:`kube-apiserver-arg: - 'service-account-issuer=${OIDC_ISSUER}' - 'service-account-max-token-expiration=24h'`
Uložte soubor config.yaml.
Restartujte server rozhraní API k3s pomocí příkazu
systemctl restart k3s
.Klíče účtu služby doporučujeme často obměnět. Další informace najdete v tématu Obměně klíčů vystavitele účtu služby.
Zakázání identity úloh
Pokud chcete zakázat funkci identity úloh v clusteru Kubernetes s podporou Azure Arc, spusťte následující příkaz:
az connectedk8s update
--resource-group "${RESOURCE_GROUP}"
--name "${CLUSTER_NAME}"
--disable-workload-identity
Další kroky
- Prozkoumejte ukázku konfigurace aplikace tak, aby používala identitu úloh.