Używanie połączenia z klastrem w celu bezpiecznego nawiązywania połączenia z klastrami Kubernetes z włączoną usługą Azure Arc
Dzięki połączeniu klastra można bezpiecznie łączyć się z klastrami Kubernetes z włączoną usługą Azure Arc z dowolnego miejsca bez konieczności włączania żadnego portu przychodzącego w zaporze.
Dostęp do apiserver
klastra Kubernetes z obsługą usługi Azure Arc umożliwia wykonanie następujących scenariuszy:
- Interaktywne debugowanie i rozwiązywanie problemów.
- Dostęp klastra do usług platformy Azure dla lokalizacji niestandardowych i innych zasobów utworzonych na jego podstawie.
Przed rozpoczęciem zapoznaj się z koncepcyjnym omówieniem funkcji łączenia klastra.
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Istniejący połączony klaster Kubernetes z włączoną usługą Azure Arc.
- Jeśli nie nawiązano jeszcze połączenia z klastrem, skorzystaj z naszego przewodnika Szybki start.
- Uaktualnij agentów do najnowszej wersji.
Włączanie wymagań sieciowych dla platformy Kubernetes z obsługą usługi Arc
Włącz następujące punkty końcowe dla dostępu wychodzącego:
Punkt końcowy Port *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Uwaga
Aby przetłumaczyć
*.servicebus.windows.net
symbol wieloznaczny na określone punkty końcowe, użyj polecenia\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. W tym poleceniu należy określić region dla symbolu zastępczego<location>
.
Aby uzyskać segment regionu regionalnego punktu końcowego, usuń wszystkie spacje z nazwy regionu świadczenia usługi Azure. Na przykład region Wschodnie stany USA 2 nazwa regionu to eastus2
.
Na przykład: *.<region>.arcdataservices.com
powinien znajdować się *.eastus2.arcdataservices.com
w regionie Wschodnie stany USA 2.
Aby wyświetlić listę wszystkich regionów, uruchom następujące polecenie:
az account list-locations -o table
Get-AzLocation | Format-Table
Zainstaluj lub zaktualizuj interfejs wiersza polecenia platformy Azure do najnowszej wersji.
Zainstaluj najnowszą wersję rozszerzenia interfejsu wiersza polecenia platformy
connectedk8s
Azure:az extension add --name connectedk8s
Jeśli rozszerzenie zostało
connectedk8s
już zainstalowane, zaktualizuj rozszerzenie do najnowszej wersji:az extension update --name connectedk8s
Zastąp symbole zastępcze i uruchom poniższe polecenie, aby ustawić zmienne środowiskowe używane w tym dokumencie:
CLUSTER_NAME=<cluster-name> RESOURCE_GROUP=<resource-group-name> ARM_ID_CLUSTER=$(az connectedk8s show -n $CLUSTER_NAME -g $RESOURCE_GROUP --query id -o tsv)
Konfigurowanie uwierzytelniania
W istniejącym klastrze z obsługą usługi Arc utwórz klasterRoleBinding przy użyciu uwierzytelniania Microsoft Entra lub tokenu konta usługi.
Opcja uwierzytelniania Entra firmy Microsoft
Pobierz skojarzona
objectId
z jednostką Microsoft Entra. Jeśli używasz jednego konta użytkownika, pobierz główną nazwę użytkownika (UPN) skojarzona z jednostką Firmy Microsoft Entra.- W przypadku konta grupy Entra firmy Microsoft:
AAD_ENTITY_ID=$(az ad signed-in-user show --query id -o tsv)
W przypadku konta pojedynczego użytkownika firmy Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
W przypadku aplikacji Firmy Microsoft Entra:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Autoryzuj jednostkę z odpowiednimi uprawnieniami.
Jeśli używasz natywnego klastra Kubernetes ClusterRoleBinding lub RoleBinding do sprawdzania autoryzacji w klastrze, a
kubeconfig
plik wskazującyapiserver
klaster na bezpośredni dostęp, możesz utworzyć jeden mapowany do jednostki Microsoft Entra (jednostki usługi lub użytkownika), która musi uzyskać dostęp do tego klastra. Na przykład:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Jeśli używasz kontroli dostępu opartej na rolach platformy Azure do sprawdzania autoryzacji w klastrze, możesz utworzyć odpowiednie przypisanie roli platformy Azure zamapowane na jednostkę Microsoft Entra. Na przykład:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER az role assignment create --role "Azure Arc Enabled Kubernetes Cluster User Role" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER
Opcja uwierzytelniania tokenu konta usługi
kubeconfig
Gdy plik wskazujeapiserver
klaster Kubernetes, uruchom to polecenie, aby utworzyć konto usługi. W tym przykładzie zostanie utworzone konto usługi w domyślnej przestrzeni nazw, ale możesz zastąpić dowolną inną przestrzeń nazw .default
kubectl create serviceaccount demo-user -n default
Utwórz klasterRoleBinding, aby przyznać temu kontu usługi odpowiednie uprawnienia w klastrze. Jeśli w pierwszym poleceniu użyto innej przestrzeni nazw, zastąp ją tutaj .
default
kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
Utwórz token konta usługi:
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: demo-user-secret annotations: kubernetes.io/service-account.name: demo-user type: kubernetes.io/service-account-token EOF
TOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
Pobieranie tokenu do danych wyjściowych do konsoli
echo $TOKEN
Uzyskiwanie dostępu do klastra z urządzenia klienckiego
Teraz możesz uzyskać dostęp do klastra z innego klienta. Uruchom następujące kroki na innym urządzeniu klienckim.
Zaloguj się przy użyciu uwierzytelniania microsoft Entra lub uwierzytelniania tokenu konta usługi.
Uzyskaj połączenie
kubeconfig
klastra potrzebne do komunikowania się z klastrem z dowolnego miejsca (nawet spoza zapory otaczającej klaster) na podstawie używanej opcji uwierzytelniania:W przypadku korzystania z uwierzytelniania entra firmy Microsoft:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
W przypadku korzystania z uwierzytelniania tokenu konta usługi:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Uwaga
To polecenie spowoduje otwarcie serwera proxy i zablokowanie bieżącej powłoki.
W innej sesji powłoki użyj polecenia
kubectl
, aby wysyłać żądania do klastra:kubectl get pods -A
Teraz powinna zostać wyświetlona odpowiedź z klastra zawierającego listę wszystkich zasobników w default
przestrzeni nazw.
Znane ograniczenia
Użyj az connectedk8s show
polecenia , aby sprawdzić wersję agenta Kubernetes z obsługą usługi Arc.
Jeśli podczas wykonywania żądań do klastra Kubernetes używana jednostka Microsoft Entra jest częścią ponad 200 grup, może zostać wyświetlony następujący błąd:
You must be logged in to the server (Error:Error while retrieving group info. Error:Overage claim (users with more than 200 group membership) is currently not supported.
Jest to znane ograniczenie. Aby przejść przez ten błąd:
- Utwórz jednostkę usługi, która prawdopodobnie będzie członkiem ponad 200 grup.
- Przed uruchomieniem
az connectedk8s proxy
polecenia zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu jednostki usługi.
Następne kroki
- Skonfiguruj kontrolę dostępu opartą na rolach firmy Microsoft w klastrach.
- Wdrażanie rozszerzeń klastra i zarządzanie nimi.