K8s 上的 IotEdge:创建选项以添加 Pod/部署注释例如 dapr

问题描述

我们正在 kubernetes 上使用 iotedge,我正在寻找一种方法dapr sidecars 添加到已部署的 iothub 模块中。

是否有任何其他自定义 createOptions 可用于绕过 iothub 抽象?

更具体地说:在 Pod/Deployment 清单中需要特殊的 dapr 注释,以便 Dapr Sidecar Injector 可以完成其工作。

  annotations:
    dapr.io/enabled: "true"
    dapr.io/app-id: "nodeapp"
    dapr.io/app-port: "3000"
    there would need to be some  

只是我发现的可能的 createOptions 的快速摘要

"createOptions": {
   "Env": [
      "storageFolder=/storage"
   ],"HostConfig": {
      "PortBindings": {
        "5671/tcp": [{
          "HostPort": "5671"
        }],"8883/tcp": [{
          "HostPort": "8883"
        }],"443/tcp": [{
          "HostPort": "443"
        }]
      }
    },"Labels": {
        "cqTargetPort": "80","cqTargetRoute": "machine-api","skipMiddleware": "false"
   }
   "k8s-experimental": {
     "volumes": [{
       "volume": {
         "name": "pvcvol","persistentVolumeClaim": {
           "claimName": "azurefile"
         }
       },"volumeMounts": [{
         "name": "pvcvol","mountPath": "/storage"
       }]
     }]
   }
}

iotedge on k8s

解决方法

createOptions.Labelstranslated into pod annotations。所以你可以把所需的 Dapr 注释作为模块的标签:

元数据

name = Name 将是模块名称,经过消毒后成为 K8s 标识符。 命名空间 = 给定的命名空间。标签 = 默认标签集。 annotations = pod 的元数据将有一个固定的注释: net.azure-devices.edge.original-moduleid = 来自未净化的模块 ID 边缘部署规范。然后 settings.createOptions.Labels 将 添加到 Pod 的注释中。

无法“选择退出”注入 iotedge 代理,但即使它与 Dapr 注入的 sidecar 共同存在,它也应该是良性的。我还没有测试过这个,所以如果它适合你,让我们看看吧!