Du brauchst einen Azure Arc-fähigen Kubernetes-Cluster, um Azure IoT Einsatz bereitzustellen. Dieser Artikel erklärt, wie man diesen Cluster vorbereitet, mit Anleitungen für Ubuntu, Windows, Azure Local, vSphere Kubernetes Service (VKS) und Red Hat OpenShift Container Platform (OpenShift).
Wenn Sie Azure IoT Einsatz schnell bereitstellen und eine Beispielarbeitsauslastung in einer Testumgebung ausführen möchten, lesen Sie die Quickstart: Führen Sie Azure IoT Einsatz in GitHub Codespaces mit K3s aus.
Voraussetzungen
Für Multi-Node-Deployments verwenden Sie K3s unter Ubuntu, AKS unter Azure Local, vSphere Kubernetes Service (VKS) oder OpenShift. AKS Edge Essentials unter Windows unterstützt nur Einzelknoten-Deployments.
Um einen Azure Arc-fähigen Kubernetes-Cluster vorzubereiten, benötigen Sie Folgendes:
Ein Azure-Abonnement mit der Rolle Owner oder einer Kombination aus Contributor und Benutzerzugriffsadministrator. Sie können Ihre Zugriffsebene überprüfen, indem Sie zu Ihrem Abonnement navigieren, Access-Steuerelement (IAM) auf der linken Seite des Azure-Portals auswählen und dann Zugriff anzeigen auswählen. Wenn Sie nicht über ein Azure-Abonnement verfügen, sie kostenlos erstellen bevor Sie beginnen.
Die auf dem Entwicklungscomputer installierte Azure CLI. Prüfen Sie Verfügbare Azure CLI-Erweiterungen auf die mindestens erforderliche Version für die connectedk8s-Erweiterung. Verwenden Sie az --version, um Ihre Version zu überprüfen. Bei Bedarf können Sie sie mithilfe von az upgrade aktualisieren. Weitere Informationen finden Sie unter Install the Azure CLI.
Die connectedk8s-Erweiterung für die Azure CLI. Verwenden Sie den folgenden Befehl, um die Erweiterung hinzuzufügen oder auf die neueste Version zu aktualisieren:
az extension add --upgrade --name connectedk8s
Eine Azure Ressourcengruppe. Pro Ressourcengruppe wird nur eine Azure IoT Einsatz Instanz unterstützt. Verwenden Sie zum Erstellen einer neuen Ressourcengruppe den Befehl az group create. Eine Liste der derzeit unterstützten Azure Regionen finden Sie unter Supported regions.
az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Hardware, die die Systemanforderungen erfüllt:
Wenn Sie Azure IoT Einsatz in einem Multiknotencluster mit aktivierter Fehlertoleranz bereitstellen möchten, überprüfen Sie die Hardware- und Speicheranforderungen in Prepare Linux for Edge Volumes.
Um einen Azure Arc-fähigen Kubernetes-Cluster vorzubereiten, benötigen Sie Folgendes:
- Ein Azure-Abonnement. Wenn Sie nicht über ein Azure-Abonnement verfügen, sie kostenlos erstellen bevor Sie beginnen.
Um einen Azure Arc-fähigen Kubernetes-Cluster vorzubereiten, benötigen Sie Folgendes:
- Ein Azure-Abonnement. Wenn Sie nicht über ein Azure-Abonnement verfügen, sie kostenlos erstellen bevor Sie beginnen.
Um einen vSphere Kubernetes Service (VKS) Workload-Cluster vorzubereiten, benötigen Sie:
Ein Azure-Abonnement mit der Rolle Owner oder einer Kombination aus Contributor und Benutzerzugriffsadministrator. Sie können Ihre Zugriffsebene überprüfen, indem Sie zu Ihrem Abonnement navigieren, Access-Steuerelement (IAM) auf der linken Seite des Azure-Portals auswählen und dann Zugriff anzeigen auswählen. Wenn Sie nicht über ein Azure-Abonnement verfügen, sie kostenlos erstellen bevor Sie beginnen.
Die auf dem Entwicklungscomputer installierte Azure CLI. Prüfen Sie Verfügbare Azure CLI-Erweiterungen auf die mindestens erforderliche Version für die connectedk8s-Erweiterung. Verwenden Sie az --version, um Ihre Version zu überprüfen. Bei Bedarf können Sie sie mithilfe von az upgrade aktualisieren. Weitere Informationen finden Sie unter Install the Azure CLI.
Die connectedk8s-Erweiterung für die Azure CLI. Verwenden Sie den folgenden Befehl, um die Erweiterung hinzuzufügen oder auf die neueste Version zu aktualisieren:
az extension add --upgrade --name connectedk8s
Eine Azure Ressourcengruppe. Pro Ressourcengruppe wird nur eine Azure IoT Einsatz Instanz unterstützt. Verwenden Sie zum Erstellen einer neuen Ressourcengruppe den Befehl az group create. Eine Liste der derzeit unterstützten Azure Regionen finden Sie unter Supported regions.
az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Um einen Azure Arc-fähigen OpenShift-Cluster vorzubereiten, benötigen Sie:
Ein Azure-Abonnement mit der Rolle Owner oder einer Kombination aus Contributor und Benutzerzugriffsadministrator. Sie können Ihre Zugriffsebene überprüfen, indem Sie zu Ihrem Abonnement navigieren, Access-Steuerelement (IAM) auf der linken Seite des Azure-Portals auswählen und dann Zugriff anzeigen auswählen. Wenn Sie nicht über ein Azure-Abonnement verfügen, sie kostenlos erstellen bevor Sie beginnen.
Die auf dem Entwicklungscomputer installierte Azure CLI. Prüfen Sie Verfügbare Azure CLI-Erweiterungen auf die mindestens erforderliche Version für die connectedk8s-Erweiterung. Verwenden Sie az --version, um Ihre Version zu überprüfen. Bei Bedarf können Sie sie mithilfe von az upgrade aktualisieren. Weitere Informationen finden Sie unter Install the Azure CLI.
Die connectedk8s-Erweiterung für die Azure CLI. Verwenden Sie den folgenden Befehl, um die Erweiterung hinzuzufügen oder auf die neueste Version zu aktualisieren:
az extension add --upgrade --name connectedk8s
Eine Azure Ressourcengruppe. Pro Ressourcengruppe wird nur eine Azure IoT Einsatz Instanz unterstützt. Verwenden Sie zum Erstellen einer neuen Ressourcengruppe den Befehl az group create. Eine Liste der derzeit unterstützten Azure Regionen finden Sie unter Supported regions.
az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Ein Red Hat OpenShift-Cluster, Version 4.20 oder neuer.
Die auf deinem Entwicklungsrechner installierte OpenShift-CLI (oc), die bei deinem Cluster mit einem Konto angemeldet ist, das über die Rolle cluster-admin verfügt. Das Gewähren von Sicherheitskontextbeschränkungen erfordert cluster-admin.
Hardware, die die Systemanforderungen erfüllt:
Die Azure CLI-Beispiele in diesem Artikel verwenden Umgebungsvariablen, so dass Sie jeden Wert einmal festlegen und die Befehle dann unverändert kopieren und einfügen können. Wenn Sie die Azure IoT Einsatz Codespaces-Umgebung aus dem Quickstart verwenden, sind diese Variablen bereits für Sie festgelegt und Sie können diesen Schritt überspringen. Ansonsten setze die folgenden Umgebungsvariablen in deiner Shell, bevor du die Befehle ausführst.
Die folgenden Skripte legen die am häufigsten verwendeten Umweltvariablen fest:
| Umgebungsvariable |
Description |
SUBSCRIPTION_ID |
Die ID des Abonnements, das Ihre Azure IoT Einsatz-Instanz enthält. |
RESOURCE_GROUP |
Der Name der Ressourcengruppe, die Ihre Azure IoT Einsatz-Instanz enthält. |
AIO_INSTANCE_NAME |
Der Name Ihrer Azure IoT Einsatz Instanz. Um deine Instanzen aufzulisten, führe az iot ops list -o table. |
CLUSTER_NAME |
Der Name des Azure Arc-fähigen Kubernetes-Clusters, der deine Instanz hostet. |
LOCATION |
Die Azure-Region zur Nutzung für neue Ressourcen, zum Beispiel eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
$SUBSCRIPTION_ID = "<subscription-id>"
$RESOURCE_GROUP = "<resource-group-name>"
$AIO_INSTANCE_NAME = "<instance-name>"
$CLUSTER_NAME = "<cluster-name>"
$LOCATION = "<region>"
Du musst nur die Variablen festlegen, die dieser Artikel verwendet. Dieser Artikel könnte zusätzliche Umgebungsvariablen für die von Ihnen gewählten Ressourcennamen verwenden. Der Artikel erklärt, wie man sie dort platziert, wo sie eingeführt werden.
Erstellen eines Clusters und Konfigurieren dieses Clusters als Arc-fähig
Dieser Abschnitt bietet Schritte zur Erstellung von Clustern in validierten Umgebungen auf Ubuntu, Windows, Azure Local, vSphere Kubernetes Service (VKS) und OpenShift.
So bereiten Sie einen K3s-Kubernetes-Cluster in Ubuntu vor
Erstellen Sie einen K3s-Cluster mit einem einzelnen Knoten oder mehreren Knoten. Beispiele finden Sie in der K3s-Schnellstartanleitung oder in den verwandten K3s-Projekten.
Überprüfe, ob K3s installiert ist kubectl. Wenn nicht, folgen Sie den Anweisungen, um kubectl unter Linux zu installieren.
kubectl version --client
Folgen Sie den Anweisungen, um Helm zu installieren.
Erstellen Sie eine K3s-Konfigurations-YAML-Datei in .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
Führen Sie den folgenden Befehl aus, um die Grenzwerte für Benutzerüberwachung/Instanzen zu erhöhen.
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
Um eine bessere Leistung zu erzielen, erhöhen Sie den Grenzwert für den Dateideskriptor:
echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Arc-Unterstützung für K3s-Cluster aktivieren
Verbinde deinen Cluster mit Azure Arc, damit du ihn remote verwalten kannst.
Melden Sie sich von einem Computer mit kubectl-Zugriff auf Ihren Cluster mit Ihrem Microsoft Entra-Benutzerkonto, das über die erforderlichen Rollen für das Azure-Abonnement verfügt, bei Azure CLI an.
az login
Falls Sie dabei eine Fehlermeldung mit dem Wortlaut Ihr Gerät muss verwaltet werden, um auf Ihre Ressource zuzugreifen erhalten, führen Sie az login erneut aus und stellen Sie sicher, dass Sie sich interaktiv mithilfe eines Browsers anmelden.
Nachdem Sie sich eingeloggt haben, zeigt die Azure CLI alle Ihre Abonnements an und zeigt Ihr Standard-Abonnement mit einem Sternchen *an. Um mit Ihrem Standardabonnement fortzufahren, wählen Sie Enter aus. Geben Sie andernfalls die Nummer des Azure Abonnements ein, das Sie verwenden möchten.
Registrieren Sie die erforderlichen Ressourcenanbieter in Ihrem Abonnement.
Hinweis
Du musst diesen Schritt pro Abo nur einmal ausführen. Für die Registrierung von Ressourcenanbietern benötigen Sie die Berechtigung, den Vorgang /register/action auszuführen, die in den Rollen „Mitwirkender des Abonnements“ und „Besitzer“ enthalten ist. Weitere Informationen finden Sie unter Azure Ressourcenanbieter und -typen.
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"
Verwenden Sie den Befehl az connectedk8s connect, um Ihren Kubernetes-Cluster zu aktivieren und als Teil Ihrer Azure Ressourcengruppe zu verwalten.
az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
Um ungeplante Updates für Azure Arc und die Systemerweiterungen von Arc zu verhindern, die Azure IoT Einsatz als Abhängigkeiten verwendet, deaktiviert dieser Befehl die automatische Aktualisierung.
Aktualisieren Sie stattdessen die Agents nach Bedarf manuell.
Rufen Sie die Aussteller-URL des Clusters ab.
az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
Speichern Sie die Ausgabe dieses Befehls, die sie in den nächsten Schritten verwenden soll.
Erstelle eine K3s-Konfigurationsdatei.
sudo nano /etc/rancher/k3s/config.yaml
Fügen Sie der Datei config.yaml den folgenden Inhalt hinzu, und ersetzen Sie den <SERVICE_ACCOUNT_ISSUER> Platzhalter durch die Aussteller-URL Ihres Clusters.
kube-apiserver-arg:
- service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
- service-account-max-token-expiration=24h
Speichern Sie die Datei, und beenden Sie den Nano-Editor.
Bereiten Sie sich darauf vor, den Azure Arc-Dienst, den benutzerdefinierten Standort, auf Ihrem Arc-Cluster zu aktivieren, indem Sie die benutzerdefinierte Standortobjekt-ID abrufen und als Umgebungsvariable speichern, OBJECT_ID. Sie müssen sich mit einem Microsoft Entra-Benutzerkonto und nicht mit einem Service Principal in der Azure CLI anmelden, um den Befehl erfolgreich auszuführen. Führen Sie den folgenden Befehl genau wie angegeben aus, ohne den GUID-Wert zu ändern.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Hinweis
Möglicherweise erhalten Sie die folgende Fehlermeldung: „OID der App 'custom-locations' kann nicht abgerufen werden. Der Vorgang wird ohne Aktivierung des Features fortgesetzt. Unzureichende Berechtigungen zum Abschließen des Vorgangs.“ In diesem Fall verfügt Ihr Dienstprinzipal nicht über die erforderlichen Berechtigungen zum Abrufen der Objekt-ID des benutzerdefinierten Speicherorts. Melden Sie sich mit einem Microsoft Entra-Benutzerkonto bei Azure CLI an, das die Voraussetzungen erfüllt. Weitere Informationen finden Sie unter Erstellen und Verwalten von benutzerdefinierten Speicherorten.
Verwenden Sie den Befehl az connectedk8s enable-features, um die Funktion für benutzerdefinierte Speicherorte für Ihren Arc-Cluster zu aktivieren. Dieser Befehl verwendet die im vorherigen Schritt gespeicherte Variable OBJECT_ID environment, um den Wert für den Parameter custom-locations-oid festzulegen. Führen Sie diesen Befehl auf dem Computer aus, auf dem Sie den Kubernetes-Cluster bereitgestellt haben:
az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
Starten Sie K3s neu.
systemctl restart k3s
Azure Kubernetes Service – Edge-Essentials ist eine lokale Kubernetes-Implementierung von Azure Kubernetes Service (AKS), die die Ausführung containerisierter Anwendungen im großen Maßstab automatisiert. AKS Edge Essentials umfasst eine von Microsoft unterstützte Kubernetes-Plattform, die eine leichte Kubernetes-Distribution mit kleinem Ressourcenbedarf und einfacher Installation bietet, die PC-Klasse oder "light"-Edge-Hardware unterstützt.
Das AksEdgeQuickStartForAio.ps1-Skript automatisiert das Erstellen und Verbinden eines Clusters und ist der empfohlene Weg für die Bereitstellung von Azure IoT Einsatz auf AKS Edge Essentials.
Anweisungen zum Ausführen des Skripts finden Sie unter Configure an AKS Edge Essentials cluster for Azure IoT Einsatz.
- Anweisungen zum Erstellen und Aktivieren eines AKS-Clusters auf Azure Local finden Sie unter Create Kubernetes cluster using Azure CLI.
- Anweisungen zum Bereitstellen eines AKS-Clusters auf Azure Local mit aktivierter Workloadidentität (Vorschau) für erhöhte Sicherheit finden Sie unter Deploy and configure workload identity on an AKS cluster. Du kannst die Workload-Identitätsfunktion nur während der Clustererstellung aktivieren. Das Ausführen von Azure IoT Einsatz mit sicheren Einstellungen erfordert die Workloadidentität.
Standardmäßig enthält ein Kubernetes-Cluster einen Node-Pool, der Linux-Container ausführen kann. Wenn du nach der Erstellung weitere Node-Pools hinzufügst, stelle sicher, dass du das Betriebssystem auf Linux einstellst. Azure IoT Einsatz unterstützt die Bereitstellung für Windows Knoten nicht.
Nachdem Sie einen Azure Arc-fähigen Kubernetes-Cluster haben, können Sie Azure IoT Einsatz bereitstellen.
Um einen VKS-Workload-Cluster vorzubereiten, benötigt man einen VKS-Workload-Cluster mit einem einzelnen oder mehreren Knoten.
Aktualisieren der Einstellungen für die Pod-Sicherheitssteuerung
Bevor Sie Azure IoT Einsatz bereitstellen, aktualisieren Sie die Pod Security Admission Einstellungen auf Ihrem VKS-Cluster. Durch das Anwenden dieser Datei werden Namespace-Labels vorab erstellt und die Pod-Sicherheit auf privileged gesetzt.
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/tanzu-config/psa.yaml
Aktivieren Sie Ihren VKS-Cluster für Arc
Verbinde deinen Cluster mit Azure Arc, damit du ihn remote verwalten kannst.
Auf dem Rechner, auf dem Sie den Kubernetes-Cluster bereitgestellt haben, melden Sie sich mit Ihrem Microsoft Entra-Benutzerkonto, das die erforderlichen Rollen für das Azure-Abonnement enthält, in die Azure CLI ein:
az login
Nachdem Sie sich eingeloggt haben, zeigt die Azure CLI alle Ihre Abonnements an und zeigt Ihr Standard-Abonnement mit einem Sternchen *an. Um mit Ihrem Standardabonnement fortzufahren, wählen Sie Enter aus. Geben Sie andernfalls die Nummer des Azure Abonnements ein, das Sie verwenden möchten.
Registrieren Sie die erforderlichen Ressourcenanbieter in Ihrem Abonnement.
Hinweis
Du musst diesen Schritt pro Abo nur einmal ausführen. Für die Registrierung von Ressourcenanbietern benötigen Sie die Berechtigung, den Vorgang /register/action auszuführen, die in den Rollen „Mitwirkender des Abonnements“ und „Besitzer“ enthalten ist. Weitere Informationen finden Sie unter Azure Ressourcenanbieter und -typen.
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"
Verwenden Sie den Befehl az connectedk8s connect, um Ihren Kubernetes-Cluster zu aktivieren und als Teil Ihrer Azure Ressourcengruppe zu verwalten.
az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
Um ungeplante Updates für Azure Arc und die Systemerweiterungen von Arc zu verhindern, die Azure IoT Einsatz als Abhängigkeiten verwendet, deaktiviert dieser Befehl die automatische Aktualisierung.
Aktualisieren Sie stattdessen die Agents nach Bedarf manuell.
Konfigurieren Sie die Workload-Identität in Ihrem VKS-Cluster. Für Anleitungen, siehe Bereitstellen und Konfigurieren der Workloadidentität in einem AKS-Cluster. Das Ausführen von Azure IoT Einsatz mit sicheren Einstellungen erfordert die Workloadidentität.
Bereiten Sie sich darauf vor, den Azure Arc-Dienst, den benutzerdefinierten Standort, auf Ihrem Arc-Cluster zu aktivieren, indem Sie die benutzerdefinierte Standortobjekt-ID abrufen und als Umgebungsvariable speichern, OBJECT_ID. Sie müssen sich mit einem Microsoft Entra-Benutzerkonto und nicht mit einem Service Principal in der Azure CLI anmelden, um den Befehl erfolgreich auszuführen. Führen Sie den folgenden Befehl genau wie angegeben aus, ohne den GUID-Wert zu ändern.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Hinweis
Möglicherweise erhalten Sie die folgende Fehlermeldung: „OID der App 'custom-locations' kann nicht abgerufen werden. Der Vorgang wird ohne Aktivierung des Features fortgesetzt. Unzureichende Berechtigungen zum Abschließen des Vorgangs.“ In diesem Fall verfügt Ihr Dienstprinzipal nicht über die erforderlichen Berechtigungen zum Abrufen der Objekt-ID des benutzerdefinierten Speicherorts. Melden Sie sich mit einem Microsoft Entra-Benutzerkonto bei Azure CLI an, das die Voraussetzungen erfüllt. Weitere Informationen finden Sie unter Erstellen und Verwalten von benutzerdefinierten Speicherorten.
Verwenden Sie den Befehl az connectedk8s enable-features, um die Funktion für benutzerdefinierte Speicherorte für Ihren Arc-Cluster zu aktivieren. Dieser Befehl verwendet die im vorherigen Schritt gespeicherte OBJECT_ID-Umgebungsvariable, um den Wert für den Parameter „custom-locations-oid“ festzulegen. Führen Sie diesen Befehl auf dem Computer aus, auf dem Sie den Kubernetes-Cluster bereitgestellt haben:
az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
Um einen OpenShift-Cluster vorzubereiten, benötigt man einen OpenShift-Cluster mit nur einem oder mehreren Knoten, Version 4.20 oder neuer.
OpenShift setzt Sicherheitskontextbeschränkungen (SCCs) durch, die die Rechte steuern, die Pods anfordern können. Standardmäßig weist OpenShift jedem Projekt einen UID-Bereich zu und lässt Pods unter dieser restricted-v2 Einschränkung zu. Einige Azure IoT Einsatz-Komponenten verlangen feste Benutzer-IDs außerhalb dieses Bereichs, sodass man vor der Bereitstellung zusätzliche Einschränkungen erteilt.
Gewähren Sie Sicherheitskontextbeschränkungen
Bevor Sie Azure IoT Einsatz bereitstellen, gewähren Sie die Sicherheitskontextbeschränkungen, die seine Komponenten erfordern. Der folgende Befehl zielt auf die Service-Konto-Gruppe für den Namensraum und gilt daher für jedes Service-Konto, das die Bereitstellung später erstellt. Du kannst es ausführen, bevor der Namespace existiert.
for scc in anyuid privileged hostnetwork-v2 hostaccess hostmount-anyuid nonroot-v2; do
oc adm policy add-scc-to-group $scc system:serviceaccounts:azure-iot-operations
done
Wenn Sie diesen Schritt überspringen, schlägt die Bereitstellung fehl und die betroffenen Arbeitslasten melden einen ähnlichen Zulassungsfehler wie folgt:
pods "aio-akri-operator-0" is forbidden: unable to validate against any security context
constraint: provider restricted-v2: .spec.securityContext.fsGroup: Invalid value:
[]int64{65532}: 65532 is not an allowed group
OpenShift-Cluster für Arc aktivieren
Verbinde deinen Cluster mit Azure Arc, damit du ihn remote verwalten kannst.
Registrieren Sie die erforderlichen Ressourcenanbieter in Ihrem Abonnement.
Hinweis
Du musst diesen Schritt pro Abo nur einmal ausführen. Für die Registrierung von Ressourcenanbietern benötigen Sie die Berechtigung, den Vorgang /register/action auszuführen, die in den Rollen „Mitwirkender des Abonnements“ und „Besitzer“ enthalten ist. Weitere Informationen finden Sie unter Azure Ressourcenanbieter und -typen.
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"
Verwenden Sie den Befehl az connectedk8s connect, um Ihren Kubernetes-Cluster mit Azure Arc zu aktivieren und als Teil Ihrer Azure-Ressourcengruppe zu verwalten.
az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
Um ungeplante Updates von Azure Arc und den Systemerweiterungen Azure Arc, die Azure IoT Einsatz als Abhängigkeiten verwendet, zu verhindern, deaktiviert dieser Befehl das automatische Upgrade.
Aktualisieren Sie stattdessen die Agents nach Bedarf manuell.
Die Azure Arc-Agenten erstellen die Sicherheitskontextbeschränkungen, die sie benötigen, sodass für diesen Schritt keine zusätzliche OpenShift-Konfiguration erforderlich ist.
Rufen Sie die Aussteller-URL des Clusters ab.
az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
Speichere die Ausgabe dieses Befehls, um sie im nächsten Schritt zu verwenden.
Konfigurieren Sie den Cluster so, dass er den Azure Arc-Herausgeber als Service-Konto-Herausgeber verwendet, wobei der <SERVICE_ACCOUNT_ISSUER> Platzhalter durch den Wert des vorherigen Schritts ersetzt wird. Das Ausführen von Azure IoT Einsatz mit sicheren Einstellungen erfordert die Workloadidentität.
oc patch authentication cluster --type=merge \
-p '{"spec":{"serviceAccountIssuer":"<SERVICE_ACCOUNT_ISSUER>"}}'
Die Änderung des Service-Konto-Ausstellers führt dazu, dass die kube-apiserver und authentication Cluster-Operatoren eine neue Version über die Kontrollebene hinweg ausrollen. Warte, bis beide fertig sind, bevor du weitermachst.
oc wait --for=condition=Progressing=False --timeout=30m clusteroperator/kube-apiserver
oc wait --for=condition=Progressing=False --timeout=30m clusteroperator/authentication
Bereiten Sie sich darauf vor, den Azure Arc Service, benutzerdefinierter Standort, auf Ihrem Azure Arc Cluster zu aktivieren, indem Sie die benutzerdefinierte Standortobjekt-ID erhalten und als Umgebungsvariable speichern, OBJECT_ID. Sie müssen sich mit einem Microsoft Entra-Benutzerkonto und nicht mit einem Service Principal in der Azure CLI anmelden, um den Befehl erfolgreich auszuführen. Führen Sie den folgenden Befehl genau wie angegeben aus, ohne den GUID-Wert zu ändern.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Hinweis
Möglicherweise erhalten Sie die folgende Fehlermeldung: „OID der App 'custom-locations' kann nicht abgerufen werden. Der Vorgang wird ohne Aktivierung des Features fortgesetzt. Unzureichende Berechtigungen zum Abschließen des Vorgangs.“ In diesem Fall verfügt Ihr Dienstprinzipal nicht über die erforderlichen Berechtigungen zum Abrufen der Objekt-ID des benutzerdefinierten Speicherorts. Melden Sie sich mit einem Microsoft Entra-Benutzerkonto bei Azure CLI an, das die Voraussetzungen erfüllt. Weitere Informationen finden Sie unter Erstellen und Verwalten von benutzerdefinierten Speicherorten.
Wichtig
Führe diese Suche aus, während du bei demselben Microsoft Entra-Tenant angemeldet bist, der deine Azure Arc-Ressourcen enthält. Die Objekt-ID der Custom Locations-Anwendung ist in jedem Tenant unterschiedlich. Die Verwendung einer Objekt-ID eines anderen Mandanten scheint erfolgreich zu sein, aber die Bereitstellung von Azure IoT Einsatz scheitert später mit "Microsoft.ExtendedLocation" resource provider does not have the required permissions to create a namespace on the cluster.
Verwenden Sie den az connectedk8s enable-features-Befehl, um die benutzerdefinierte Standortfunktion auf Ihrem Azure Arc-Cluster zu aktivieren. Dieser Befehl verwendet die OBJECT_ID im vorherigen Schritt gespeicherte Umgebungsvariable, um den Wert für den custom-locations-oid Parameter festzulegen.
az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
Für OpenShift erforderliche Bereitstellungsoptionen
Wenn Sie Azure IoT Einsatz in diesem Cluster bereitstellen, fügen Sie die folgenden Optionen hinzu.
Cert-Manager-Telemetrie deaktivieren:
az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cm-config global.telemetry.enabled=false
Die cert-manager-Erweiterung fügt ansonsten ein Diagnose-Sidecar hinzu, dessen Bild im Digest referenziert wird. Die von OpenShift verwendete CRI-O Container-Runtime kann kein Image abrufen, auf das mit einem Digest verwiesen wird, der in eine Manifestliste für mehrere Architekturen aufgelöst wird, weshalb der Sidecar mit ImagePullBackOff fehlschlägt und cert-manager nie fehlerfrei wird.
Deaktiviere den Connector-Sicherheitskontext:
az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name <instance-name> --sr-resource-id <schema-registry-id> --ns-resource-id <namespace-id> --ops-config connectors.values.setSecurityContext=false
Der Connector-Supervisor läuft andernfalls unter einer beliebigen, von OpenShift zugewiesenen UID und kann seine eigenen Anwendungsdateien nicht lesen, sodass das Helm-Release der Connectors in einen Timeout läuft und das Deployment zurückgerollt wird.
Hinweis
Diese Option sorgt dafür, dass die Connector-Pods unter der anyuid Sicherheitskontext-Einschränkung statt unter dem OpenShift-Standard laufen. Heute ist es erforderlich, weil das Connector-Image von einer beliebigen UID nicht lesbar ist. Alle anderen Azure IoT Einsatz-Pods laufen unter einer restriktiveren Einschränkung.
Features wie lokale Speicherendpunkte für den Datenfluss und der Medienconnector verwenden optional Azure Containerspeicher, der von Azure Arc (ACSA) aktiviert ist, um lokale Daten mit der Cloud zu synchronisieren. ACSA wird nicht als Teil von Azure IoT Einsatz installiert, daher musst du es separat installieren.
Um zu lernen, wie man ACSA auf Ihrem Kubernetes-Cluster installiert:
Nächste Schritte
Nachdem Sie nun über einen Azure Arc-aktivierten Kubernetes-Cluster verfügen, können Sie Azure IoT Einsatz bereitstellen.