Do wdrażania Operacje Azure IoT potrzebny jest klaster Kubernetes z obsługą Azure Arc. Ten artykuł wyjaśnia, jak przygotować ten klaster, wraz z instrukcjami dla Ubuntu, Windows, Azure lokalnie, vSphere Kubernetes Service (VKS) oraz Red Hat OpenShift Container Platform (OpenShift).
Jeśli chcesz szybko wdrożyć Operacje Azure IoT i uruchomić przykładowe obciążenie w środowisku testowym, zobacz Quickstart: Uruchamianie Operacje Azure IoT w usłudze GitHub Codespaces za pomocą K3s.
Wymagania wstępne
Do wdrożeń wielowęzłowych użyj K3s na Ubuntu, AKS na Azure lokalnie, vSphere Kubernetes Service (VKS) lub OpenShift. AKS Edge Essentials na Windows obsługuje wdrożenia wyłącznie na pojedynczym węźle.
Aby przygotować klaster Kubernetes z obsługą Azure Arc, potrzebne są następujące elementy:
Subskrypcja Azure z rolą Owner lub kombinacją roli Contributor i User Access Administrator. Poziom dostępu możesz sprawdzić, przechodząc do subskrypcji, wybierając pozycję Kontrola dostępu (IAM) po lewej stronie portalu Azure, a następnie wybierając pozycję Przeglądaj mój dostęp. Jeśli nie masz subskrypcji Azure, utwórz ją bezpłatnie przed rozpoczęciem.
Na komputerze deweloperskim zainstalowano Azure CLI. Sprawdź dostępne rozszerzenia Azure CLI dla minimalnej wymaganej wersji dla rozszerzenia connectedk8s. Użyj az --version do sprawdzenia swojej wersji i az upgrade do aktualizacji, jeśli to konieczne. Aby uzyskać więcej informacji, zobacz Install the Azure CLI .
Rozszerzenie connectedk8s dla Azure CLI. Użyj następującego polecenia, aby dodać rozszerzenie lub zaktualizować je do najnowszej wersji:
az extension add --upgrade --name connectedk8s
Grupa zasobów Azure. Na grupę zasobów jest obsługiwane tylko jedno wystąpienie Operacje Azure IoT. Aby utworzyć nową grupę zasobów, użyj polecenia az group create . Aby uzyskać listę aktualnie obsługiwanych regionów Azure, zobacz Supported regions.
az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Sprzęt spełniający wymagania systemowe:
Jeśli zamierzasz wdrożyć Operacje Azure IoT w klastrze wielowęzłowym z włączoną tolerancją na błędy, zapoznaj się z wymaganiami sprzętowymi i dotyczącymi magazynowania w Prepare Linux for Edge Volumes.
Aby przygotować klaster Kubernetes z obsługą Azure Arc, potrzebne są następujące elementy:
Aby przygotować klaster Kubernetes z obsługą Azure Arc, potrzebne są następujące elementy:
Aby przygotować klaster obciążeń vSphere Kubernetes Service (VKS), potrzebujesz:
Subskrypcja Azure z rolą Owner lub kombinacją roli Contributor i User Access Administrator. Poziom dostępu możesz sprawdzić, przechodząc do subskrypcji, wybierając pozycję Kontrola dostępu (IAM) po lewej stronie portalu Azure, a następnie wybierając pozycję Przeglądaj mój dostęp. Jeśli nie masz subskrypcji Azure, utwórz ją bezpłatnie przed rozpoczęciem.
Na komputerze deweloperskim zainstalowano Azure CLI. Sprawdź dostępne rozszerzenia Azure CLI dla minimalnej wymaganej wersji dla rozszerzenia connectedk8s. Użyj az --version do sprawdzenia swojej wersji i az upgrade do aktualizacji, jeśli to konieczne. Aby uzyskać więcej informacji, zobacz Install the Azure CLI .
Rozszerzenie connectedk8s dla Azure CLI. Użyj następującego polecenia, aby dodać rozszerzenie lub zaktualizować je do najnowszej wersji:
az extension add --upgrade --name connectedk8s
Grupa zasobów Azure. Na grupę zasobów jest obsługiwane tylko jedno wystąpienie Operacje Azure IoT. Aby utworzyć nową grupę zasobów, użyj polecenia az group create . Aby uzyskać listę aktualnie obsługiwanych regionów Azure, zobacz Supported regions.
az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Aby przygotować klaster OpenShift z obsługą Azure Arc, potrzebujesz:
Subskrypcja Azure z rolą Owner lub kombinacją roli Contributor i User Access Administrator. Poziom dostępu możesz sprawdzić, przechodząc do subskrypcji, wybierając pozycję Kontrola dostępu (IAM) po lewej stronie portalu Azure, a następnie wybierając pozycję Przeglądaj mój dostęp. Jeśli nie masz subskrypcji Azure, utwórz ją bezpłatnie przed rozpoczęciem.
Na komputerze deweloperskim zainstalowano Azure CLI. Sprawdź dostępne rozszerzenia Azure CLI dla minimalnej wymaganej wersji dla rozszerzenia connectedk8s. Użyj az --version do sprawdzenia swojej wersji i az upgrade do aktualizacji, jeśli to konieczne. Aby uzyskać więcej informacji, zobacz Install the Azure CLI .
Rozszerzenie connectedk8s dla Azure CLI. Użyj następującego polecenia, aby dodać rozszerzenie lub zaktualizować je do najnowszej wersji:
az extension add --upgrade --name connectedk8s
Grupa zasobów Azure. Na grupę zasobów jest obsługiwane tylko jedno wystąpienie Operacje Azure IoT. Aby utworzyć nową grupę zasobów, użyj polecenia az group create . Aby uzyskać listę aktualnie obsługiwanych regionów Azure, zobacz Supported regions.
az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Klaster OpenShift Red Hat, wersja 4.20 lub nowsza.
Interfejs OpenShift (oc) zainstalowany na twoim komputerze deweloperskim, zalogowany do klastra przez konto, które pełni tę rolęcluster-admin. Przyznanie ograniczeń kontekstu zabezpieczeń wymaga cluster-admin.
Sprzęt spełniający wymagania systemowe:
Przykłady Azure CLI w tym artykule używają zmiennych środowiskowych, dzięki czemu można ustawić każdą wartość tylko raz, a następnie kopiować i wklejać polecenia bez zmian. Jeśli korzystasz ze środowiska Operacje Azure IoT Codespaces z quickstartu, te zmienne są już ustawione i możesz pominąć ten krok. W przeciwnym razie ustaw następujące zmienne środowiskowe w swojej poskoczce przed uruchomieniem poleceń.
Poniższe skrypty określają najczęściej używane zmienne środowiskowe:
| Zmienna środowiskowa |
Description |
SUBSCRIPTION_ID |
ID subskrypcji zawierającej Twoją instancję Operacje Azure IoT. |
RESOURCE_GROUP |
Nazwa grupy zasobów zawierającej Twoją instancję Operacje Azure IoT. |
AIO_INSTANCE_NAME |
Nazwa Twojej instancji Operacje Azure IoT. Aby wyświetlić listę instancji, uruchom az iot ops list -o table. |
CLUSTER_NAME |
Nazwa klastra Kubernetes z włączonym Azure Arc, który hostuje Twoją instancję. |
LOCATION |
Region platformy Azure do użycia dla nowych zasobów, na przykład eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
$SUBSCRIPTION_ID = "<subscription-id>"
$RESOURCE_GROUP = "<resource-group-name>"
$AIO_INSTANCE_NAME = "<instance-name>"
$CLUSTER_NAME = "<cluster-name>"
$LOCATION = "<region>"
Wystarczy ustawić zmienne, których używa ten artykuł. W tym artykule może być użytych dodatkowych zmiennych środowiskowych do wyboru nazw zasobów. Artykuł wyjaśnia, jak ustawić je tam, gdzie są wprowadzane.
Utwórz klaster i włącz Arc
Ta sekcja zawiera kroki tworzenia klastrów w zweryfikowanych środowiskach na Ubuntu, Windows, Azure lokalnie, vSphere Kubernetes Service (VKS) oraz OpenShift.
Aby przygotować klaster Kubernetes K3s w systemie Ubuntu:
Utwórz klaster K3s z jednym węzłem lub wieloma węzłami. Przykłady można znaleźć w przewodniku Szybki start K3s lub projektach powiązanych z K3s.
Sprawdź, czy zainstalowano K3skubectl. Jeśli nie, postępuj zgodnie z instrukcjami, aby zainstalować narzędzie kubectl w systemie Linux.
kubectl version --client
Postępuj zgodnie z instrukcjami, aby zainstalować program Helm.
Stwórz konfiguracyjny plik YAML K3s w .kube/config:
mkdir ~/.kube
sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged
mv ~/.kube/merged ~/.kube/config
chmod 0600 ~/.kube/config
export KUBECONFIG=~/.kube/config
#switch to k3s context
kubectl config use-context default
sudo chmod 644 /etc/rancher/k3s/k3s.yaml
Uruchom następujące polecenie, aby zwiększyć limity monitorowania/wystąpienia użytkownika.
echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Aby uzyskać lepszą wydajność, zwiększ limit deskryptora plików:
echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Włącz usługę Azure Arc dla klastra K3s
Połącz swój klaster z Azure Arc, aby móc nim zarządzać zdalnie.
Z maszyny mającej kubectl dostęp do klastra zaloguj się do Azure CLI za pomocą konta użytkownika Microsoft Entra, które ma wymagane role dla subskrypcji Azure:
az login
Jeśli w dowolnym momencie pojawi się komunikat o błędzie Aby uzyskać dostęp do swojego zasobu, Twoje urządzenie musi być zarządzane, uruchom az login ponownie i upewnij się, że zalogujesz się interaktywnie przy użyciu przeglądarki.
Po zalogowaniu Azure CLI pokazuje wszystkie Twoje subskrypcje i wskazuje domyślną subskrypcję gwiazdką*. Aby kontynuować subskrypcję domyślną, wybierz pozycję Enter. W przeciwnym razie wpisz liczbę subskrypcji Azure, której chcesz użyć.
Zarejestruj wymaganych dostawców zasobów w ramach subskrypcji.
Uwaga
Ten krok musisz wykonać tylko raz dla każdej subskrypcji. Aby zarejestrować dostawców zasobów, potrzebujesz zgody na wykonanie operacji /register/action , które obejmują role Współautora i Właściciela subskrypcji. Aby uzyskać więcej informacji, zobacz Dostawcy zasobów i typy na platformie Azure.
az provider register -n "Microsoft.ExtendedLocation"
az provider register -n "Microsoft.Kubernetes"
az provider register -n "Microsoft.KubernetesConfiguration"
az provider register -n "Microsoft.IoTOperations"
az provider register -n "Microsoft.DeviceRegistry"
az provider register -n "Microsoft.SecretSyncController"
Użyj polecenia az connectedk8s connect aby włączyć klaster Kubernetes i zarządzać nim w ramach grupy zasobów Azure.
az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
Aby zapobiec nieplanowanym aktualizacjom Azure Arc i rozszerzeń systemu Arc, które Operacje Azure IoT używają jako zależności, to polecenie wyłącza automatyczne aktualizowanie.
Zamiast tego ręcznie uaktualnij agentów zgodnie z potrzebami.
Pobierz adres URL wystawcy klastra.
az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
Zapisz dane wyjściowe tego polecenia, aby użyć go w następnych krokach.
Stwórz plik konfiguracyjny K3s.
sudo nano /etc/rancher/k3s/config.yaml
Dodaj następującą zawartość do pliku config.yaml, zastępując element zastępczy <SERVICE_ACCOUNT_ISSUER> adresem URL wystawcy klastra.
kube-apiserver-arg:
- service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
- service-account-max-token-expiration=24h
Zapisz plik i zamknij edytor nano.
Przygotuj się do włączenia usługi Azure Arc na swoim klastrze Arc poprzez uzyskanie identyfikatora obiektu dla lokalizacji niestandardowej i zapisanie go jako zmienną środowiskową o nazwie OBJECT_ID. Aby wykonać polecenie pomyślnie, musisz zalogować się do Azure CLI za pomocą konta użytkownika Microsoft Entra, a nie jako podmiot usługi. Uruchom następujące polecenie dokładnie zgodnie z zapisem bez zmiany wartości identyfikatora GUID.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Uwaga
Jeśli zostanie wyświetlony błąd: "Nie można pobrać identyfikatora aplikacji "custom-locations". Kontynuacja bez włączenia funkcji. Niewystarczające uprawnienia do ukończenia operacji", oznacza, że twoja jednostka usługi może nie mieć niezbędnych uprawnień do pobrania identyfikatora obiektu lokalizacji niestandardowej. Zaloguj się do Azure CLI za pomocą konta użytkownika Microsoft Entra, które spełnia wymagania wstępne. Aby uzyskać więcej informacji, zobacz Tworzenie lokalizacji niestandardowych i zarządzanie nimi.
Użyj polecenia az connectedk8s enable-features, aby włączyć funkcję lokalizacji niestandardowej w klastrze Arc. To polecenie wykorzystuje zmienną środowiskową OBJECT_ID, którą zapisałeś w poprzednim kroku, aby ustawić wartość parametru custom-locations-oid. Uruchom to polecenie na maszynie, na której wdrożono klaster Kubernetes:
az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
Uruchom ponownie K3s.
systemctl restart k3s
Azure Kubernetes Service Edge Essentials to lokalna implementacja platformy Kubernetes Azure Kubernetes Service (AKS), która automatyzuje uruchamianie konteneryzowanych aplikacji na dużą skalę. AKS Edge Essentials obejmuje platformę Kubernetes obsługiwaną przez Microsoft, która zawiera lekką dystrybucję Kubernetes z niewielkimi wymaganiami i prostym procesem instalacji, obsługującą sprzęt klasy PC lub "lekki" sprzęt brzegowy.
Skrypt AksEdgeQuickStartForAio.ps1 automatyzuje tworzenie i łączenie klastra i jest zalecaną ścieżką wdrażania Operacje Azure IoT na AKS Edge Essentials.
Aby uzyskać instrukcje dotyczące uruchamiania skryptu, zobacz Konfigurowanie klastra AKS Edge Essentials dla Operacje Azure IoT.
- Aby uzyskać instrukcje dotyczące stworzenia klastra AKS i włączenia Arc na platformie Azure lokalnie, zobacz Tworzenie klastrów Kubernetes przy użyciu Azure CLI.
- Aby uzyskać instrukcje dotyczące wdrażania klastra usługi AKS na Azure lokalnie z włączoną tożsamością obciążenia (wersja zapoznawcza) w celu zapewnienia zwiększonych zabezpieczeń, zobacz Deploy i konfigurowanie tożsamości obciążenia w klastrze usługi AKS. Funkcję tożsamości obciążeń można włączyć tylko podczas tworzenia klastra. Uruchamianie operacji Azure IoT z bezpiecznymi ustawieniami wymaga tożsamości obciążenia (workload identity).
Domyślnie klaster Kubernetes zawiera pulę węzłów, która może uruchamiać kontenery Linuksa. Jeśli po utworzeniu dodasz więcej pul węzłów, upewnij się, że system operacyjny jest ustawiony na Linux. Operacje Azure IoT nie obsługuje wdrażania w węzłach Windows.
Gdy już masz klaster Kubernetes z obsługą Azure Arc, możesz wdrożyć Operacje Azure IoT.
Aby przygotować klaster obciążeń VKS, potrzebujesz klastra obciążeń VKS z jednym lub wieloma węzłami.
Zaktualizuj ustawienia zabezpieczeń dla podów
Przed wdrożeniem Operacje Azure IoT zaktualizuj ustawienia Pod Security Admission w swoim klastrze VKS. Zastosowanie tego pliku wstępnie tworzy etykiety przestrzeni nazw i ustawia bezpieczeństwo podu na .privileged
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/tanzu-config/psa.yaml
Włącz usługę Arc dla klastra VKS
Połącz swój klaster z Azure Arc, aby móc nim zarządzać zdalnie.
Na komputerze, na którym wdrożyłeś klaster Kubernetes, zaloguj się do Azure CLI za pomocą konta użytkownika Microsoft Entra, które zawiera wymagane role dla subskrypcji Azure:
az login
Po zalogowaniu Azure CLI pokazuje wszystkie Twoje subskrypcje i wskazuje domyślną subskrypcję gwiazdką*. Aby kontynuować subskrypcję domyślną, wybierz pozycję Enter. W przeciwnym razie wpisz liczbę subskrypcji Azure, której chcesz użyć.
Zarejestruj wymaganych dostawców zasobów w ramach subskrypcji.
Uwaga
Ten krok musisz wykonać tylko raz dla każdej subskrypcji. Aby zarejestrować dostawców zasobów, potrzebujesz zgody na wykonanie operacji /register/action , które obejmują role Współautora i Właściciela subskrypcji. Aby uzyskać więcej informacji, zobacz Dostawcy zasobów i typy na platformie Azure.
az provider register -n "Microsoft.ExtendedLocation"
az provider register -n "Microsoft.Kubernetes"
az provider register -n "Microsoft.KubernetesConfiguration"
az provider register -n "Microsoft.IoTOperations"
az provider register -n "Microsoft.DeviceRegistry"
az provider register -n "Microsoft.SecretSyncController"
Użyj polecenia az connectedk8s connect aby włączyć klaster Kubernetes i zarządzać nim w ramach grupy zasobów Azure.
az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
Aby zapobiec nieplanowanym aktualizacjom Azure Arc i rozszerzeń systemu Arc, które Operacje Azure IoT używają jako zależności, to polecenie wyłącza automatyczne aktualizowanie.
Zamiast tego ręcznie uaktualnij agentów zgodnie z potrzebami.
Skonfiguruj tożsamość obciążeń w klastrze VKS. Instrukcje można znaleźć w artykule Wdrażaj i konfiguruj tożsamość obciążenia na klastrze AKS. Uruchamianie operacji Azure IoT z bezpiecznymi ustawieniami wymaga tożsamości obciążenia (workload identity).
Przygotuj się do włączenia usługi Azure Arc na swoim klastrze Arc poprzez uzyskanie identyfikatora obiektu dla lokalizacji niestandardowej i zapisanie go jako zmienną środowiskową o nazwie OBJECT_ID. Aby wykonać polecenie pomyślnie, musisz zalogować się do Azure CLI za pomocą konta użytkownika Microsoft Entra, a nie jako podmiot usługi. Uruchom następujące polecenie dokładnie zgodnie z zapisem bez zmiany wartości identyfikatora GUID.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Uwaga
Jeśli zostanie wyświetlony błąd: "Nie można pobrać identyfikatora aplikacji "custom-locations". Kontynuacja bez włączenia funkcji. Niewystarczające uprawnienia do ukończenia operacji", oznacza, że twoja jednostka usługi może nie mieć niezbędnych uprawnień do pobrania identyfikatora obiektu lokalizacji niestandardowej. Zaloguj się do Azure CLI za pomocą konta użytkownika Microsoft Entra, które spełnia wymagania wstępne. Aby uzyskać więcej informacji, zobacz Tworzenie lokalizacji niestandardowych i zarządzanie nimi.
Użyj polecenia az connectedk8s enable-features, aby włączyć funkcję lokalizacji niestandardowej w klastrze Arc. To polecenie używa zmiennej środowiskowej OBJECT_ID zapisanej w poprzednim kroku, aby ustawić wartość parametru custom-locations-oid. Uruchom to polecenie na maszynie, na której wdrożono klaster Kubernetes:
az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
Aby przygotować klaster OpenShift, potrzebujesz klastra OpenShift z pojedynczym lub wieloma węzłami, wersji 4.20 lub nowzej.
OpenShift wymusza ograniczenia kontekstu bezpieczeństwa (SCC), które kontrolują uprawnienia, o jakie mogą wnioskować pody. Domyślnie OpenShift przypisuje każdemu projektowi zakres UID i dopuszcza pody zgodnie z ograniczeniem restricted-v2. Niektóre komponenty Operacje Azure IoT żądają stałych identyfikatorów użytkowników poza tym zakresem, więc przed wdrożeniem przyznajesz dodatkowe ograniczenia.
Przyznaj ograniczenia kontekstu zabezpieczeń
Zanim wdrożysz Operacje Azure IoT, przyznaj ograniczenia kontekstu bezpieczeństwa, których wymagają jego komponenty. Poniższe polecenie jest skierowane do grupy kont serwisowych w przestrzeni nazw, dzięki czemu obejmuje każde konto serwisowe utworzone później przez wdrożenie. Możesz uruchomić to, zanim przestrzeń nazw zacznie istnieć.
for scc in anyuid privileged hostnetwork-v2 hostaccess hostmount-anyuid nonroot-v2; do
oc adm policy add-scc-to-group $scc system:serviceaccounts:azure-iot-operations
done
Jeśli pominiesz ten krok, wdrożenie zakończy się niepowodzeniem, a obciążenia robocze zgłoszą błąd kontroli przyjęcia podobny do poniższego:
pods "aio-akri-operator-0" is forbidden: unable to validate against any security context
constraint: provider restricted-v2: .spec.securityContext.fsGroup: Invalid value:
[]int64{65532}: 65532 is not an allowed group
Włącz obsługę usługi Arc w klastrze OpenShift
Połącz swój klaster z Azure Arc, aby móc nim zarządzać zdalnie.
Zarejestruj wymaganych dostawców zasobów w ramach subskrypcji.
Uwaga
Ten krok musisz wykonać tylko raz dla każdej subskrypcji. Aby zarejestrować dostawców zasobów, potrzebujesz zgody na wykonanie operacji /register/action , które obejmują role Współautora i Właściciela subskrypcji. Aby uzyskać więcej informacji, zobacz Dostawcy zasobów i typy na platformie Azure.
az provider register -n "Microsoft.ExtendedLocation"
az provider register -n "Microsoft.Kubernetes"
az provider register -n "Microsoft.KubernetesConfiguration"
az provider register -n "Microsoft.IoTOperations"
az provider register -n "Microsoft.DeviceRegistry"
az provider register -n "Microsoft.SecretSyncController"
Użyj polecenia connect az connectedk8s do Azure Arc – włącz klaster Kubernetes i zarządzaj nim jako częścią swojej grupy zasobów Azure.
az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
Aby zapobiec nieplanowanym aktualizacjom Azure Arc oraz systemowych rozszerzeń Azure Arc, których Operacje Azure IoT używa jako zależności, to polecenie wyłącza autoupgrade.
Zamiast tego ręcznie uaktualnij agentów zgodnie z potrzebami.
Agenci Azure Arc tworzą potrzebne ograniczenia kontekstu bezpieczeństwa, więc nie jest wymagana dodatkowa konfiguracja OpenShift w tym etapie.
Pobierz adres URL wystawcy klastra.
az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
Zapisz dane wyjściowe tego polecenia, aby wykorzystać je w następnym kroku.
Skonfiguruj klaster tak, aby używał wystawcy Azure Arc jako wystawcy konta usługi, zastępując symbol zastępczy <SERVICE_ACCOUNT_ISSUER> wartością z poprzedniego kroku. Uruchamianie operacji Azure IoT z bezpiecznymi ustawieniami wymaga tożsamości obciążenia (workload identity).
oc patch authentication cluster --type=merge \
-p '{"spec":{"serviceAccountIssuer":"<SERVICE_ACCOUNT_ISSUER>"}}'
Zmiana wystawcy konta usługi powoduje, że operatorzy klastra kube-apiserver i authentication wdrażają nową rewizję w obrębie płaszczyzny sterowania. Poczekaj, aż oba skończą, zanim będziesz kontynuować.
oc wait --for=condition=Progressing=False --timeout=30m clusteroperator/kube-apiserver
oc wait --for=condition=Progressing=False --timeout=30m clusteroperator/authentication
Przygotuj się na włączenie usługi Azure Arc, niestandardowej lokalizacji, na klastrze Azure Arc, pobierając niestandardowy identyfikator obiektu lokalizacji i zapisując go jako zmienną środowiskową, OBJECT_ID. Aby wykonać polecenie pomyślnie, musisz zalogować się do Azure CLI za pomocą konta użytkownika Microsoft Entra, a nie jako podmiot usługi. Uruchom następujące polecenie dokładnie zgodnie z zapisem bez zmiany wartości identyfikatora GUID.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Uwaga
Jeśli zostanie wyświetlony błąd: "Nie można pobrać identyfikatora aplikacji "custom-locations". Kontynuacja bez włączenia funkcji. Niewystarczające uprawnienia do ukończenia operacji", oznacza, że twoja jednostka usługi może nie mieć niezbędnych uprawnień do pobrania identyfikatora obiektu lokalizacji niestandardowej. Zaloguj się do Azure CLI za pomocą konta użytkownika Microsoft Entra, które spełnia wymagania wstępne. Aby uzyskać więcej informacji, zobacz Tworzenie lokalizacji niestandardowych i zarządzanie nimi.
Ważne
Uruchom to wyszukiwanie będąc zalogowanym do tego samego dzierżawcy Microsoft Entra, który zawiera zasoby Azure Arc. Identyfikator obiektu aplikacji Custom Locations różni się w każdej dzierżawie. Użycie ID obiektu z innego tenanta wydaje się skuteczne, ale wdrożenie Operacje Azure IoT później kończy się niepowodzeniem z "Microsoft.ExtendedLocation" resource provider does not have the required permissions to create a namespace on the cluster.
Użyj polecenia az connectedk8s enable-features, aby włączyć funkcję lokalizacji niestandardowej w klastrze usługi Azure Arc. To polecenie wykorzystuje OBJECT_ID zmienną środowiskową, którą zapisałeś w poprzednim kroku, aby ustawić wartość parametru custom-locations-oid .
az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
Opcje wdrożenia wymagane w OpenShift
Gdy wdrażasz Operacje Azure IoT na tym klastrze, uwzględnij następujące opcje.
Wyłącz telemetrię cert-managera:
az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cm-config global.telemetry.enabled=false
Rozszerzenie cert-manager w przeciwnym razie dodaje pomocniczy kontener diagnostyczny, którego obraz jest wskazywany za pomocą skrótu digest. Środowisko uruchomieniowe kontenerów CRI-O, którego używa OpenShift, nie może pobrać obrazu wskazywanego przez skrót kontrolny, który wskazuje na listę manifestów dla wielu architektur, więc kontener sidecar ulega awarii z komunikatem ImagePullBackOff, a cert-manager nigdy nie osiąga stanu gotowości.
Wyłącz kontekst zabezpieczeń złącza:
az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name <instance-name> --sr-resource-id <schema-registry-id> --ns-resource-id <namespace-id> --ops-config connectors.values.setSecurityContext=false
Nadzorca konektora działa na dowolnym UID przypisanym przez OpenShift i nie może odczytać własnych plików aplikacji, więc czas wypuszczenia konektora Helm się kończy i wdrożenie jest cofane.
Uwaga
Ta opcja sprawia, że moduły łączące działają pod ograniczeniem anyuid kontekstu bezpieczeństwa, a nie domyślnym OpenShift. Jest to obecnie wymagane, ponieważ obraz konektora nie może być odczytany przez dowolny UID. Wszystkie pozostałe pody Operacje Azure IoT działają pod bardziej restrykcyjnymi ograniczeniami.
Funkcje, takie jak lokalne punkty końcowe przepływu danych i łącznik multimediów, opcjonalnie używają Azure Container Storage wspierany przez Azure Arc (ACSA) do synchronizowania danych lokalnych z chmurą. ACSA nie jest instalowana jako część Operacje Azure IoT, więc musisz zainstalować ją osobno.
Aby dowiedzieć się, jak zainstalować ACSA na swoim klastrze Kubernetes:
Następne kroki
Teraz, gdy masz klaster Kubernetes z obsługą Azure Arc, możesz wdrożyć Operacje Azure IoT.