Omówienie automatycznych wdrożeń usługi IoT Edge dla pojedynczych urządzeń lub na dużą skalę

Dotyczy:IoT Edge 1.4 checkmark IoT Edge 1.4

Ważne

Azure IoT Edge1.4 jest obsługiwaną wersją. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

Wdrożenia automatyczne i wdrożenie warstwowe ułatwiają zarządzanie modułami i konfigurowanie ich na dużej liczbie urządzeń usługi IoT Edge.

Usługa Azure IoT Edge udostępnia dwa sposoby konfigurowania modułów do uruchamiania na urządzeniach usługi IoT Edge. Pierwszą metodą jest wdrożenie modułów dla poszczególnych urządzeń. Utworzysz manifest wdrożenia, a następnie zastosujesz go do określonego urządzenia według nazwy. Druga metoda polega na automatycznym wdrożeniu modułów na dowolnym zarejestrowanym urządzeniu, które spełnia zestaw zdefiniowanych warunków. Utworzysz manifest wdrożenia, a następnie zdefiniuj urządzenia, które mają zastosowanie na podstawie tagów w bliźniaczej reprezentacji urządzenia.

Nie można łączyć wdrożeń poszczególnych urządzeń i wdrożeń automatycznych. Po rozpoczęciu określania docelowych urządzeń usługi IoT Edge przy użyciu wdrożeń automatycznych (z wdrożeniami warstwowymi lub bez tych wdrożeń) wdrożenia poszczególnych urządzeń nie są już obsługiwane.

Ten artykuł koncentruje się na konfigurowaniu i monitorowaniu flot urządzeń, zbiorczo nazywanych wdrożeniami automatycznymi usługi IoT Edge.

Podstawowe kroki wdrażania są następujące:

  1. Operator definiuje manifest wdrożenia, który opisuje zestaw modułów i urządzeń docelowych.
  2. W związku z tym usługa IoT Hub komunikuje się ze wszystkimi urządzeniami docelowymi w celu skonfigurowania ich z zadeklarowanymi modułami.
  3. Usługa IoT Hub pobiera stan z urządzeń usługi IoT Edge i udostępnia je operatorowi. Na przykład operator może zobaczyć, kiedy urządzenie edge nie zostało pomyślnie skonfigurowane lub jeśli moduł ulegnie awarii podczas wykonywania.
  4. W dowolnym momencie, gdy nowo ukierunkowane urządzenia usługi IoT Edge są dostępne w trybie online i łączą się z usługą IoT Hub, są one skonfigurowane do wdrożenia.

W tym artykule opisano każdy składnik zaangażowany w konfigurowanie i monitorowanie wdrożenia. Aby zapoznać się z przewodnikiem tworzenia i aktualizowania wdrożenia, zobacz Wdrażanie i monitorowanie modułów usługi IoT Edge na dużą skalę.

Wdrażanie

Automatyczne wdrażanie usługi IoT Edge przypisuje obrazy modułów usługi IoT Edge do uruchamiania jako wystąpień na docelowym zestawie urządzeń usługi IoT Edge. Wdrożenie automatyczne konfiguruje manifest wdrożenia usługi IoT Edge w celu uwzględnienia listy modułów z odpowiednimi parametrami inicjowania. Wdrożenie można przypisać do jednego urządzenia (na podstawie identyfikatora urządzenia) lub do grupy urządzeń (na podstawie tagów). Gdy urządzenie usługi IoT Edge otrzyma manifest wdrożenia, pobiera i instaluje obrazy kontenerów z odpowiednich repozytoriów kontenerów i odpowiednio je konfiguruje. Po utworzeniu wdrożenia operator może monitorować stan wdrożenia, aby sprawdzić, czy urządzenia docelowe są poprawnie skonfigurowane.

Przy użyciu wdrożenia można skonfigurować tylko urządzenia usługi IoT Edge. Aby móc otrzymać wdrożenie, na urządzeniu muszą znajdować się następujące wymagania wstępne:

  • Podstawowy system operacyjny
  • System zarządzania kontenerami, taki jak Moby lub Docker
  • Aprowizowanie środowiska uruchomieniowego usługi IoT Edge

Manifest wdrożenia

