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.
Skonfiguruj zarządzanie
kubectl
klastrem usługi AKS z poziomu serwera przesiadkowego, wykonując kroki opisane w temacie Nawiązywanie połączenia z klastrem.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
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
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
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.
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
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
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
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.
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
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.
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.
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ę naconfig
. Wpis serwera w pliku konfiguracji powinien być ustawiony na adres IP lub nazwę domeny maszyny wirtualnej poziomu 3.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.
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 .
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 .... ....
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
- Aby dowiedzieć się, jak skonfigurować klaster w izolowanej sieci dla operacji usługi Azure IoT do wdrożenia, zobacz Konfigurowanie usługi Zarządzania siecią warstwową w celu włączenia usługi Azure IoT Operations Preview w izolowanej sieci
- Aby uzyskać więcej szczegółowych informacji na temat konfigurowania kompleksowych środowisk sieciowych dla scenariuszy związanych z operacjami usługi Azure IoT, zobacz Tworzenie przykładowego środowiska sieciowego