Sdílet prostřednictvím


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:

  1. Povolte funkci identity úloh v novém nebo existujícím clusteru Kubernetes s podporou Arc.
  2. Vytvořte spravovanou identitu (nebo registraci aplikace) a účet služby Kubernetes.
  3. Nakonfigurujte spravovanou identitu pro federaci tokenů.
  4. Nakonfigurujte poznámky účtu služby a popisky podů aplikací tak, aby používaly identitu úloh.
  5. Nakonfigurujte nastavení identity úloh v clusteru Kubernetes.
  6. 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ů:

  1. Vytvořte konfigurační soubor k3s.

  2. Ú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'`
    
  3. Uložte soubor config.yaml.

  4. 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