Przygotowywanie klastra dla usługi Operacje Azure IoT

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
    

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>

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:

  1. 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.

  2. Sprawdź, czy zainstalowano K3skubectl. Jeśli nie, postępuj zgodnie z instrukcjami, aby zainstalować narzędzie kubectl w systemie Linux.

    kubectl version --client
    
  3. Postępuj zgodnie z instrukcjami, aby zainstalować program Helm.

  4. 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
    
  5. 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
    
  6. 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.

  1. 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.

  2. 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ć.

  3. 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"
    
  4. 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.

    Ważne

    Jeśli środowisko używa serwera proxy lub bramy Azure Arc, zmodyfikuj polecenie az connectedk8s connect przy użyciu informacji o serwerze proxy:

    1. Postępuj zgodnie z instrukcjami w Połącz przy użyciu serwera proxy ruchu wychodzącego lub Dodaj Klastry Kubernetes do Azure Arc z użyciem bramy Azure Arc.
    2. Dodaj 169.254.169.254 do parametru --proxy-skip-range polecenia az connectedk8s connect. Azure Rejestr urządzeń używa tego lokalnego punktu końcowego do uzyskiwania tokenów dostępu do autoryzacji.

    Operacje Azure IoT nie obsługuje serwerów proxy, które wymagają zaufanego certyfikatu.

  5. 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.

  6. Stwórz plik konfiguracyjny K3s.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. 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
    
  8. Zapisz plik i zamknij edytor nano.

  9. 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.

  10. 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
    
  11. Uruchom ponownie K3s.

    systemctl restart k3s
    

Skonfiguruj usługę Azure Container Storage obsługiwaną przez usługę Azure Arc

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.