Szybki start: wdrażanie usługi Azure IoT Operations Preview w klastrze Kubernetes z obsługą usługi Arc
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.
W tym przewodniku Szybki start wdrożysz pakiet usług IoT w klastrze Kubernetes z obsługą usługi Azure Arc, aby umożliwić zdalne zarządzanie urządzeniami i obciążeniami. Operacje usługi Azure IoT to cyfrowy pakiet operacji obejmujący usługę Azure IoT Orchestrator (wersja zapoznawcza). Ten przewodnik Szybki start przeprowadzi Cię przez proces wdrażania tych usług w klastrze Kubernetes przy użyciu programu Orchestrator. Na końcu przewodnika Szybki start masz klaster, którym można zarządzać z chmury, która generuje przykładowe dane do użycia w poniższych przewodnikach Szybki start.
Usługi wdrożone w tym przewodniku Szybki start obejmują:
- Azure IoT Orchestrator (wersja zapoznawcza)
- Azure IoT MQ (wersja zapoznawcza)
- Wersja zapoznawcza brokera usługi Azure IoT OPC UA z symulowanym zasobem termostatu w celu rozpoczęcia generowania danych
- Wersja zapoznawcza procesora danych usługi Azure IoT z potokiem pokazu w celu rozpoczęcia routingu symulowanych danych
- Azure IoT Akri (wersja zapoznawcza)
- Wersja zapoznawcza usługi Azure Device Registry
- Azure IoT Layered Network Management (wersja zapoznawcza)
- Możliwość obserwowania
Poniższe przewodniki Szybki start w tej serii bazują na tym, aby zdefiniować przykładowe zasoby, potoki przetwarzania danych i wizualizacje. Jeśli chcesz wdrożyć operacje usługi Azure IoT w celu uruchamiania własnych obciążeń, zobacz Przygotowywanie klastra Kubernetes z obsługą usługi Azure Arc i Wdrażanie rozszerzeń usługi Azure IoT Operations Preview w klastrze Kubernetes.
Zanim rozpoczniesz
Ta seria przewodników Szybki start ma na celu umożliwienie oceny kompleksowego scenariusza przy użyciu operacji usługi Azure IoT. W prawdziwym środowisku deweloperskim lub produkcyjnym te zadania będą wykonywane przez wiele zespołów pracujących razem, a niektóre zadania mogą wymagać podwyższonych uprawnień.
Aby uzyskać najlepsze nowe środowisko użytkownika, zalecamy korzystanie z bezpłatnego konta platformy Azure, aby mieć uprawnienia właściciela do zasobów w tych przewodnikach Szybki start. Zalecamy również używanie usługi GitHub Codespaces jako środowiska wirtualnego, w którym można szybko rozpocząć wdrażanie zasobów i uruchamianie poleceń bez instalowania nowych narzędzi na własnych maszynach. Aby uzyskać więcej informacji na temat tych opcji, przejdź do wymagań wstępnych.
Gdy wszystko będzie gotowe, aby dowiedzieć się więcej o poszczególnych rolach i zadaniach, przewodniki z instrukcjami zawierają bardziej szczegółowe informacje dotyczące implementacji i uprawnień.
Wymagania wstępne
Zapoznaj się z wymaganiami wstępnymi opartymi na środowisku używanym do hostowania klastra Kubernetes.
W tym przewodniku Szybki start zalecamy używanie środowiska wirtualnego (GitHub Codespaces) jako szybkiego sposobu rozpoczęcia pracy bez instalowania nowych narzędzi.
W ramach tego przewodnika Szybki start utworzysz klaster w usługach GitHub Codespaces, AKS Edge Essentials lub K3s w systemie Ubuntu Linux. Jeśli chcesz ponownie uruchomić ten przewodnik Szybki start z klastrem, w którym wdrożono już operacje usługi Azure IoT, zapoznaj się z krokami w temacie Czyszczenie zasobów w celu odinstalowania operacji usługi Azure IoT przed kontynuowaniem.
Subskrypcja Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz je bezpłatnie .
Konto usługi GitHub.
Program Visual Studio Code zainstalowany na komputerze deweloperskim. Aby uzyskać więcej informacji, zobacz Pobieranie programu Visual Studio Code.
Jaki problem rozwiążemy?
Operacje usługi Azure IoT to pakiet usług danych uruchamianych w klastrach Kubernetes. Chcesz, aby te klastry były zarządzane zdalnie z chmury i mogły bezpiecznie komunikować się z zasobami i punktami końcowymi chmury. W tym przewodniku Szybki start rozwiążemy te problemy z następującymi zadaniami:
- Połączenie klastra Kubernetes do usługi Azure Arc na potrzeby zdalnego zarządzania.
- Utwórz usługę Azure Key Vault, aby zarządzać wpisami tajnymi dla klastra.
- Skonfiguruj klaster przy użyciu magazynu wpisów tajnych i jednostki usługi w celu komunikowania się z zasobami w chmurze.
- Wdrażanie operacji usługi Azure IoT w klastrze.
Połączenie klastra Kubernetes do usługi Azure Arc
Operacje usługi Azure IoT powinny działać w każdym klastrze Kubernetes zgodnym ze standardami Cloud Native Computing Foundation (CNCF). W tym przewodniku Szybki start użyj usług GitHub Codespaces, AKS Edge Essentials w systemie Windows lub K3s w systemie Ubuntu Linux.
W tej sekcji utworzysz nowy klaster i połączysz go z usługą Azure Arc. Jeśli chcesz ponownie użyć klastra wdrożonego wcześniej operacji usługi Azure IoT, przed kontynuowaniem zapoznaj się z instrukcjami w temacie Czyszczenie zasobów, aby odinstalować operacje usługi Azure IoT.
Użyj usługi GitHub Codespaces, aby wypróbować operacje usługi Azure IoT w klastrze Kubernetes bez instalowania niczego na komputerze lokalnym. Usługa Azure-Samples/explore-iot-operations codespace jest wstępnie skonfigurowana przy użyciu następujących elementów:
- K3s uruchomione w K3d dla lekkiego klastra Kubernetes
- Interfejs wiersza polecenia platformy Azure
- Platforma Kubectl do zarządzania zasobami kubernetes
- Inne przydatne narzędzia, takie jak Helm i k9s
Ważne
Przestrzeń kodu można łatwo skonfigurować i usunąć później, ale nie są one odpowiednie do oceny wydajności lub testowania skalowania. Użyj usługi GitHub Codespaces tylko do eksploracji.
Aby rozpocząć pracę z przestrzenią kodu:
Utwórz przestrzeń kodu w usłudze GitHub Codespaces.
Podaj następujące zalecane wpisy tajne dla przestrzeni kodu:
Parametr Wartość SUBSCRIPTION_ID Identyfikator subskrypcji platformy Azure. RESOURCE_GROUP Nazwa nowej grupy zasobów platformy Azure, w której zostanie utworzony klaster. LOKALIZACJA Region świadczenia usługi Azure blisko Ciebie. Następujące regiony są obsługiwane w publicznej wersji zapoznawczej: eastus, eastus2, westus2, westus2, westus3, westeurope lub northeurope. Napiwek
Wartości podane w tym kroku jako wpisy tajne są zapisywane na koncie usługi GitHub, które mają być używane w tych i przyszłych przestrzeniach kodu. Są one również automatycznie dodawane jako zmienne środowiskowe w terminalu codespace i można użyć tych zmiennych środowiskowych w poleceniach interfejsu wiersza polecenia w następnej sekcji.
Wybierz pozycję Utwórz nową przestrzeń kodu.
Gdy przestrzeń kodu będzie gotowa, wybierz przycisk menu w lewym górnym rogu, a następnie wybierz pozycję Otwórz w programie VS Code Desktop.
Jeśli zostanie wyświetlony monit, zainstaluj rozszerzenie GitHub Codespaces dla programu Visual Studio Code i zaloguj się do usługi GitHub.
W programie Visual Studio Code wybierz pozycję Wyświetl>terminal.
Użyj tego terminalu, aby uruchomić wszystkie polecenia wiersza polecenia i interfejsu wiersza polecenia do zarządzania klastrem.
Aby połączyć klaster z usługą Azure Arc:
Na maszynie, na której wdrożono klaster Kubernetes lub terminal usługi Codespace, zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure:
az login
Napiwek
Jeśli używasz usługi GitHub codespace 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 wróć do terminalu przeglądarki i ponownie uruchom
az login
polecenie . - Lub po wystąpieniu błędu localhost w przeglądarce skopiuj adres URL z przeglądarki i uruchom
curl "<URL>"
polecenie na nowej karcie terminalu. Powinna zostać wyświetlona odpowiedź JSON z komunikatem "Zalogowano się do platformy Microsoft Azure!".
- Otwórz przestrzeń kodu na pulpicie programu VS Code, a następnie wróć do terminalu przeglądarki i ponownie uruchom
Ustaw zmienne środowiskowe dla subskrypcji platformy Azure, lokalizacji, nowej grupy zasobów i nazwy klastra, które będą wyświetlane w grupie zasobów.
Jeśli używasz usługi GitHub Codespaces i konfigurujesz te wartości jako zalecane wpisy tajne podczas tworzenia przestrzeni kodu, pomiń ten krok. Przestrzeń kodu automatycznie ustawia nazwę klastra na taką samą jak nazwa przestrzeni kodu.
# Id of the subscription where your resource group and Arc-enabled cluster will be created export SUBSCRIPTION_ID=<SUBSCRIPTION_ID> # Azure region where the created resource group will be located # Currently supported regions: "eastus", "eastus2", "westus", "westus2", "westus3", "westeurope", or "northeurope" export LOCATION=<REGION> # Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources export RESOURCE_GROUP=<NEW_RESOURCE_GROUP_NAME> # Name of the Arc-enabled cluster to create in your resource group export CLUSTER_NAME=<NEW_CLUSTER_NAME>
Ustaw kontekst subskrypcji platformy Azure dla wszystkich poleceń:
az account set -s $SUBSCRIPTION_ID
Zarejestruj wymaganych dostawców zasobów w ramach subskrypcji:
Uwaga
Ten krok musi być uruchamiany tylko raz na subskrypcję.
az provider register -n "Microsoft.ExtendedLocation" az provider register -n "Microsoft.Kubernetes" az provider register -n "Microsoft.KubernetesConfiguration" az provider register -n "Microsoft.IoTOperationsOrchestrator" az provider register -n "Microsoft.IoTOperationsMQ" az provider register -n "Microsoft.IoTOperationsDataProcessor" az provider register -n "Microsoft.DeviceRegistry"
Użyj polecenia az group create, aby utworzyć grupę zasobów w ramach subskrypcji platformy Azure w celu przechowywania wszystkich zasobów:
az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Użyj polecenia az connectedk8s connect, aby włączyć klaster Kubernetes i zarządzać nim w ramach grupy zasobów platformy Azure:
az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
objectId
Pobierz aplikację Microsoft Entra ID używaną przez usługę Azure Arc i zapisuj ją jako zmienną środowiskową.export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Użyj polecenia az connectedk8s enable-features, aby włączyć obsługę lokalizacji niestandardowej w klastrze. To polecenie używa
objectId
aplikacji Microsoft Entra ID używanej przez usługę Azure Arc. 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
Weryfikowanie klastra
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
To polecenie pomocnika sprawdza łączność z punktami końcowymi usług Azure Resource Manager i Microsoft Container Registry.
Wdrażanie usługi Azure IoT Operations (wersja zapoznawcza)
W tej sekcji użyjesz polecenia az iot ops init , aby skonfigurować klaster, aby mógł bezpiecznie komunikować się ze składnikami operacji usługi Azure IoT i magazynem kluczy, a następnie wdrożyć operacje usługi Azure IoT.
Tworzenie magazynu kluczy. Zastąp parametry symbolu zastępczego własnymi informacjami.
Symbol zastępczy Wartość RESOURCE_GROUP Nazwa grupy zasobów, która zawiera połączony klaster. KEYVAULT_NAME Nazwa nowego magazynu kluczy. az keyvault create --enable-rbac-authorization false --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP
Napiwek
Możesz użyć istniejącego magazynu kluczy dla wpisów tajnych, ale sprawdź, czy model uprawnień jest ustawiony na zasady dostępu do magazynu. To ustawienie można sprawdzić w witrynie Azure Portal w sekcji Konfiguracja dostępu istniejącego magazynu kluczy. Możesz też użyć polecenia az keyvault show , aby sprawdzić, czy
enableRbacAuthorization
jest to fałsz.Uruchom następujące polecenie interfejsu wiersza polecenia na komputerze deweloperskim lub w terminalu usługi Codespace. Zastąp parametry symbolu zastępczego własnymi informacjami.
Symbol zastępczy Wartość CLUSTER_NAME Nazwa połączonego klastra. RESOURCE_GROUP Nazwa grupy zasobów, która zawiera połączony klaster. KEYVAULT_NAME Nazwa magazynu kluczy. az iot ops init --simulate-plc --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --kv-id $(az keyvault show --name $KEYVAULT_NAME -o tsv --query id)
Jeśli wystąpi błąd informujący, że urządzenie jest wymagane do zarządzania dostępem do zasobu, uruchom ponownie polecenie
az login
i upewnij się, że logujesz się interaktywnie za pomocą przeglądarki.Napiwek
Jeśli aplikacja
az iot ops init
została uruchomiona wcześniej, automatycznie utworzyła rejestrację aplikacji w usłudze Microsoft Entra ID. Możesz ponownie użyć tej rejestracji, zamiast tworzyć nowe za każdym razem. Aby użyć istniejącej rejestracji aplikacji, dodaj opcjonalny parametr--sp-app-id <APPLICATION_CLIENT_ID>
.
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. Kontynuuj uruchamianie get pods
polecenia, aby odświeżyć widok.
Aby wyświetlić klaster w witrynie Azure Portal, wykonaj następujące kroki:
W witrynie Azure Portal przejdź do grupy zasobów zawierającej klaster.
W obszarze Przegląd grupy zasobów wybierz nazwę klastra.
W klastrze wybierz pozycję Rozszerzenia w sekcji Ustawienia 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. Te rozszerzenia mają unikatowy sufiks identyfikujący wdrożenie. Na poprzednim zrzucie ekranu ten sufiks to -z2ewy.
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.Zanotuj pełną nazwę rozszerzenia o nazwie mq-.... Ta nazwa jest używana w poniższych przewodnikach Szybki start.
Jak rozwiązaliśmy ten problem?
W tym przewodniku Szybki start skonfigurowano klaster Kubernetes z obsługą usługi Arc, aby mógł bezpiecznie komunikować się ze składnikami operacji usługi Azure IoT. Następnie wdrożono te składniki w klastrze. W tym scenariuszu testowym masz jeden klaster Kubernetes, który prawdopodobnie działa lokalnie na maszynie. W scenariuszu produkcyjnym można jednak użyć tych samych kroków, aby wdrożyć obciążenia w wielu klastrach w wielu lokacjach.
Czyszczenie zasobów
Jeśli przejdziesz do następnego przewodnika Szybki start, zachowaj wszystkie zasoby.
Jeśli chcesz usunąć wdrożenie operacji usługi Azure IoT, ale zaplanuj ponowne zainstalowanie go w klastrze, pamiętaj, aby zachować dostawcę wpisów tajnych w klastrze.
W grupie zasobów w witrynie Azure Portal wybierz klaster.
Na stronie zasobu klastra wybierz pozycję Rozszerzenia.
Wybierz wszystkie rozszerzenia typu microsoft.iotoperations.x i microsoft.deviceregistry.assets, a następnie wybierz pozycję Odinstaluj. Nie musisz odinstalować rozszerzenia dostawcy wpisów tajnych:
Wróć do grupy zasobów i wybierz zasób lokalizacji niestandardowej, a następnie wybierz pozycję Usuń.
Jeśli chcesz usunąć wszystkie zasoby utworzone na potrzeby tego przewodnika Szybki start, usuń klaster Kubernetes, w którym wdrożono operacje usługi Azure IoT, i usuń grupę zasobów platformy Azure zawierającą klaster.