Azure IoT Orchestrator Preview: Anbieter und Komponenten
Wichtig
Die von Azure Arc aktivierte Azure IoT Operations Preview befindet sich derzeit in der VORSCHAU. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.
Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.
Anbieter sind ein Erweiterbarkeitsmodell im Azure IoT Orchestrator Preview-Dienst, das es ermöglicht, Bereitstellungen und Konfigurationen über eine Vielzahl von Betriebssystemplattformen und Bereitstellungsmechanismen hinweg zu unterstützen. Anbieter sind für das Ausführen der erforderlichen Aktionen verantwortlich, um den gewünschten Zustand einer Ressource zu erreichen.
Ein Anbieter kapselt plattformspezifische Kenntnisse und implementiert eine bestimmte Funktion. Anders ausgedrückt bildet der Anbieter eine API-Ebene über den einzelnen Zielressourcen wie Helm-Charts, ARC-Erweiterungen usw., bündelt sie in eine einzelne Entität und führt Vorgänge wie Installationen, Löschungen und Updates für sie aus. Ein separater Anbieter, der jede dieser Zielressourcen behandelt.
Helm
Der Helm-Anbieter installiert Helm-Charts in den Zielspeicherorten. Der Helm-Anbieter verwendet den Namen, das Repository, die Version und andere optionale Werte, um die Charts zu installieren und zu aktualisieren. Der Anbieter registriert den neuen Client mit der Helm-API, sucht das angegebene Repository und ruft die Registrierung ab.
Wenn Sie Probleme mit dem Helm-Anbieter beheben müssen, lesen Sie Fehlercodes von Helm-Anbietern.
Konfiguration des Helm-Anbieters
Die Anbieter, die für ein Ziel verwendet werden können, werden im „Topologie“-Objekt der Zielressource definiert. Wenn Sie die Anbieter für ein Ziel definieren, können Sie Konfigurationsdetails für den Anbieter übergeben.
Die Anbieterkonfiguration befindet sich im Abschnitt Topologien eines Zielmanifests.
Config parameters | Beschreibung |
---|---|
name | (Optional) Name der Konfiguration |
ConfigType | (Optional) Typ der Konfiguration Beispiel: bytes |
configData | (Optional) Alle sonstigen Konfigurationsdetails |
inCluster | Ein Flag, das auf true festgelegt ist, wenn die Ressource im Cluster erstellt wird, in dem die Erweiterung installiert wurde. |
Beispiel:
{
"role": "helm.v3",
"provider": "providers.target.helm",
"config": {
"inCluster": "true"
}
}
Helm-Komponentenparameter
Wenn Sie den Helm-Anbieter zum Verwalten einer Komponentenressource verwenden, übernimmt die Ressource die folgenden Parameter im Abschnitt Komponenten einer Lösung oder eines Zielmanifests:
Parameter | Typ | BESCHREIBUNG |
---|---|---|
name | Zeichenfolge | Name des Helm-Charts |
Typ | Zeichenfolge | Typ der Komponente, z. B. helm.v3 . |
properties.chart | Objekt | Details zum Helm-Chart, einschließlich des Namens des Helm-Repositorys, des Chartnamens und der Chartversion. |
properties.values | Objekt | (Optional) Benutzerdefinierte Werte für das Helm-Chart |
properties.wait | boolean | (Optional) Wenn dieser Wert auf „Wahr“ festgelegt ist, wartet der Anbieter, bis alle Pods, PVCs, Dienste, Bereitstellungen, StatefulSets oder ReplicaSets im Zustand „Bereit“ sind, bevor die Komponentenerstellung als erfolgreich gewertet wird. |
Der folgende Codeschnipsel veranschaulicht eine Lösung für die Installation eines Helm-Charts mithilfe des Helm-Anbieters:
{
"components": [
{
"name": "simple-chart",
"type": "helm.v3",
"properties": {
"chart": {
"repo": "oci://azureiotoperations.azurecr.io/simple-chart",
"name": "simple-chart",
"version": "0.1.0"
},
"values": {
"e4iNamespace": "default",
"mqttBroker": {
"name": "aio-mq-dmqtt-frontend",
"namespace": "default",
"authenticationMethod": "serviceAccountToken"
},
"opcUaConnector": {
"settings": {
"discoveryUrl": "opc.tcp://opcplc-000000:50000",
"authenticationMode": "Anonymous",
"autoAcceptUnrustedCertificates": "true"
}
}
}
},
"dependencies": []
}
]
}
Kubectl
Der kubectl-Anbieter wendet die benutzerdefinierten Ressourcen über YAML-Daten oder eine URL auf den Edgeclustern an. Der Anbieter verwendet die Kubernetes-API, um die Ressourcendefinitionen aus einer externen YAML-URL oder direkt aus den Eigenschaften der Lösungskomponente abzurufen. Die Kubernetes-API wendet dann diese benutzerdefinierten Ressourcendefinitionen auf die Arc-fähigen Cluster an.
Wenn Sie Probleme mit dem kubectl-Anbieter beheben müssen, lesen Sie Fehlercodes von kubectl-Anbietern.
Konfiguration des kubectl-Anbieters
Die Anbieter, die für ein Ziel verwendet werden können, werden im „Topologie“-Objekt der Zielressource definiert. Wenn Sie die Anbieter für ein Ziel definieren, können Sie Konfigurationsdetails für den Anbieter übergeben.
Die Anbieterkonfiguration befindet sich im Abschnitt Topologien eines Zielmanifests.
Config parameters | Beschreibung |
---|---|
name | (Optional) Name der Konfiguration |
ConfigType | (Optional) Typ der Konfiguration Legen Sie diesen Wert auf path fest, wenn die Ressourcendefinition oder -details von einer externen URL stammen. Legen Sie diesen Wert auf inline fest, wenn die Ressourcendefinition oder -details im Abschnitt „Komponenten“ angegeben sind. |
configData | (Optional) Alle sonstigen Konfigurationsdetails |
inCluster | Ein Flag, das auf true festgelegt ist, wenn die Ressource im Cluster erstellt wird, in dem die Erweiterung installiert wurde. |
Beispiel:
{
"role": "yaml.k8s",
"provider": "providers.target.kubectl",
"config": {
"inCluster": "true"
}
}
kubectl-Komponentenparameter
Wenn Sie den kubectl-Anbieter zum Verwalten einer Komponentenressource verwenden, übernimmt die Ressource die folgenden Parameter im Abschnitt Komponenten einer Lösung oder eines Zielmanifests:
Parameter | Typ | BESCHREIBUNG |
---|---|---|
name | Zeichenfolge | Der Name der Ressource. |
Typ | Zeichenfolge | Typ der Komponente, z. B. yaml.k8s . |
properties | Definition der Ressource, die entweder als yaml - oder als resource -Parameter bereitgestellt wird. |
|
properties.yaml | Zeichenfolge | Externe URL zur YAML-Definition der Ressource. Wird nur unterstützt, wenn der resource -Parameter nicht verwendet wird. |
properties.resource | Objekt | Inlinedefinition der Ressource Wird nur unterstützt, wenn der yaml -Parameter nicht verwendet wird. |
properties.statusProbe | Objekt | (Optional) Inlinedefinition der Ressourcenstatustest-Funktionalität. Wird nur unterstützt, wenn der resource -Parameter verwendet wird. |
Der folgende Codeschnipsel veranschaulicht eine Lösung für das Anwenden einer benutzerdefinierten Ressource mithilfe einer externen URL. Legen Sie für diese Methode den Konfigurationstyp des Anbieters auf path fest.
{
"components": [
{
"name": "gatekeeper",
"type": "kubectl",
"properties": {
"yaml": "https://raw.githubusercontent.com/open-policy-agent/gatekeeper/master/deploy/gatekeeper.yaml"
}
}
]
}
Der folgende Codeschnipsel veranschaulicht eine Lösung für das Anwenden einer benutzerdefinierten Ressource mithilfe inline bereitgestellter Eigenschaften. Legen Sie für diese Methode den Konfigurationstyp des Anbieters auf inline fest.
{
"components": [
{
"name": "my-asset",
"type": "kubectl",
"properties": {
"resource": {
"apiVersion": "apiextensions.k8s.io/v1",
"kind": "CustomResourceDefinition",
"metadata": {
"annotations": "controller-gen.kubebuilder.io/version: v0.10.0",
"labels": {
"gatekeeper.sh/system": "yes"
},
"Name": "assign.mutations.gatekeeper.sh"
},
"spec": {...}
}
},
"dependencies": []
}
]
}
Ressourcenstatustest
Der kubectl-Anbieter verfügt auch über die Funktionalität zum Überprüfen des Status einer Komponente. Mithilfe dieses Ressourcenstatustests können Sie definieren, was unter einer erfolgreichen Erstellung und Bereitstellung benutzerdefinierter Ressourcen verstanden wird. Er kann auch den Status der Ressource mithilfe der Statustest-Eigenschaft überprüfen.
Diese Funktionalität ist verfügbar, wenn der Konfigurationstyp des kubectl-Anbieters inlineist. Die Statustest-Eigenschaft wird zusammen mit properties.resource
als Teil der Komponenteneigenschaft definiert.
Properties.statusProbe parameter | type | Beschreibung |
---|---|---|
succeededValues | List[string] | Liste der Status, die eine erfolgreich angewendete Ressource definieren |
failedValues | List[string] | Liste der Status, die eine nicht erfolgreich angewendete Ressource definieren |
statusPath | Zeichenfolge | Pfad zum Überprüfen des Status der Ressource |
errorMessagePath | Zeichenfolge | Pfad zum Überprüfen der Ressourcenfehlermeldung |
timeout | Zeichenfolge | Die Zeit in Sekunden oder Minuten, nach dem der Statustest für die Ressource beendet wird. |
interval | Zeichenfolge | Das Zeitintervall in Sekunden oder Minuten zwischen zwei aufeinander folgenden Statustests. |
initialWait | Zeichenfolge | Die Zeit in Sekunden oder Minuten vor dem Initialisieren des ersten Statustests. |
Der folgende Codeschnipsel veranschaulicht eine Lösung für das Anwenden einer benutzerdefinierten Ressource mithilfe eines Statustests.
{
"solution": {
"components": {
"name": "gatekeeper-cr",
"type": "yaml.k8s",
"properties": {
"resource": {
"apiVersion": "apiextensions.k8s.io/v1",
"kind": "CustomResourceDefinition",
"metadata": {
"annotations": "controller-gen.kubebuilder.io/version: v0.10.0",
"labels": {
"gatekeeper.sh/system": "yes"
},
"name": "assign.mutations.gatekeeper.sh"
},
"spec": {...}
},
"statusProbe": {
"succeededValues": [
"true",
"active"
],
"failedValues": [
"false",
"fail"
],
"statusPath": "$.status.conditions.status",
"errorMessagePath": "$.status.conditions.message",
"timeout": "5m",
"interval": "2s",
"initialWait": "10s"
}
}
}
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für