Udostępnij za pośrednictwem


Szybki start: konfigurowanie usługi Azure IoT Layered Network Management (wersja zapoznawcza) w celu włączenia klastra usługi Arc w środowisku platformy Azure

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.

Po udostępnieniu ogólnie dostępnej wersji należy wdrożyć nową instalację operacji usługi Azure IoT. Nie będzie można uaktualnić instalacji w wersji zapoznawczej.

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 skonfigurujesz usługę Azure IoT Layered Network Management (wersja zapoznawcza) na poziomie 4 i 3 sieci purdue poziomu 3. Poziom 4 sieci ma dostęp do Internetu, a poziom 3 nie. Należy skonfigurować zarządzanie siecią warstwową tak, aby kierować ruch sieciowy z poziomu 3 do platformy Azure. Na koniec możesz włączyć klaster K3S w usłudze Arc na poziomie 3, nawet jeśli nie jest bezpośrednio połączony z Internetem.

  • Poziom 4 klastra usługi AKS z wdrożonym zarządzaniem siecią warstwową.
  • Poziom 3 to klaster K3S uruchomiony na maszynie wirtualnej z systemem Linux, który używa wystąpienia zarządzania siecią warstwową na poziomie 4 w celu nawiązania połączenia z platformą Azure. Sieć poziomu 3 jest skonfigurowana tak, aby mieć dostęp wychodzący do sieci poziomu 4 na portach 443 i 8084. Cały pozostały dostęp wychodzący jest wyłączony.

Architektura zarządzania siecią warstwową wymaga konfiguracji DNS w sieci poziomu 3, gdzie dozwolone adresy URL są ponownie określone w sieci poziomu 4. W tym przykładzie ta konfiguracja jest realizowana przy użyciu automatycznej konfiguracji, która jest oparta na coreDNS, domyślnym mechanizmie rozpoznawania nazw DNS dostarczanym z k3s.

Wymagania wstępne

Te wymagania wstępne dotyczą tylko niezależnego wdrażania zarządzania siecią warstwową i włączenia usługi Arc klastra na poziomie podrzędnym.

  • Klaster usługi AKS
  • Maszyna wirtualna z systemem Ubuntu 22.04.3 LTS platformy Azure
  • Serwer przesiadkowy lub komputer instalacyjny, który ma dostęp do Internetu i zarówno sieci poziomu 3, jak i poziomu 4

Wdrażanie warstwowej wersji zapoznawczej zarządzania siecią w klastrze usługi AKS

