Wdrażanie rozszerzeń usługi Azure IoT Operations Preview w klastrze Kubernetes

Ważne

Usługa Azure IoT Operations Preview — włączona przez usługę Azure Arc jest obecnie dostępna w wersji zapoznawczej. Nie należy używać tego oprogramowania w wersji zapoznawczej w środowiskach produkcyjnych.

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.

Wdrażanie usługi Azure IoT Operations Preview w klastrze Kubernetes przy użyciu interfejsu wiersza polecenia platformy Azure. Po wdrożeniu operacji usługi Azure IoT możesz użyć usługi Azure IoT Orchestrator (wersja zapoznawcza) do zarządzania i wdrażania innych obciążeń w klastrze.

Wymagania wstępne

Zasoby w chmurze:

  • Subskrypcja Azure.

  • Uprawnienia dostępu do platformy Azure. W ramach subskrypcji platformy Azure masz co najmniej uprawnienia współautora . W zależności od wybranego stanu flagi funkcji wdrożenia może być również konieczne uprawnienie Microsoft/Authorization/roleAssignments/write dla grupy zasobów zawierającej klaster Kubernetes z włączoną obsługą usługi Arc. Rolę niestandardową można utworzyć w kontroli dostępu opartej na rolach platformy Azure lub przypisać wbudowaną rolę, która przyznaje to uprawnienie. Aby uzyskać więcej informacji, zobacz Wbudowane role platformy Azure dla sekcji Ogólne.

    Jeśli nie masz uprawnień do zapisu przypisania roli, nadal możesz wdrożyć operacje usługi Azure IoT, wyłączając niektóre funkcje. To podejście zostało omówione bardziej szczegółowo w sekcji Wdrażanie rozszerzeń w tym artykule.

    • W interfejsie wiersza polecenia platformy Azure użyj polecenia az role assignment create , aby nadać uprawnienia. Na przykład az role assignment create --assignee sp_name --role "Role Based Access Control Administrator" --scope subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup

    • W witrynie Azure Portal zostanie wyświetlony monit o ograniczenie dostępu przy użyciu warunków podczas przypisywania ról administratora uprzywilejowanego do użytkownika lub podmiotu zabezpieczeń. W tym scenariuszu wybierz warunek Zezwalaj użytkownikowi na przypisywanie wszystkich ról na stronie Dodawanie przypisania roli.

      Zrzut ekranu przedstawiający przypisywanie użytkownikom dostępu do ról o wysokim poziomie uprawnień w witrynie Azure Portal.

  • Usługa Azure Key Vault, która ma model uprawnień ustawiony na zasady dostępu do magazynu. To ustawienie można sprawdzić w sekcji Konfiguracja dostępu istniejącego magazynu kluczy. Jeśli musisz utworzyć nowy magazyn kluczy, użyj polecenia az keyvault create :

    az keyvault create --enable-rbac-authorization false --name "<KEYVAULT_NAME>" --resource-group "<RESOURCE_GROUP>"
    

Zasoby do programowania:

  • Interfejs wiersza polecenia platformy Azure zainstalowany na komputerze deweloperskim. Aby uzyskać więcej informacji, zobacz Jak zainstalować interfejs wiersza polecenia platformy Azure. Ten scenariusz wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.46.0 lub nowszej. Użyj az --version polecenia , aby sprawdzić wersję i az upgrade zaktualizować w razie potrzeby.

  • Rozszerzenie Operacje usługi Azure IoT dla interfejsu wiersza polecenia platformy Azure. Użyj następującego polecenia, aby dodać rozszerzenie lub zaktualizować je do najnowszej wersji:

    az extension add --upgrade --name azure-iot-ops
    