Manifest wdrożenia to dokument JSON opisujący moduły do skonfigurowania na docelowych urządzeniach usługi IoT Edge. Zawiera metadane konfiguracji dla wszystkich modułów, w tym wymagane moduły systemowe (w szczególności agent usługi IoT Edge i centrum usługi IoT Edge).

Metadane konfiguracji dla każdego modułu obejmują:

  • Wersja
  • Typ
  • Stan (na przykład Uruchomiono lub Zatrzymano)
  • Zasady ponownego uruchamiania
  • Rejestr obrazów i kontenerów
  • Trasy dla danych wejściowych i wyjściowych

Jeśli obraz modułu jest przechowywany w prywatnym rejestrze kontenerów, agent usługi IoT Edge przechowuje poświadczenia rejestru.

Warunek docelowy

Warunek urządzenia docelowego jest stale oceniany przez cały okres istnienia wdrożenia. Wszystkie nowe urządzenia spełniające wymagania zostaną uwzględnione, a wszystkie istniejące urządzenia, które nie spełniają już wymagań, zostaną usunięte. Wdrożenie zostanie ponownie aktywowane, jeśli usługa wykryje jakąkolwiek zmianę warunku docelowego.

Na przykład masz wdrożenie z warunkiem tags.environment = 'prod'docelowym . Po zainicjowaniu wdrożenia istnieje 10 urządzeń produkcyjnych. Moduły zostały pomyślnie zainstalowane na tych 10 urządzeniach. Stan agenta usługi IoT Edge przedstawia 10 wszystkich urządzeń, 10 pomyślnych odpowiedzi, 0 odpowiedzi na błędy i 0 oczekujących odpowiedzi. Teraz dodasz pięć kolejnych urządzeń za pomocą polecenia tags.environment = 'prod'. Usługa wykrywa zmianę, a stan agenta usługi IoT Edge zawiera teraz 15 urządzeń, 10 pomyślnych odpowiedzi, 0 odpowiedzi na błędy i 5 oczekujących odpowiedzi podczas wdrażania na pięciu nowych urządzeniach.

Jeśli wdrożenie nie ma warunku docelowego, to nie jest stosowane do żadnych urządzeń.

Użyj dowolnego warunku warunkowego w tagach bliźniaczej reprezentacji urządzenia, zgłoszonych właściwościach bliźniaczej reprezentacji urządzenia lub identyfikatorze urządzenia, aby wybrać urządzenia docelowe. Jeśli chcesz użyć warunku z tagami, musisz dodać sekcję "tags":{} w bliźniaczej reprezentacji urządzenia na tym samym poziomie co właściwości. Aby uzyskać więcej informacji na temat tagów w bliźniaczej reprezentacji urządzenia, zobacz Opis bliźniaczych reprezentacji urządzeń i korzystanie z nich w usłudze IoT Hub. Aby uzyskać więcej informacji na temat operacji zapytań, zobacz Operatory języka zapytań usługi IoT Hub i funkcja IS_DEFINED.

Przykłady warunków docelowych:

  • deviceId ='linuxprod1'
  • tags.environment ='prod'
  • tags.environment = 'prod' AND tags.location = 'westus'
  • tags.environment = 'prod' OR tags.location = 'westus'
  • tags.operator = 'John' AND tags.environment = 'prod' AND NOT deviceId = 'linuxprod1'
  • properties.reported.devicemodel = '4000x'
  • IS_DEFINED(tags.remote)
  • NIE IS_DEFINED(tags.location.building)
  • tags.environment != null
  • [brak]

Podczas konstruowania warunku docelowego należy wziąć pod uwagę następujące ograniczenia:

  • W bliźniaczej reprezentacji urządzenia można utworzyć warunek docelowy tylko przy użyciu tagów, zgłoszonych właściwości lub identyfikatora urządzenia.
  • Cudzysłowy podwójne nie są dozwolone w żadnej części warunku docelowego. Użyj cudzysłowów pojedynczych.
  • Pojedyncze cudzysłowy reprezentują wartości warunku docelowego. W związku z tym należy ująć pojedynczy cudzysłów przy użyciu innego pojedynczego cudzysłowu, jeśli jest częścią nazwy urządzenia. Na przykład w celu kierowania urządzenia o nazwie operator'sDevice, zapisz deviceId='operator''sDevice'.
  • Cyfry, litery i następujące znaki są dozwolone w wartościach warunku docelowego: "()<>@,;:\\"/?={} \t\n\r.
  • Następujące znaki nie są dozwolone w kluczach warunku docelowego:/;

