Dela via


Förhandsversion av Azure IoT Orchestrator – leverantörer och komponenter

Viktigt!

Förhandsversion av Azure IoT Operations – aktiverad av Azure Arc finns för närvarande i FÖRHANDSVERSION. Du bör inte använda den här förhandsgranskningsprogramvaran i produktionsmiljöer.

Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.

Leverantörer är en utökningsmodell i Azure IoT Orchestrator Preview-tjänsten som gör att den kan stödja distributioner och konfiguration över en mängd olika operativsystemplattformar och distributionsmekanismer. Leverantörer ansvarar för att utföra de åtgärder som krävs för att uppnå önskat tillstånd för en resurs.

En leverantör kapslar in plattformsspecifik kunskap och implementerar en specifik funktion. Med andra ord bildar providern ett API-lager ovanpå de enskilda målresurserna, till exempel helm-diagram, ARC-tillägg osv., paketera dem i en enda entitet och utför åtgärder som installationer, borttagningar och uppdateringar på dem. En separat provider som hanterar var och en av dessa målresurser.

Helm

Helm-providern installerar Helm-diagram på målplatserna. Helm-providern använder Helm-diagramnamnet, lagringsplatsen, versionen och andra valfria värden för att installera och uppdatera diagrammen. Providern registrerar den nya klienten med Helm-API:et, letar upp den angivna lagringsplatsen och hämtar registret.

Om du behöver felsöka Helm-providern kan du läsa Felkoder för Helm-providern.

Helm-providerkonfiguration

De leverantörer som kan användas för ett mål definieras i målresursens topologiobjekt. När du definierar leverantörerna för ett mål kan du skicka konfigurationsinformation för providern.

Providerkonfigurationen finns i avsnittet topologier i ett målmanifest.

Konfigurationsparametrar beskrivning
name (Valfritt) Namn på konfigurationen.
configType (Valfritt) Typ av konfiguration. Till exempel: bytes
configData (Valfritt) All annan konfigurationsinformation.
inCluster Flagga som är inställd på true om resursen skapas i klustret där tillägget har installerats.

Till exempel:

{ 
  "role": "helm.v3", 
  "provider": "providers.target.helm",  
  "config": { 
    "inCluster": "true"
  } 
}

Helm-komponentparametrar

När du använder Helm-providern för att hantera en komponentresurs tar resursen följande parametrar i avsnittet komponenter i en lösning eller ett målmanifest:

Parameter Typ Beskrivning
name sträng Namnet på Helm-diagrammet.
type sträng Typ av komponent, till exempel helm.v3.
properties.chart objekt Information om Helm-diagram, inklusive Helm-lagringsplatsens namn, diagramnamn och diagramversion.
properties.values objekt (Valfritt) Anpassade värden för Helm-diagrammet.
properties.wait boolean (Valfritt) Om värdet är true väntar providern tills alla poddar, datorer, tjänster, distributioner, tillståndskänsliga uppsättningar eller repliker är i ett klart tillstånd innan komponenten skapas.

Följande lösningsfragment visar hur du installerar ett Helm-diagram med hjälp av Helm-providern:

{
  "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

Kubectl-providern tillämpar de anpassade resurserna på gränsklustren via YAML-data eller en URL. Providern använder Kubernetes API för att hämta resursdefinitionerna från en extern YAML-URL eller direkt från egenskaperna för lösningskomponenten. Kubernetes-API:et tillämpar sedan dessa anpassade resursdefinitioner på Arc-aktiverade kluster.

Om du behöver felsöka Kubectl-providern kan du läsa Felkoder för Kubectl-providern.

Konfiguration av Kubectl-provider

De leverantörer som kan användas för ett mål definieras i målresursens topologiobjekt. När du definierar leverantörerna för ett mål kan du skicka konfigurationsinformation för providern.

Providerkonfigurationen finns i avsnittet topologier i ett målmanifest.

Konfigurationsparametrar beskrivning
name (Valfritt) Namn på konfigurationen.
configType (Valfritt) Typ av konfiguration. Ange till path om resursdefinitionen eller informationen kommer från en extern URL. Ange till inline om resursdefinitionen eller informationen anges i avsnittet komponenter.
configData (Valfritt) All annan konfigurationsinformation.
inCluster Flagga som är inställd på true om resursen skapas i klustret där tillägget har installerats.

Till exempel:

{ 
  "role": "yaml.k8s", 
  "provider": "providers.target.kubectl",  
  "config": { 
    "inCluster": "true"
  } 
}

Kubectl-komponentparametrar

När du använder Kubectl-providern för att hantera en komponentresurs tar resursen följande parametrar i avsnittet komponenter i en lösning eller ett målmanifest:

Parameter Typ Beskrivning
name sträng Namn på resursen.
type sträng Typ av komponent, till exempel yaml.k8s.
egenskaper Definition av resursen, som anges som antingen en yaml eller resource parameter.
properties.yaml sträng Extern URL till YAML-definitionen för resursen. Stöds endast om parametern resourceinte används.
properties.resource objekt Infogad definition av resursen. Stöds endast om parametern yamlinte används.
properties.statusProbe objekt (Valfritt) Infogad definition av funktionen för resursstatusavsökning . Stöds endast om parametern resourceanvänds .

Följande lösningsfragment visar hur du använder en anpassad resurs med hjälp av en extern URL. För den här metoden anger du providerns konfigurationstyp till sökväg.

{
  "components": [
    {
      "name": "gatekeeper",
      "type": "kubectl",
      "properties": {
        "yaml": "https://raw.githubusercontent.com/open-policy-agent/gatekeeper/master/deploy/gatekeeper.yaml"
      }
    }
  ]
}

Följande lösningsfragment visar hur du tillämpar en anpassad resurs med egenskaper som tillhandahålls infogade. För den här metoden anger du providerns konfigurationstyp till infogad.

{
  "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": []
    }
  ]
}

Resursstatusavsökning

Kubectl-providern har också funktioner för att kontrollera status för en komponent. Med den här resursstatusavsökningen kan du definiera hur de anpassade resurserna ska skapas och distribueras. Den kan också verifiera resursens status med hjälp av statusavsökningsegenskapen.

Den här funktionen är tillgänglig när Kubectl-providerns konfigurationstyp är infogad. Statusavsökningsegenskapen definieras som en del av komponentegenskapen, tillsammans med properties.resource.

Parametern Properties.statusProbe Typ Beskrivning
succeededValues Lista[sträng] Lista över statusar som definierar en resurs som har tillämpats.
failedValues Lista[sträng] Lista över statusar som definierar en resurs som inte har tillämpats.
statusPath sträng Sökväg för att söka efter resursens status.
errorMessagePath sträng Sökväg för att söka efter resursfelmeddelandet.
timeout sträng Tid i sekunder eller minuter efter vilken statussökningen för resursen avslutas.
interval sträng Tidsintervall i sekunder eller minuter mellan två på varandra följande statusavsökningar.
initialWait sträng Tid i sekunder eller minuter innan den första statusavsökningen initieras.

Följande lösning snipped visar hur du tillämpar en anpassad resurs med en statusavsökning.

{
  "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"
        }
      }
    }
  }
}