Te kroki umożliwiają wdrożenie zarządzania siecią warstwową w klastrze usługi AKS. Klaster jest górną warstwą w modelu ISA-95. Na końcu tej sekcji masz wystąpienie zarządzania siecią warstwową, które jest gotowe do akceptowania ruchu z klastra z obsługą usługi Azure Arc poniżej i obsługuje wdrożenie usługi Azure IoT Operations Preview.

  1. Skonfiguruj zarządzanie kubectl klastrem usługi AKS z poziomu serwera przesiadkowego, wykonując kroki opisane w temacie Nawiązywanie połączenia z klastrem.

  2. Zainstaluj operator Zarządzanie siecią warstwową za pomocą następującego polecenia interfejsu wiersza polecenia platformy Azure:

    az login
    
    az k8s-extension create --resource-group <RESOURCE GROUP> --name kind-lnm-extension --cluster-type connectedClusters --cluster-name <CLUSTER NAME> --auto-upgrade false --extension-type Microsoft.IoTOperations.LayeredNetworkManagement --version 0.1.0-preview --release-train preview
    
  3. Aby sprawdzić, czy instalacja zakończyła się pomyślnie, uruchom polecenie:

    kubectl get pods
    

    Powinny zostać wyświetlone dane wyjściowe podobne do następującego przykładu:

    NAME                                READY   STATUS        RESTARTS   AGE
    aio-lnm-operator-7db49dc9fd-kjf5x   1/1     Running       0          78s
    
  4. Utwórz zasób niestandardowy Zarządzanie siecią warstwową, tworząc plik o nazwie level4.yaml o następującej zawartości:

    apiVersion: layerednetworkmgmt.iotoperations.azure.com/v1beta1
    kind: Lnm
    metadata:
      name: level4
      namespace: default
    spec:
      image:
        pullPolicy: IfNotPresent
        repository: mcr.microsoft.com/oss/envoyproxy/envoy-distroless
        tag: v1.27.0
      replicas: 1
      logLevel: "debug"
      openTelemetryMetricsCollectorAddr: "http://aio-otel-collector.azure-iot-operations.svc.cluster.local:4317"
      level: 4
      allowList:
        enableArcDomains: true
        domains:
        - destinationUrl: "*.arc.azure.net"
          destinationType: external
        - destinationUrl: "*.data.mcr.microsoft.com"
          destinationType: external
        - destinationUrl: "*.dp.kubernetesconfiguration.azure.com"
          destinationType: external
        - destinationUrl: "*.guestnotificationservice.azure.com"
          destinationType: external
        - destinationUrl: "*.his.arc.azure.com"
          destinationType: external
        - destinationUrl: "*.login.microsoft.com"
          destinationType: external
        - destinationUrl: "*.login.microsoftonline.com"
          destinationType: external
        - destinationUrl: "*.obo.arc.azure.com"
          destinationType: external
        - destinationUrl: "*.servicebus.windows.net"
          destinationType: external
        - destinationUrl: "graph.microsoft.com"
          destinationType: external
        - destinationUrl: "login.windows.net"
          destinationType: external
        - destinationUrl: "management.azure.com"
          destinationType: external
        - destinationUrl: "mcr.microsoft.com"
          destinationType: external
        - destinationUrl: "sts.windows.net"
          destinationType: external
        - destinationUrl: "*.ods.opinsights.azure.com"
          destinationType: external
        - destinationUrl: "graph.windows.net"
          destinationType: external
        - destinationUrl: "msit-onelake.pbidedicated.windows.net"
          destinationType: external
        - destinationUrl: "*.azurecr.io"
          destinationType: external
        - destinationUrl: "*.azureedge.net"
          destinationType: external
        - destinationUrl: "*.blob.core.windows.net"
          destinationType: external
        - destinationUrl: "*.prod.hot.ingestion.msftcloudes.com"
          destinationType: external
        - destinationUrl: "*.prod.microsoftmetrics.com"
          destinationType: external
        - destinationUrl: "adhs.events.data.microsoft.com"
          destinationType: external
        - destinationUrl: "dc.services.visualstudio.com"
          destinationType: external
        - destinationUrl: "go.microsoft.com"
          destinationType: external
        - destinationUrl: "packages.microsoft.com"
          destinationType: external
        - destinationUrl: "www.powershellgallery.com"
          destinationType: external
        - destinationUrl: "*.gw.arc.azure.com"
          destinationType: external
        - destinationUrl: "*.gcs.prod.monitoring.core.windows.net"
          destinationType: external
        - destinationUrl: "*.prod.warm.ingest.monitor.core.windows.net"
          destinationType: external
        - destinationUrl: "*.prod.hot.ingest.monitor.core.windows.net"
          destinationType: external
        - destinationUrl: "azure.archive.ubuntu.com"
          destinationType: external
        - destinationUrl: "crl.microsoft.com"
          destinationType: external
        - destinationUrl: "*.table.core.windows.net"
          destinationType: external
        - destinationUrl: "*.blob.storage.azure.net"
          destinationType: external
        - destinationUrl: "*.docker.com"
          destinationType: external
        - destinationUrl: "*.docker.io"
          destinationType: external
        - destinationUrl: "*.googleapis.com"
          destinationType: external
        - destinationUrl: "github.com"
          destinationType: external
        - destinationUrl: "collect.traefik.io"
          destinationType: external
        - destinationUrl: "contracts.canonical.com"
          destinationType: external
        - destinationUrl: "database.clamav.net"
          destinationType: external
        - destinationUrl: "esm.ubuntu.com"
          destinationType: external
        - destinationUrl: "livepatch.canonical.com"
          destinationType: external
        - destinationUrl: "motd.ubuntu.com"
          destinationType: external
        - destinationUrl: "update.traefik.io"
          destinationType: external
        sourceIpRange:
        - addressPrefix: "0.0.0.0"
          prefixLen: 0
    
  5. Aby utworzyć wystąpienie zarządzania siecią warstwową na podstawie pliku level4.yaml , uruchom polecenie:

    kubectl apply -f level4.yaml
    

    Ten krok tworzy n zasobników, jedną usługę i dwie mapy konfiguracji. n jest oparta na liczbie replik w zasobie niestandardowym.

  6. Aby zweryfikować wystąpienie, uruchom polecenie:

    kubectl get pods
    

    Dane wyjściowe powinny wyglądać następująco:

    NAME                                    READY       STATUS    RESTARTS       AGE
    aio-lnm-operator-7db49dc9fd-kjf5x       1/1         Running       0          78s
    aio-lnm-level4-7598574bf-2lgss          1/1         Running       0          4s
    
  7. Aby wyświetlić usługę, uruchom polecenie:

    kubectl get services
    

    Dane wyjściowe powinny wyglądać podobnie do następującego przykładu:

    NAME              TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    aio-lnm-level4    LoadBalancer   10.0.141.101   20.81.111.118   80:30960/TCP,443:31214/TCP   29s
    
  8. Aby wyświetlić mapy konfiguracji, uruchom polecenie:

    kubectl get cm
    

    Dane wyjściowe powinny wyglądać podobnie do następującego przykładu:

    NAME                           DATA   AGE
    aio-lnm-level4-config          1      50s
    aio-lnm-level4-client-config   1      50s
    
  9. W tym przykładzie wystąpienie zarządzania siecią warstwową jest gotowe do akceptowania ruchu na zewnętrznym adresie IP 20.81.111.118.