Priorytet

Priorytet określa, czy wdrożenie powinno być stosowane do urządzenia docelowego względem innych wdrożeń. Priorytet wdrożenia to dodatnia liczba całkowita z zakresu od 0 do 2 147 483 647. Większe liczby oznaczają wyższy priorytet. Jeśli urządzenie usługi IoT Edge jest objęte więcej niż jednym wdrożeniem, wdrożenie o najwyższym priorytcie ma zastosowanie. Wdrożenia o niższych priorytetach nie są stosowane ani scalane. Jeśli urządzenie jest objęte co najmniej dwoma wdrożeniami o równym priorytcie, ma zastosowanie ostatnio utworzone wdrożenie (określone przez sygnaturę czasową tworzenia).

Etykiety

Etykiety to pary klucz/wartość ciągu, których można użyć do filtrowania i grupowania wdrożeń. Wdrożenie może mieć wiele etykiet. Etykiety są opcjonalne i nie mają wpływu na konfigurację urządzeń usługi IoT Edge.

Mierniki

Domyślnie wszystkie wdrożenia raportują o czterech metrykach:

  • Element docelowy przedstawia urządzenia usługi IoT Edge zgodne z warunkiem określania wartości docelowej wdrożenia.
  • Zastosowane pokazuje docelowe urządzenia usługi IoT Edge, które nie są objęte innym wdrożeniem o wyższym priorytcie.
  • Powodzenie raportowania pokazuje urządzenia usługi IoT Edge, które zgłaszają swoje moduły jako pomyślnie wdrożone.
  • Błąd raportowania pokazuje urządzenia usługi IoT Edge, które zgłaszają co najmniej jeden moduł jako wdrożone niepowodzenie. Aby dokładniej zbadać błąd, połącz się zdalnie z tymi urządzeniami i wyświetl pliki dziennika.

Ponadto możesz zdefiniować własne metryki niestandardowe, aby ułatwić monitorowanie wdrożenia i zarządzanie nim.

Metryki zawierają podsumowanie liczby różnych stanów, które urządzenia mogą zgłaszać z powrotem w wyniku zastosowania konfiguracji wdrożenia. Metryki mogą wysyłać zapytania o zgłoszone właściwości bliźniaczej reprezentacji modułu edgeHub, takie jak lastDesiredStatus lub last Połączenie Time.

Przykład:

SELECT deviceId FROM devices
  WHERE properties.reported.lastDesiredStatus.code = 200

Dodawanie własnych metryk jest opcjonalne i nie ma wpływu na rzeczywistą konfigurację urządzeń usługi IoT Edge.

Wdrożenie warstwowe

Wdrożenia warstwowe to wdrożenia automatyczne, które można połączyć ze sobą w celu zmniejszenia liczby unikatowych wdrożeń, które należy utworzyć. Wdrożenia warstwowe są przydatne w scenariuszach, w których te same moduły są ponownie używane w różnych kombinacjach w wielu wdrożeniach automatycznych.

Wdrożenia warstwowe mają te same podstawowe składniki co każde wdrożenie automatyczne. Są one przeznaczone dla urządzeń na podstawie tagów w bliźniaczych reprezentacjach urządzeń i zapewniają te same funkcje dotyczące etykiet, metryk i raportowania stanu. Wdrożenia warstwowe mają również przypisane priorytety. Zamiast używać priorytetu do określenia, które wdrożenie jest stosowane do urządzenia, priorytet określa, jak wiele wdrożeń jest klasyfikowanych na urządzeniu. Jeśli na przykład dwa wdrożenia warstwowe mają moduł lub trasę o tej samej nazwie, wdrożenie warstwowe o wyższym priorytecie zostanie zastosowane podczas zastępowania niższego priorytetu.

