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:
- Włącz funkcję tożsamości obciążenia w nowym lub istniejącym klastrze Kubernetes z obsługą usługi Arc.
- Utwórz tożsamość zarządzaną (lub rejestrację aplikacji) i konto usługi Kubernetes.
- Skonfiguruj tożsamość zarządzaną na potrzeby federacji tokenów.
- Skonfiguruj adnotacje konta usługi i etykiety zasobników aplikacji, aby używać tożsamości obciążenia.
- Skonfiguruj ustawienia tożsamości obciążenia w klastrze Kubernetes.
- 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ę:
Utwórz plik konfiguracji k3s.
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'`
Zapisz plik config.yaml.
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
- Zapoznaj się z przykładem konfigurowania aplikacji do korzystania z tożsamości obciążenia.