Udostępnij za pośrednictwem


Wdrażanie i konfigurowanie federacji tożsamości obciążenia w rozwiązaniu Kubernetes z obsługą usługi Azure Arc (wersja zapoznawcza)

Funkcję tożsamości obciążenia można włączyć w klastrze Kubernetes z obsługą usługi Azure Arc przy użyciu interfejsu wiersza polecenia platformy Azure. Ten proces jest zgodny z tymi ogólnymi krokami:

  1. Włącz funkcję tożsamości obciążenia w nowym lub istniejącym klastrze Kubernetes z obsługą usługi Arc.
  2. Utwórz tożsamość zarządzaną (lub rejestrację aplikacji) i konto usługi Kubernetes.
  3. Skonfiguruj tożsamość zarządzaną na potrzeby federacji tokenów.
  4. Skonfiguruj adnotacje konta usługi i etykiety zasobników aplikacji, aby używać tożsamości obciążenia.
  5. Skonfiguruj ustawienia tożsamości obciążenia w klastrze Kubernetes.
  6. Wyłącz tożsamość obciążenia w klastrze.

Aby zapoznać się z omówieniem tej funkcji, zobacz Federacja tożsamości obciążeń w rozwiązaniu Kubernetes z obsługą usługi Azure Arc (wersja zapoznawcza).

Ważne

Funkcja federacji tożsamości obciążenia usługi Azure Arc jest obecnie dostępna w wersji zapoznawczej. Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.

Napiwek

W tym artykule opisano kroki wymagane do wdrożenia i skonfigurowania tożsamości obciążenia w klastrze Kubernetes z obsługą usługi Arc. Aby dowiedzieć się, jak włączyć tożsamość obciążenia w innych typach klastrów, zobacz następujące artykuły:

Wymagania wstępne

  • Tożsamość obciążenia dla klastrów Kubernetes z obsługą usługi Azure Arc (wersja zapoznawcza) jest obsługiwana w następujących dystrybucjach platformy Kubernetes:
    • Klaster systemu Ubuntu Linux z systemem K3s
    • Usługa AKS w usłudze Edge Essentials
    • Usługa AKS w rozwiązaniu HCI 23H2

Aby korzystać z funkcji tożsamości obciążenia, musisz mieć interfejs wiersza polecenia platformy Azure w wersji 2.64 lub nowszej oraz az connectedk8s wersję 1.10.0 lub nowszą. Pamiętaj, aby zaktualizować wersję interfejsu wiersza polecenia platformy Azure przed zaktualizowaniem wersji az connectedk8s . Jeśli używasz usługi Azure Cloud Shell, zostanie zainstalowana najnowsza wersja interfejsu wiersza polecenia platformy Azure.

Włączanie tożsamości obciążenia w klastrze

Wykonaj odpowiednie kroki, aby włączyć funkcję tożsamości obciążenia dla nowego klastra Kubernetes z obsługą usługi Arc lub istniejącego. W obu przypadkach pamiętaj, aby zastąpić nazwę i grupę zasobów wartościami i skonfigurować parametry zgodnie z potrzebami.

Parametr opis Wymagania
--enable-oidc-issuer Generuje i hostuje adres URL wystawcy OIDC, który jest publicznie dostępnym adresem URL, który umożliwia serwerowi interfejsu API znajdowanie publicznych kluczy podpisywania na potrzeby weryfikowania tokenów.  Wymagania
--enable-workload-identity Instaluje zmutowany element webhook wstępu, który projektuje podpisany token konta usługi do dobrze znanej ścieżki i wprowadza zmienne środowiskowe związane z uwierzytelnianiem do zasobników aplikacji na podstawie ustawień konta usługi z adnotacjami. W przypadku nowego klastra, jeśli ten parametr nie jest włączony, należy zainstalować przewidywany wolumin w dobrze znanej ścieżce, która uwidacznia podpisany token konta usługi do ścieżki. Opcjonalnie

Ustawianie zmiennych środowiskowych

Dla wygody zmienne środowiskowe zdefiniowane poniżej znajdują się w przykładach w tym artykule. Zastąp te wartości własnymi wartościami:

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"

Aby utworzyć klaster z obsługą usługi Azure Arc z włączoną tożsamością obciążenia, użyj następującego polecenia:

az connectedk8s connect --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" --enable-oidc-issuer –-enable-workload-identity

Aby włączyć tożsamość obciążenia w istniejącym klastrze Kubernetes z obsługą usługi Arc, użyj update polecenia .

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

Pobieranie adresu URL wystawcy OIDC

Pobierz adres URL wystawcy OIDC i zapisz go w zmiennej środowiskowej. Ten adres URL wystawcy będzie używany w następnym kroku.

export OIDC_ISSUER="$(az connectk8s show --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" \ 
    --query "oidcIssuerProfile.issuerUrl" \  
    --output tsv)"

Aby wyświetlić zmienną środowiskową, wprowadź .echo ${OIDC_ISSUER} Zmienna środowiskowa powinna zawierać adres URL wystawcy podobny do następującego przykładu:

https://northamerica.oic.prod-arc.azure.com/00000000-0000-0000-0000-000000000000/12345678-1234-1234-1234-123456789123/

Domyślnie wystawca ma używać podstawowego adresu URL https://{region}.oic.prod-arc.azure.com/{tenant_id}/{uuid}, w którym wartość parametru {region} jest zgodna z lokalizacją, w której jest tworzony klaster Kubernetes z włączoną obsługą usługi Arc. Wartość {uuid} reprezentuje klucz OpenID Connect (OIDC), który jest niezmiennym, losowo wygenerowanym identyfikatorem GUID dla każdego klastra.

Tworzenie tożsamości zarządzanej

Użyj polecenia , az identity create aby utworzyć tożsamość zarządzaną przypisaną przez użytkownika. W przypadku tożsamości obciążenia relacja zaufania jest ustanawiana między tokenem tożsamości zarządzania przypisanej przez użytkownika a tokenem konta usługi klastra Kubernetes.

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

Pobierz identyfikator klienta tożsamości zarządzanej i zapisz go w zmiennej środowiskowej.

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

Tworzenie konta usługi Kubernetes

Utwórz konto usługi Kubernetes i dodaj do niego adnotację przy użyciu identyfikatora klienta tożsamości zarządzanej utworzonej w poprzednim kroku. Podpisane tokeny skojarzone z kontem usługi Kubernetes zostaną zamienione na token identyfikatora Entra firmy Microsoft po ustanowieniu relacji zaufania między nimi.

Zastosuj następujący fragment kodu YAML, aby utworzyć konto usługi z dodanymi adnotacjami tożsamości obciążenia.

apiVersion: v1 
kind: ServiceAccount 
metadata: 
  annotations: 
    azure.workload.identity/client-id: "${USER_ASSIGNED_CLIENT_ID}" 
  name: "${SERVICE_ACCOUNT_NAME}" 
  namespace: "${SERVICE_ACCOUNT_NAMESPACE}" 

Tworzenie poświadczeń tożsamości federacyjnej