Moduły środowiska uruchomieniowego systemu, znane jako edgeAgent i edgeHub, nie są konfigurowane jako część wdrożenia warstwowego. Każde urządzenie usługi IoT Edge objęte wdrożeniem warstwowym wymaga najpierw zastosowania standardowego automatycznego wdrożenia. Wdrożenie automatyczne zapewnia podstawę, na której można dodać wdrożenia warstwowe.

Urządzenie usługi IoT Edge może stosować jedno i tylko jedno standardowe automatyczne wdrożenie, ale może stosować wiele wdrożeń automatycznych warstwowych. Wszystkie wdrożenia warstwowe przeznaczone dla urządzenia muszą mieć wyższy priorytet niż automatyczne wdrażanie tego urządzenia.

Rozważmy na przykład następujący scenariusz firmy zarządzającej budynkami. Firma opracowała moduły usługi IoT Edge do zbierania danych z kamer bezpieczeństwa, czujników ruchu i wind. Jednak nie wszystkie budynki mogą używać wszystkich trzech modułów. W przypadku standardowych wdrożeń automatycznych firma musi utworzyć poszczególne wdrożenia dla wszystkich kombinacji modułów, których potrzebują w swoich budynkach.

Screenshot of showing that standard automatic deployments need to accommodate every module combination.

Jednak gdy firma przejdzie do wdrożeń automatycznych warstwowych, może utworzyć te same kombinacje modułów dla swoich budynków z mniejszą liczbą wdrożeń do zarządzania. Każdy moduł ma własne wdrożenie warstwowe, a tagi urządzeń identyfikują moduły dodawane do każdego budynku.

Screenshot that shows how layered automatic deployments simplify scenarios where the same modules are combined in different ways.

Konfiguracja bliźniaczej reprezentacji modułu

Podczas pracy z wdrożeniami warstwowymi można celowo lub w inny sposób korzystać z dwóch wdrożeń z tym samym modułem przeznaczonym dla urządzenia. W takich przypadkach można zdecydować, czy wdrożenie o wyższym priorytcie powinno zastąpić bliźniaczą reprezentację modułu, czy dołączyć do niego. Na przykład może istnieć wdrożenie, które stosuje ten sam moduł do 100 różnych urządzeń. Jednak 10 z tych urządzeń jest w bezpiecznych obiektach i wymaga dodatkowej konfiguracji w celu komunikowania się za pośrednictwem serwerów proxy. Za pomocą wdrożenia warstwowego można dodać właściwości bliźniaczej reprezentacji modułu, które umożliwiają tym 10 urządzeniom bezpieczne komunikowanie się bez zastępowania istniejących informacji bliźniaczych reprezentacji modułu z wdrożenia podstawowego.

Żądane właściwości bliźniaczej reprezentacji modułu można dołączyć w manifeście wdrożenia. W przypadku wdrożenia standardowego należy dodać właściwości w sekcji properties.desired bliźniaczej reprezentacji modułu. Jednak we wdrożeniu warstwowym można zadeklarować nowy podzbiór żądanych właściwości.

Na przykład w standardowym wdrożeniu można dodać moduł symulowanego czujnika temperatury z następującymi żądanymi właściwościami, które informują go o wysyłaniu danych w 5-sekundowych interwałach:

"SimulatedTemperatureSensor": {
  "properties.desired": {
    "SendData": true,
    "SendInterval": 5
  }
}

W przypadku wdrożenia warstwowego przeznaczonego dla niektórych lub wszystkich tych samych urządzeń można dodać właściwość, która informuje symulowany czujnik o wysłaniu 1000 komunikatów, a następnie zatrzymaniu. Nie chcesz zastępować istniejących właściwości, więc utworzysz nową sekcję w żądanych właściwościach o nazwie layeredProperties, która zawiera nową właściwość:

"SimulatedTemperatureSensor": {
  "properties.desired.layeredProperties": {
    "StopAfterCount": 1000
  }
}

Urządzenie, które ma zastosowane oba wdrożenia, będzie odzwierciedlać następujące właściwości w bliźniaczej reprezentacji modułu dla symulowanego czujnika temperatury:

"properties": {
  "desired": {
    "SendData": true,
    "SendInterval": 5,
    "layeredProperties": {
      "StopAfterCount": 1000
    }
  }
}