Przygotowywanie klastra poziomu 3

Na poziomie 3 tworzysz klaster Kubernetes K3S na maszynie wirtualnej z systemem Linux. Aby uprościć konfigurowanie klastra, możesz utworzyć maszynę wirtualną z systemem Linux Ubuntu 22.04.3 LTS z dostępem do Internetu i włączyć protokół SSH z serwera przesiadkowego.

Napiwek

W bardziej realistycznym scenariuszu, który uruchamia konfigurację w izolowanej sieci, możesz przygotować maszynę ze wstępnie utworzonym obrazem dla rozwiązania lub podejściem do instalacji programu Air-Gap w usłudze K3S.

  1. Na maszynie wirtualnej z systemem Linux zainstaluj i skonfiguruj usługę K3S przy użyciu następujących poleceń:

    curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
    
  2. Skonfiguruj izolację sieci dla poziomu 3. Wykonaj poniższe kroki, aby skonfigurować klaster poziomu 3 tak, aby wysyłał ruch tylko do warstwowego zarządzania siecią na poziomie 4.

    • Przejdź do sieciowej grupy zabezpieczeń interfejsu sieciowego maszyny wirtualnej.
    • Dodaj dodatkową regułę zabezpieczeń dla ruchu wychodzącego, aby odmówić całego ruchu wychodzącego z maszyny wirtualnej poziomu 3.
    • Dodaj kolejną regułę ruchu wychodzącego z najwyższym priorytetem, aby zezwolić na ruch wychodzący do adresu IP klastra usługi AKS na portach 443 i 8084.

    Zrzut ekranu przedstawiający reguły ruchu wychodzącego sieciowej grupy zabezpieczeń.

Aprowizuj klaster w warstwie izolowanej do usługi Arc

W poniższych krokach włączysz klaster poziomu 3 za pomocą wystąpienia zarządzania siecią warstwową na poziomie 4.

  1. Skonfiguruj serwer przesiadkowy, aby mieć dostęp kubectl do klastra.

    Wygeneruj plik konfiguracji na maszynie wirtualnej z systemem Linux.

    k3s kubectl config view --raw > config.level3
    

    Na serwerze przesiadkowym skonfiguruj dostęp kubectl do klastra poziomu 3 k3s, kopiując config.level3 plik do ~/.kube katalogu i zmieniając jego nazwę na config. Wpis serwera w pliku konfiguracji powinien być ustawiony na adres IP lub nazwę domeny maszyny wirtualnej poziomu 3.

  2. Zapoznaj się z tematem Configure CoreDNS to use extension mechanisms provided by CoreDNS (domyślny serwer DNS dla klastrów K3S), aby dodać dozwolone adresy URL do rozpoznawania przez coreDNS.

  3. Uruchom następujące polecenia na serwerze przesiadkowym, aby połączyć klaster z usługą Arc. Ten krok wymaga interfejsu wiersza polecenia platformy Azure. W razie potrzeby zainstaluj interfejs wiersza polecenia Az.

    az login
    az account set --subscription <your Azure subscription ID>
    
    az connectedk8s connect -g <your resource group name> -n <your connected cluster name>
    

    Aby uzyskać więcej informacji o connectedk8s, zobacz Szybki start: łączenie istniejącego klastra Kubernetes z usługą Azure Arc .

  4. Powinny zostać wyświetlone dane wyjściowe podobne do następującego przykładu:

    This operation might take a while...
    
    The required pre-checks for onboarding have succeeded.
    Azure resource provisioning has begun.
    Azure resource provisioning has finished.
    Starting to install Azure arc agents on the Kubernetes cluster.
    {
      "agentPublicKeyCertificate": "MIICCgKCAgEAmU+Pc55pc3sOE2Jo5JbAdk+2OprUziCbgfGRFfbMHO4dT7A7LDaDk7tWwvz5KwUt66eMrabI7M52H8xXvy1j7YwsMwR5TaSeHpgrUe1/4XNYKa6SN2NbpXIXA3w4aHgtKzENm907rYMgTO9gBJEZNJpqsfCdb3E7AHWQabUe9y9T8aub+arBHLQ3furGkv8JnN2LCPbvLnmeLfc1J5
      ....
      ....
    
  5. Klaster Kubernetes jest teraz włączony w usłudze Arc i znajduje się w grupie zasobów podanej w poleceniu az connectedk8s connect. Możesz również zweryfikować aprowizację tego klastra za pośrednictwem witryny Azure Portal. Ten przewodnik Szybki start umożliwia przedstawienie możliwości zarządzania siecią warstwową w celu włączenia usługi Arc dla klastra Kubernetes. Teraz możesz wypróbować wbudowane środowiska arc w tym klastrze w sieci izolowanej.

Następne kroki