Udostępnij za pośrednictwem


Szybki start: Rozpocznij programowanie przy użyciu zestawów SDK do operacji usługi Azure IoT

Rozpocznij programowanie przy użyciu zestawów SDK operacji usługi Azure IoT. Wykonaj następujące kroki, aby skonfigurować środowisko deweloperskie do tworzenia i uruchamiania przykładów, a także tworzenia i testowania własnych aplikacji brzegowych o wysokiej dostępności.

Repozytorium | GitHubZestaw SDK | Zestaw SDK języka | GoZestaw Rust SDK

Wymagania wstępne

Przed rozpoczęciem przygotuj następujące wymagania wstępne:

Konfigurowanie

Programowanie przy użyciu zestawów SDK operacji usługi Azure IoT wymaga wdrożenia klastra Kubernetes z wdrożonym operacjami usługi Azure IoT. Dalsza konfiguracja umożliwia dostęp do brokera MQTT bezpośrednio ze środowiska deweloperskiego.

Ważne

Poniższe opcje konfiguracji środowiska deweloperskiego używają K3s działających w K3d dla uproszczonego klastra Kubernetes i wdraża operacje usługi Azure IoT przy użyciu ustawień testowych. W przypadku wdrożeń produkcyjnych wybierz pozycję Bezpieczne ustawienia.
Jeśli chcesz używać bezpiecznych ustawień, zalecamy wykonanie instrukcji opisanych w temacie Przygotowywanie klastra Kubernetes z włączoną usługą Azure Arc w celu utworzenia klastra K3s w systemie Ubuntu i wdrożenia operacji usługi Azure IoT w klastrze produkcyjnym w celu wdrożenia przy użyciu bezpiecznych ustawień. Następnie przejdź do konfigurowania operacji usługi Azure IoT na potrzeby wdrożenia.

Usługa GitHub Codespaces zapewnia najbardziej usprawnione środowisko i może w ciągu kilku minut uruchomić środowisko deweloperskie.

  1. Utwórz przestrzeń kodu w usłudze GitHub Codespaces z repozytorium zestawów SDK operacji usługi Azure IoT :

    Otwieranie w usłudze GitHub Codespaces

  2. Po utworzeniu przestrzeni kodu masz kontener z narzędziami deweloperów i lokalnym klastrem K3s działającym w preinstalowanym środowisku K3d.

Wdrażanie operacji usługi Azure IoT

Włączysz klaster deweloperów utworzony w poprzednim kroku i wdrożysz operacje usługi Azure IoT przy użyciu ustawień testowych.

Otwórz nowy terminal powłoki bash i wykonaj następujące czynności:

  1. Przejdź do katalogu głównego repozytorium:

    cd <REPOSITORY ROOT>
    
  2. install-aio-arc.sh Uruchom skrypt, aby włączyć klaster w usłudze Arc i wdrożyć operacje usługi Azure IoT, zastępując symbole zastępcze wartościami:

    Parameter Wartość
    LOKALIZACJA Region świadczenia usługi Azure blisko Ciebie. Aby uzyskać listę aktualnie obsługiwanych regionów, zobacz Obsługiwane regiony.
    RESOURCE_GROUP Nazwa nowej grupy zasobów platformy Azure, w której zostanie utworzony klaster.
    CLUSTER_NAME Nazwa klastra Kubernetes.
    STORAGE_ACCOUNT_NAME Nazwa konta magazynu. Nazwy kont magazynu muszą mieć długość od 3 do 24 znaków i zawierać tylko cyfry i małe litery.
    SCHEMA_REGISTRY_NAME Nazwa rejestru schematów. Nazwy rejestru schematów mogą zawierać tylko cyfry, małe litery i łączniki.
    SCHEMA_REGISTRY_NAMESPACE Nazwa przestrzeni nazw rejestru schematów. Przestrzeń nazw jednoznacznie identyfikuje rejestr schematów w dzierżawie. Nazwy przestrzeni nazw rejestru schematu mogą zawierać tylko cyfry, małe litery i łączniki.
    ./tools/deployment/install-aio-arc.sh -l <LOCATION> -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -s <STORAGE_ACCOUNT_NAME> -r <SCHEMA_REGISTRY_NAME> -n <SCHEMA_REGISTRY_NAMESPACE>
    

    Ten skrypt wykonuje następujące czynności:

    1. Logowanie się do interfejsu wiersza polecenia platformy Azure
    2. Tworzenie grupy zasobów
    3. Rejestrowanie wymaganych dostawców platformy Azure
    4. Łączenie klastra Kubernetes z usługą Azure Arc
    5. Włączanie funkcji usługi Azure Arc
    6. Tworzenie konta usługi Azure Storage
    7. Tworzenie rejestru schematów operacji usługi Azure IoT
    8. Inicjowanie operacji usługi Azure IoT
    9. Tworzenie wystąpienia operacji usługi Azure IoT
  3. Po zakończeniu wdrażania użyj polecenia az iot ops check , aby ocenić wdrożenie usługi Azure 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
    