Użyj polecenia , az identity federated-credential create aby utworzyć poświadczenia tożsamości federacyjnej między tożsamością zarządzaną, wystawcą konta usługi i tematem. Ten krok określa relację zaufania między klastrem Kubernetes i firmą Microsoft Entra na potrzeby wymiany tokenów. Aby uzyskać więcej informacji na temat poświadczeń tożsamości federacyjnej w usłudze Microsoft Entra, zobacz Overview of federated identity credentials in Microsoft Entra ID (Omówienie poświadczeń tożsamości federacyjnej w usłudze 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 

Uwaga

Po dodaniu poświadczeń tożsamości federalnej propagacja trwa kilka sekund. Jeśli żądanie tokenu zostanie wykonane natychmiast po dodaniu poświadczeń tożsamości federacyjnej, żądanie może zakończyć się niepowodzeniem do czasu odświeżenia pamięci podręcznej. Aby uniknąć tego problemu, dodaj niewielkie opóźnienie w skryptach po dodaniu poświadczeń tożsamości federacyjnej.

Konfigurowanie adnotacji konta usługi i etykiet zasobników

Następujące konta usługi i adnotacje zasobników są dostępne do konfigurowania tożsamości obciążenia na podstawie wymagań aplikacji. Etykieta zasobnika określona poniżej jest obowiązkowa, jeśli –-enable-workload-identity ustawiono wartość true.

Adnotacje konta usługi

Wszystkie adnotacje konta usługi są opcjonalne. Jeśli adnotacja nie zostanie określona, zostanie użyta wartość domyślna.

Adnotacja opis Wartość domyślna
azure.workload.identity/client-id Identyfikator klienta aplikacji Microsoft Entra do użycia z zasobnikiem.
azure.workload.identity/tenant-id Identyfikator dzierżawy platformy Azure, w którym zarejestrowano aplikację Microsoft Entra. AZURE_TENANT_ID zmienna środowiskowa wyodrębniona z azure-wi-webhook-config obiektu ConfigMap.
azure.workload.identity/service-account-token-expiration expirationSeconds pole dla przewidywanego tokenu konta usługi. Skonfiguruj, aby zapobiec przestojom spowodowanym przez błędy podczas odświeżania tokenu konta usługi. Wygaśnięcie tokenu konta usługi Kubernetes nie jest skorelowane z tokenami firmy Microsoft Entra. Tokeny firmy Microsoft Entra wygasają 24 godziny po ich wydaniu. 3600 (obsługiwany zakres to 3600–86400)

Etykiety zasobników

Adnotacja opis Zalecana wartość Wymagania
azure.workload.identity/use Wymagane w specyfikacji szablonu zasobnika. Jeśli –-enable-workload-identity jest ustawiona wartość true, tylko zasobniki z tą etykietą są zmutowane przezmutowanie elementu webhook przyjęcia w celu wstrzyknięcia zmiennych środowiskowych specyficznych dla platformy Azure i przewidywanego woluminu tokenu konta usługi. true Tak

Adnotacje zasobników

Wszystkie adnotacje zasobników są opcjonalne. Jeśli adnotacja nie zostanie określona, zostanie użyta wartość domyślna.

Adnotacja opis Wartość domyślna
azure.workload.identity/service-account-token-expiration expirationSeconds pole dla przewidywanego tokenu konta usługi. Skonfiguruj, aby zapobiec przestojom spowodowanym przez błędy podczas odświeżania tokenu konta usługi. Wygaśnięcie tokenu konta usługi Kubernetes nie jest skorelowane z tokenami firmy Microsoft Entra. Tokeny firmy Microsoft Entra wygasają 24 godziny po ich wydaniu. 3600 (obsługiwany zakres to 3600–86400)
azure.workload.identity/skip-containers Reprezentuje rozdzieloną średnikami listę kontenerów, aby pominąć dodawanie przewidywanego woluminu tokenu konta usługi. Na przykład: container1;container2. Domyślnie przewidywany wolumin tokenu konta usługi jest dodawany do wszystkich kontenerów, jeśli zasobnik ma etykietę azure.workload.identity/use: true.

Konfigurowanie ustawień tożsamości obciążenia w klastrze Kubernetes

Serwer interfejsu API w klastrze Kubernetes musi być skonfigurowany do wystawiania tokenów konta usługi zawierających publicznie dostępny adres URL wystawcy OIDC (aby firma Entra wiedziała, gdzie znaleźć klucze publiczne w celu zweryfikowania tokenu).

Aby skonfigurować ustawienia tożsamości obciążenia w systemie Ubuntu Linux z językiem K3s, wykonaj poniższe kroki, aby ukończyć konfigurację:

  1. Utwórz plik konfiguracji k3s.

  2. Edytuj /etc/rancher/k3s/config.yaml , aby dodać następujące ustawienia:

       `kube-apiserver-arg:  
         - 'service-account-issuer=${OIDC_ISSUER}'
         - 'service-account-max-token-expiration=24h'`
    
  3. Zapisz plik config.yaml.

  4. Uruchom ponownie serwer interfejsu API k3s przy użyciu polecenia systemctl restart k3s.

    Zalecamy częste obracanie kluczy konta usługi. Aby uzyskać więcej informacji, zobacz Rotacja klucza wystawcy konta usługi.

Wyłączanie tożsamości obciążenia

Aby wyłączyć funkcję tożsamości obciążenia w klastrze Kubernetes z obsługą usługi Azure Arc, uruchom następujące polecenie:

az connectedk8s update
    --resource-group "${RESOURCE_GROUP}"
    --name "${CLUSTER_NAME}"
    --disable-workload-identity

Następne kroki