Host klastra:

  • Klaster Kubernetes z obsługą usługi Azure Arc. Jeśli go nie masz, wykonaj kroki opisane w artykule Przygotowywanie klastra Kubernetes z obsługą usługi Azure Arc.

    Jeśli operacje usługi Azure IoT zostały już wdrożone w klastrze, odinstaluj te zasoby przed kontynuowaniem. Aby uzyskać więcej informacji, zobacz Aktualizowanie wdrożenia.

    Operacje usługi Azure IoT powinny działać na dowolnym klastrze kubernetes zgodnym z systemem CNCF. Obecnie firma Microsoft obsługuje tylko K3s w systemach Ubuntu Linux i WSL lub AKS Edge Essentials w systemie Windows. Używanie systemu Ubuntu w systemie Podsystem Windows dla systemu Linux (WSL) to najprostszy sposób uzyskania klastra Kubernetes na potrzeby testowania.

    Użyj rozszerzenia Operacje usługi Azure IoT dla interfejsu wiersza polecenia platformy Azure, aby sprawdzić, czy host klastra został poprawnie skonfigurowany do wdrożenia przy użyciu polecenia verify-host na hoście klastra:

    az iot ops verify-host
    

Wdrażanie rozszerzeń

Użyj interfejsu wiersza polecenia platformy Azure, aby wdrożyć składniki operacji usługi Azure IoT w klastrze Kubernetes z obsługą usługi Arc.

  1. Zaloguj się interaktywnie do interfejsu wiersza polecenia platformy Azure przy użyciu przeglądarki, nawet jeśli wcześniej się zalogowałeś. Jeśli nie logujesz się interaktywnie, może zostać wyświetlony błąd informujący, że urządzenie jest wymagane do zarządzania dostępem do zasobu , gdy będziesz kontynuować następny krok w celu wdrożenia operacji usługi Azure IoT.

    az login
    

    Uwaga

    Jeśli używasz usługi GitHub Codespaces w przeglądarce, az login zwraca błąd localhost w oknie przeglądarki po zalogowaniu. Aby rozwiązać ten problem, wykonaj jedną z następujących czynności:

    • Otwórz przestrzeń kodu na pulpicie programu VS Code, a następnie uruchom polecenie az login w terminalu. Spowoduje to otwarcie okna przeglądarki, w którym można zalogować się na platformie Azure.
    • Lub po wystąpieniu błędu localhost w przeglądarce skopiuj adres URL z przeglądarki i użyj go curl <URL> na nowej karcie terminalu. Powinna zostać wyświetlona odpowiedź JSON z komunikatem "Zalogowano się do platformy Microsoft Azure!".
  2. Wdrażanie operacji usługi Azure IoT w klastrze. Użyj opcjonalnych flag, aby dostosować polecenie az iot ops init , aby dopasować swój scenariusz.

    Domyślnie az iot ops init polecenie wykonuje następujące akcje, z których niektóre wymagają, aby podmiot zabezpieczeń zalogowany do interfejsu wiersza polecenia miał podwyższony poziom uprawnień:

    • Skonfiguruj jednostkę usługi i rejestrację aplikacji, aby zapewnić klastrowi dostęp do magazynu kluczy.
    • Konfigurowanie certyfikatów TLS.
    • Skonfiguruj magazyn wpisów tajnych w klastrze, który łączy się z magazynem kluczy.
    • Wdrażanie zasobów operacji usługi Azure IoT.
    az iot ops init --cluster <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --kv-id <KEYVAULT_ID>
    

    Jeśli nie masz uprawnień Microsoft.Authorization/roleAssignment/write w grupie zasobów, dodaj flagę --disable-rsync-rules funkcji. Ta flaga wyłącza reguły synchronizacji zasobów we wdrożeniu.

    Jeśli chcesz użyć istniejącej jednostki usługi i rejestracji aplikacji zamiast zezwalać init na tworzenie nowych, dołącz --sp-app-id,--sp-object-idparametry i --sp-secret . Aby uzyskać więcej informacji, zobacz Ręczne konfigurowanie jednostki usługi i usługi Key Vault.

  3. Po zakończeniu wdrażania możesz użyć polecenia az iot ops check , aby ocenić wdrożenie usługi IoT Operations pod kątem kondycji, konfiguracji i użyteczności. Polecenie check może pomóc w znalezieniu problemów we wdrożeniu i konfiguracji.

    az iot ops check
    

    Możesz również sprawdzić konfiguracje map tematów, QoS i tras komunikatów, dodając --detail-level 2 parametr dla pełnego widoku.

