你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure IoT Orchestrator 预览版 - 提供程序和组件

重要

Azure IoT 操作预览版(由 Azure Arc 启用)当前处于预览状态。 不应在生产环境中使用此预览版软件。

有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

提供程序是 Azure IoT Orchestrator 预览版服务中的扩展性模型,允许它在各种 OS 平台和部署机制中支持部署和配置。 提供程序负责执行实现资源所需状态所需的操作。

提供程序封装平台特定的知识并实现特定功能。 换句话说,提供程序在单个目标资源(如 helm chart、ARC 扩展等)的基础上形成 API 层,将它们捆绑到单个实体中,并对其执行安装、删除和更新等操作。 用于处理每个目标资源的单独提供程序。

Helm

Helm 提供程序在目标位置上安装 Helm chart。 Helm 提供程序使用 Helm chart 名称、存储库、版本和其他可选值来安装和更新 chart。 提供程序使用 Helm API 注册新客户端,查找指定的存储库,并拉取注册表。

如果需要对 Helm 提供程序进行故障排除,请参阅 Helm 提供程序错误代码

Helm 提供程序配置

可用于目标的提供程序在目标资源的“拓扑”对象中定义。 定义目标的提供程序时,可以传递提供程序的配置详细信息。

提供程序配置位于目标清单topologies 部分。

配置参数 说明
name (可选)配置的名称。
configType (可选)配置的类型。 例如: bytes
configData (可选)任何其他配置详细信息。
inCluster 如果在安装了扩展的群集中创建资源,则设置为 true 的标志。

例如:

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

Helm 组件参数

使用 Helm 提供程序管理组件资源时,资源在解决方案或目标清单components 部分中采用以下参数:

参数 类型 说明
name string Helm chart 的名称。
type string 组件的类型,例如 helm.v3
properties.chart object Helm chart 详细信息,包括 Helm 存储库名称、chart 名称和 chart 版本。
properties.values object (可选)Helm chart 的自定义值。
properties.wait boolean (可选)如果设置为 true,提供程序将等到所有 Pod、PVC、服务、部署、StatefulSet 或 ReplicaSet 处于就绪状态,然后再考虑组件创建成功。

以下解决方案片段演示如何使用 Helm 提供程序安装 Helm chart:

{
  "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 提供程序通过 YAML 数据或 URL 在边缘群集上应用自定义资源。 提供程序使用 Kubernetes API 从外部 YAML URL 或直接从解决方案组件属性获取资源定义。 然后,Kubernetes API 在已启用 Arc 的群集上应用这些自定义资源定义。

如果需要对 Kubectl 提供程序进行故障排除,请参阅 Kubectl 提供程序错误代码

Kubectl 提供程序配置

可用于目标的提供程序在目标资源的“拓扑”对象中定义。 定义目标的提供程序时,可以传递提供程序的配置详细信息。

提供程序配置位于目标清单topologies 部分。

配置参数 说明
name (可选)配置的名称。
configType (可选)配置的类型。 如果资源定义或详细信息来自外部 URL,则设置为 path。 如果 components 部分指定了资源定义或详细信息,则设置为 inline
configData (可选)任何其他配置详细信息。
inCluster 如果在安装了扩展的群集中创建资源,则设置为 true 的标志。

例如:

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

Kubectl 组件参数

使用 Kubectl 提供程序管理组件资源时,资源在解决方案或目标清单components 部分中采用以下参数:

参数 类型 说明
name string 资源的名称。
type string 组件的类型,例如 yaml.k8s
properties 资源的定义,作为 yamlresource 参数提供。
properties.yaml string 资源的 YAML 定义的外部 URL。 仅当使用 resource 参数时才受支持。
properties.resource object 资源的内联定义。 仅当使用 yaml 参数时才受支持。
properties.statusProbe object (可选)资源状态探测功能的内联定义。 仅当使用 resource 参数时才受支持。

以下解决方案片段演示如何使用外部 URL 应用自定义资源。 对于此方法,请将提供程序的配置类型设置为 path

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

以下解决方案代码片段演示如何使用内联提供的属性应用自定义资源。 对于此方法,请将提供程序的配置类型设置为 inline

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

资源状态探测

Kubectl 提供程序还具有检查组件状态的功能。 通过此资源状态探测,可以定义成功创建和部署自定义资源的情况。 它还可以使用状态探测属性验证资源的状态。

当 Kubectl 提供程序的配置类型为 inline 时,此功能可用。 状态探测属性与 properties.resource 一起定义为组件属性的一部分。

Properties.statusProbe 参数 类型 描述
succeededValues List[string] 定义已成功应用的资源的状态列表。
failedValues List[string] 定义未成功应用的资源的状态列表。
statusPath string 用于检查资源状态的路径。
errorMessagePath string 用于检查资源错误消息的路径。
timeout string 资源状态探测结束的时间(以秒或分钟为单位)。
interval string 两个连续状态探测之间的时间间隔(以秒或分钟为单位)。
initialWait string 初始化第一个状态探测之前的时间(以秒或分钟为单位)。

以下解决方案片段演示如何使用状态探测应用自定义资源。

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