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

配置 OPC PLC 模拟器以便与 OPC UA 连接器配合使用

重要

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

在正式发布版本推出时,你需要部署新的 Azure IoT 操作安装;无法升级预览版安装。

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

本文介绍如何配置和连接 OPC PLC 模拟器。 模拟器模拟一个使用具有多个节点的 OPC-UA 服务器,这些节点生成随机数据和异常。 可以配置用户定义的节点。 借助 OPC UA 模拟器,可以使用操作体验 Web UI 或 Akri 服务测试管理 OPC UA 资产的过程。

先决条件

Azure IoT 操作预览版的已部署实例。 若要部署 Azure IoT 操作以进行演示和探索,请参阅快速入门:在 Github Codespaces 中使用 K3s 运行 Azure IoT 操作预览版。 如果按所述步骤部署 Azure IoT 操作,则安装中包括 OPC PLC 模拟器。

部署 OPC PLC 模拟器

本部分介绍在首次部署 Azure IoT 操作时未进行部署时,如何部署 OPC PLC 模拟器。

以下步骤降低了 OPC PLC 的安全级别,以便它接受来自 OPC UA 连接器或任何客户端的连接,而无需显式的对等证书信任操作。

重要

请勿在生产环境中使用以下示例,仅将其用于模拟和测试目的。

运行以下代码以更新 OPC UA 连接器部署并应用新设置:

az k8s-extension update \
    --version 0.3.0-preview \
    --name opc-ua-broker \
    --release-train preview \
    --cluster-name <cluster-name> \
    --resource-group <azure-resource-group> \
    --cluster-type connectedClusters \
    --auto-upgrade-minor-version false \
    --config opcPlcSimulation.deploy=true \
    --config opcPlcSimulation.autoAcceptUntrustedCertificates=true

OPC PLC 模拟器在 azure-iot-operations 命名空间中作为单独的 Pod 运行。 Pod 名称如下所示:opcplc-000000-7b6447f99c-mqwdq

配置 OPC UA 连接器和 OPC PLC 之间的互信

若要了解 OPC UA 互信的详细信息,请参阅适用于 OPC UA 连接器的 OPC UA 证书基础结构

OPC PLC 模拟器的应用实例证书是由 cert-manager 管理的自签名证书,存储在 aio-opc-ua-opcplc-default-application-cert-000000 kubernetes 机密中。

要配置 OPC UA 连接器和 OPC PLC 模拟器之间的互信,请执行以下操作:

  1. 获取证书并将其推送到 Azure Key Vault:

    kubectl -n azure-iot-operations get secret aio-opc-ua-opcplc-default-application-cert-000000 -o jsonpath='{.data.tls\.crt}' | \
    base64 -d | \
    xargs -0 -I {} \
    az keyvault secret set \
        --name "opcplc-crt" \
        --vault-name <your-azure-key-vault-name> \
        --value {} \
        --content-type application/x-pem-file
    
  2. 将证书添加到群集中的 aio-opc-ua-broker-trust-list 自定义资源。 使用 Kubernetes 客户端(例如 kubectl)在群集中的 SecretProviderClass 对象数组中配置 opcplc.crt 机密。

    以下示例演示了一个完整的 SecretProviderClass 自定义资源,其中包含扩展名为 .crt 的 PEM 编码文件中模拟器证书:

    apiVersion: secrets-store.csi.x-k8s.io/v1
    kind: SecretProviderClass
    metadata:
      name: aio-opc-ua-broker-trust-list
      namespace: azure-iot-operations
    spec:
      provider: azure
      parameters:
        usePodIdentity: 'false'
        keyvaultName: <your-azure-key-vault-name>
        tenantId: <your-azure-tenant-id>
        objects: |
          array:
            - |
              objectName: opcplc-crt
              objectType: secret
              objectAlias: opcplc.crt
    

    注意

    将 Azure Key Vault 证书投影到群集所需的时间取决于配置的轮询间隔。

现已建立 OPC UA 连接器与 OPC PLC 模拟器的信任关系,可以创建一个连接到 OPC PLC 模拟器的 AssetEndpointProfile

(可选)在不建立互信的情况下配置 AssetEndpointProfile

除上述方法之外,也可以选择在 OPC UA 连接器和 OPC PLC 模拟器之间配置资产终结点配置文件,而无需建立互信。 如果了解这些风险,可以出于测试目的关闭身份验证。

注意

请勿在生产或预生产环境中配置身份验证。 在不进行身份验证的情况下将群集暴露在 Internet 中,可能会导致未经授权的访问,甚至导致 DDOS 攻击。

若要允许资产终结点配置文件连接到任何 OPC PLC 服务器而不建立互信,请使用 additionalConfiguration 设置修改 OPC UA 的 AssetEndpointProfile

使用 autoAcceptUntrustedServerCertificates=true 修补资产终结点:

ENDPOINT_NAME=<name-of-you-endpoint-here>
kubectl patch AssetEndpointProfile $ENDPOINT_NAME \
-n azure-iot-operations \
--type=merge \
-p '{"spec":{"additionalConfiguration":"{\"applicationName\":\"'"$ENDPOINT_NAME"'\",\"security\":{\"autoAcceptUntrustedServerCertificates\":true}}"}}'