Konfigurowanie operacji usługi Azure IoT na potrzeby programowania

Po wdrożeniu operacji usługi Azure IoT należy ją skonfigurować na potrzeby programowania. Obejmuje to skonfigurowanie brokera I metod uwierzytelniania MQTT oraz upewnienie się, że wymagane zmienne środowiskowe są ustawione dla środowiska deweloperskiego:

  1. Przejdź do katalogu głównego repozytorium:

    cd <REPOSITORY ROOT>
    
  2. Uruchom skrypt, configure-aio.sh aby skonfigurować operacje usługi Azure IoT na potrzeby programowania:

    ./tools/deployment/configure-aio.sh
    

    Ten skrypt wykonuje następujące czynności:

    1. Konfigurowanie usług certyfikatów, jeśli brakuje
    2. Tworzenie głównych i pośrednich urzędów certyfikacji dla uwierzytelniania x509
    3. Tworzenie pakietu zaufania ConfigMap dla brokera w celu uwierzytelniania klientów x509
    4. Konfigurowanie zasobów BrokerListener i BrokerAuthentication dla uwierzytelniania SAT i x509

Testowanie instalacji

Aby przetestować, czy konfiguracja działa poprawnie, użyj polecenia mosquitto_pub , aby nawiązać połączenie z brokerem MQTT w celu zweryfikowania certyfikatów x509, sat i pakietu zaufania.

  1. Eksportuj .session katalog:

    export SESSION=$(git rev-parse --show-toplevel)/.session
    
  2. Przetestuj bez protokołu TLS, bez uwierzytelniania:

    mosquitto_pub -L mqtt://localhost:1883/hello -m world --debug
    
  3. Przetestuj protokół TLS przy użyciu uwierzytelniania x509:

    mosquitto_pub -L mqtts://localhost:8883/hello -m world --cafile $SESSION/broker-ca.crt --cert $SESSION/client.crt --key $SESSION/client.key --debug
    
  4. Przetestuj protokół TLS przy użyciu uwierzytelniania SAT:

    mosquitto_pub -L mqtts://localhost:8884/hello -m world --cafile $SESSION/broker-ca.crt -D CONNECT authentication-method K8S-SAT -D CONNECT authentication-data $(cat $SESSION/token.txt) --debug
    

Uruchamianie przykładu