Konfigurowanie sieci klastra (AKS EE)

W klastrach AKS Edge Essentials włącz połączenia przychodzące z brokerem usługi Azure IoT MQ w wersji zapoznawczej i skonfiguruj przekazywanie portów:

  1. Włącz regułę zapory dla portu 8883:

    New-NetFirewallRule -DisplayName "Azure IoT MQ" -Direction Inbound -Protocol TCP -LocalPort 8883 -Action Allow
    
  2. Uruchom następujące polecenie i zanotuj adres IP usługi o nazwie aio-mq-dmqtt-frontend:

    kubectl get svc aio-mq-dmqtt-frontend -n azure-iot-operations -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  3. Włącz przekazywanie portów dla portu 8883. Zastąp <aio-mq-dmqtt-frontend IP address> ciąg adresem IP zanotowanymi w poprzednim kroku:

    netsh interface portproxy add v4tov4 listenport=8883 listenaddress=0.0.0.0 connectport=8883 connectaddress=<aio-mq-dmqtt-frontend IP address>
    

Wyświetlanie zasobów w klastrze

Podczas wdrażania można obserwować zasoby stosowane do klastra. Polecenia kubectl umożliwiają obserwowanie zmian w klastrze lub, ponieważ klaster jest włączony w usłudze Arc, można użyć witryny Azure Portal.

Aby wyświetlić zasobniki w klastrze, uruchom następujące polecenie:

kubectl get pods -n azure-iot-operations

Ukończenie wdrożenia może potrwać kilka minut. Uruchom ponownie polecenie, get pods aby odświeżyć widok.

Aby wyświetlić klaster w witrynie Azure Portal, wykonaj następujące kroki:

  1. W witrynie Azure Portal przejdź do grupy zasobów zawierającej klaster.

  2. W obszarze Przegląd grupy zasobów wybierz nazwę klastra.

  3. W klastrze wybierz pozycję Rozszerzenia z menu.

    Widać, że klaster uruchamia rozszerzenia typu microsoft.iotoperations.x, czyli nazwę grupy dla wszystkich składników operacji usługi Azure IoT i usługi orkiestracji.

    Istnieje również rozszerzenie o nazwie akvsecretsprovider. To rozszerzenie jest dostawcą wpisów tajnych skonfigurowanym i zainstalowanym w klastrze za az iot ops init pomocą polecenia . Podczas testowania możesz usunąć i ponownie zainstalować składniki operacji usługi Azure IoT, ale zachować rozszerzenie dostawcy wpisów tajnych w klastrze.

Napiwek

Możesz uruchomić polecenie az iot ops check , aby ocenić kondycję i konfiguracje wdrożonych obciążeń AIO. Domyślnie MQ, w tym łączniki w chmurze, są oceniane i można określić usługę za pomocą polecenia --ops-service --svc.

Aktualizowanie wdrożenia

Obecnie nie ma obsługi aktualizowania istniejącego wdrożenia operacji usługi Azure IoT. Zamiast tego zacznij od czystego klastra dla nowego wdrożenia.

Jeśli chcesz usunąć wdrożenie operacji usługi Azure IoT w klastrze, aby można było go ponownie wdrożyć, przejdź do klastra w witrynie Azure Portal. Wybierz rozszerzenia typu microsoft.iotoperations.x i microsoft.deviceregistry.assets, a następnie wybierz pozycję Odinstaluj. Zachowaj dostawcę wpisów tajnych w klastrze, ponieważ jest to wymaganie wstępne dla wdrożenia, a nie uwzględnione w nowym wdrożeniu.

Następne kroki

Jeśli składniki muszą łączyć się z punktami końcowymi platformy Azure, takimi jak SQL lub Fabric, dowiedz się, jak zarządzać wpisami tajnymi dla wdrożenia usługi Azure IoT Operations Preview.