Jeśli ustawisz properties.desired pole bliźniaczej reprezentacji modułu we wdrożeniu warstwowym, properties.desired zastąpi żądane właściwości tego modułu we wszystkich wdrożeniach o niższym priorytcie.

Wdrażanie etapowe

Wdrożenie etapowe to ogólny proces, w którym operator wdraża zmiany w rozszerzonym zestawie urządzeń usługi IoT Edge. Celem jest stopniowe wprowadzanie zmian w celu zmniejszenia ryzyka wprowadzenia zmian powodujących niezgodność na dużą skalę. Wdrożenia automatyczne ułatwiają zarządzanie etapowymi wdrożeniami we wszystkich flotach urządzeń usługi IoT Edge.

Wdrożenie etapowe jest wykonywane w następujących fazach i krokach:

  1. Ustanów środowisko testowe urządzeń usługi IoT Edge, aprowizuj je i ustawiając tag bliźniaczej reprezentacji urządzenia, taki jak tag.environment='test'. Środowisko testowe powinno odzwierciedlać środowisko produkcyjne, które zostanie ostatecznie przeznaczone dla wdrożenia.
  2. Utwórz wdrożenie, w tym odpowiednie moduły i konfiguracje. Warunek określania wartości docelowej powinien być przeznaczony dla testowego środowiska urządzenia usługi IoT Edge.
  3. Zweryfikuj konfigurację nowego modułu w środowisku testowym.
  4. Zaktualizuj wdrożenie, aby uwzględnić podzbiór produkcyjnych urządzeń usługi IoT Edge, dodając nowy tag do warunku określania wartości docelowej. Upewnij się również, że priorytet wdrożenia jest wyższy niż inne wdrożenia, które są obecnie przeznaczone dla tych urządzeń.
  5. Sprawdź, czy wdrożenie zakończyło się pomyślnie na docelowych urządzeniach usługi IoT Edge, wyświetlając stan wdrożenia.
  6. Zaktualizuj wdrożenie, aby było przeznaczone dla wszystkich pozostałych produkcyjnych urządzeń usługi IoT Edge.

Wycofywanie

Wdrożenia można wycofać, jeśli wystąpią błędy lub błędy konfiguracji. Ponieważ wdrożenie definiuje bezwzględną konfigurację modułu dla urządzenia usługi IoT Edge, dodatkowe wdrożenie musi być również ukierunkowane na to samo urządzenie o niższym prioryficie, nawet jeśli celem jest usunięcie wszystkich modułów.

Usunięcie wdrożenia nie powoduje usunięcia modułów z urządzeń docelowych. Musi istnieć inne wdrożenie, które definiuje nową konfigurację dla urządzeń, nawet jeśli jest to puste wdrożenie.

Jednak usunięcie wdrożenia może usunąć moduły z urządzenia docelowego, jeśli było to wdrożenie warstwowe. Wdrożenie warstwowe aktualizuje wdrożenie bazowe, potencjalnie dodając moduły. Usunięcie wdrożenia warstwowego powoduje usunięcie aktualizacji bazowego wdrożenia, co może spowodować usunięcie modułów.

Na przykład na urządzeniu zastosowano podstawowe wdrożenia A i wdrożenia warstwowe O i M (dzięki czemu wdrożenia A, O i M są wdrażane na urządzeniu). Jeśli wdrożenie warstwowe M zostanie usunięte, na urządzeniu są stosowane A i O, a moduły unikatowe dla wdrożenia M zostaną usunięte.

Wykonaj wycofywanie w następującej sekwencji:

  1. Upewnij się, że drugie wdrożenie jest również przeznaczone dla tego samego zestawu urządzeń. Jeśli celem wycofania jest usunięcie wszystkich modułów, drugie wdrożenie nie powinno zawierać żadnych modułów.
  2. Zmodyfikuj lub usuń wyrażenie warunku docelowego wdrożenia, które chcesz wycofać, aby urządzenia nie spełniały już warunku określania wartości docelowej.
  3. Sprawdź, czy wycofanie zakończyło się pomyślnie, wyświetlając stan wdrożenia.
    • Wdrożenie wycofane nie powinno już pokazywać stanu dla wycofanych urządzeń.
    • Drugie wdrożenie powinno teraz obejmować stan wdrożenia dla urządzeń, które zostały wycofane.

Następne kroki