W tym przykładzie pokazano prostą komunikację między klientem a serwerem przy użyciu telemetrii i zdalnego wywołania procedury (RPC). Serwer śledzi wartość licznika i akceptuje żądania RPC od klienta do odczytu lub przyrostowania tego licznika.

  1. Instalowanie zestawu .NET 9.0 SDK

  2. Przykłady w repozytorium GitHub zestawów SDK operacji usługi Azure IoT odczytują konfigurację ze zmiennych środowiskowych. Udostępniamy .env plik w głównym katalogu repozytorium, który eksportuje zmienne, które przykłady używają do łączenia się z brokerem MQTT. Edytuj plik, .env aby ustawić wartości dla środowiska lub użyj wartości domyślnych podanych w pliku.

  3. Przejdź do przykładowego CounterServer katalogu:

    cd <REPOSITORY ROOT>/dotnet/samples/Protocol/Counter/CounterServer/
    
  4. Skompiluj przykład:

    dotnet build
    
  5. Uruchom przykład:

    source `git rev-parse --show-toplevel`/.env; export AIO_MQTT_CLIENT_ID=counter-server; dotnet run
    
  6. Otwórz nową powłokę i przejdź do przykładowego CounterClient katalogu:

    cd <REPOSITORY ROOT>/dotnet/samples/Protocol/Counter/CounterClient/
    
  7. Skompiluj przykład:

    dotnet build
    
  8. Uruchom przykład:

    source `git rev-parse --show-toplevel`/.env; export AIO_MQTT_CLIENT_ID=counter-client; export COUNTER_SERVER_ID=counter-server; dotnet run
    
  9. Powinien zostać wyświetlony klient i serwer komunikujący się z klientem wysyłającym żądania w celu odczytu i przyrostowania wartości licznika. Jest to przykład komunikatów wyjściowych, które można zobaczyć:

    Dane wyjściowe CounterClient:

    CounterClient Information: 0 : Invoked command 'readCounter' with correlation ID 12345 to topic 'rpc/command-samples/counter-server/readCounter'
    CounterClient Information: 0 : Invoked command 'increment' with correlation ID 123456 to topic 'rpc/command-samples/counter-server/increment'
    info: CounterClient.RpcCommandRunner[0] called counter.incr 1 with id 12346
    info: CounterClient.CounterClient[0] Telemetry received from counter-server: CounterValue=1
    info: CounterClient.RpcCommandRunner[0] counter 32 with id 12345
    info: CounterClient.RpcCommandRunner[0] Current telemetry count: 32
    

    Dane wyjściowe CounterServer:

    CounterServer Information: 0 : Command executor for 'reset' started.
    CounterServer Information: 0 : Command executor for 'increment' started.
    CounterServer Information: 0 : Command executor for 'readCounter' started.
    CounterServer.CounterService[0] --> Executing Counter.ReadCounter with id 12345 for counter-client
    CounterServer.CounterService[0] --> Executed Counter.ReadCounter with id 12345 for counter-client
    CounterServer.CounterService[0] --> Executing Counter.Increment with id 12346 for counter-client
    CounterServer.CounterService[0] --> Executed Counter.Increment with id 12346 for counter-client
    CounterServer Information: 0 : Telemetry sent successfully to the topic 'telemetry/telemetry-samples/counterValue'
    
  10. Przykład CounterClient automatycznie kończy działanie po zakończeniu. Możesz również zatrzymać próbkę CounterServer , naciskając w Ctrl+C terminalu.

Podsumowanie konfiguracji

Konfiguracja brokera MQTT

Po zakończeniu instalacji klaster zawiera następujące definicje brokera MQTT:

Typ składnika Name Description
Broker domyślny Broker MQTT
BrokerListener domyślny Zapewnia dostęp klastra do brokera MQTT
BrokerListener default-external Zapewnia dostęp poza klastrem do brokera MQTT
BrokerAuthentication domyślny Definicja uwierzytelniania SAT
BrokerAuthentication default-x509 Definicja uwierzytelniania x509

Dostęp brokera MQTT

Dostęp do brokera MQTT można uzyskać zarówno w klastrze, jak i poza klastrem, korzystając z informacji o połączeniu zgodnie z opisem w poniższej tabeli. Zapoznaj się z tematem Ustawienia połączenia , aby uzyskać informacje na temat zmiennych środowiskowych, które mają być używane podczas konfigurowania aplikacji.

Uwaga / Notatka

Nazwa hosta podczas uzyskiwania dostępu do brokera MQTT poza klastrem może się różnić w localhost zależności od konfiguracji.

Hostname Authentication magazyn lokalny wątku Na porcie klastra Poza portem klastra
aio-broker SOBOTA 18883 -
localhost Żaden 1883 1883
localhost x509 8883 8883
localhost SOBOTA 8884 8884

Artefakty programistyczne

W ramach skryptu wdrażania następujące pliki są tworzone w środowisku lokalnym w celu ułatwienia połączenia i uwierzytelniania z brokerem MQTT. Te pliki znajdują się w katalogu znajdującym się w .session katalogu głównym repozytorium.

File Description
broker-ca.crt Pakiet zaufania brokera MQTT wymagany do zweryfikowania brokera MQTT na portach 8883 i 8884
token.txt Token uwierzytelniania usługi (SAT) do uwierzytelniania za pomocą brokera MQTT na 8884
client.crt Certyfikat klienta x509 do uwierzytelniania za pomocą brokera MQTT na porcie 8883
client.key Klucz prywatny klienta x509 do uwierzytelniania za pomocą brokera MQTT na porcie 8883

Rozwiązywanie problemów

Zapoznaj się z przewodnikiem rozwiązywania problemów, aby zapoznać się z typowymi problemami w repozytorium GitHub zestawów SDK operacji usługi Azure IoT: Rozwiązywanie problemów.

Dalsze kroki

W tym przewodniku Szybki start skonfigurujesz zestawy SDK operacji usługi Azure IoT i uruchomisz przykładową aplikację. Aby dowiedzieć się więcej na temat programowania za pomocą zestawów SDK, zapoznaj się z następującymi zasobami: