问题描述
我们正在 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"
}]
}]
}
}
解决方法
createOptions.Labels
是 translated into pod annotations。所以你可以把所需的 Dapr 注释作为模块的标签:
元数据
name = Name 将是模块名称,经过消毒后成为 K8s 标识符。 命名空间 = 给定的命名空间。标签 = 默认标签集。 annotations = pod 的元数据将有一个固定的注释: net.azure-devices.edge.original-moduleid = 来自未净化的模块 ID 边缘部署规范。然后 settings.createOptions.Labels 将 添加到 Pod 的注释中。
无法“选择退出”注入 iotedge 代理,但即使它与 Dapr 注入的 sidecar 共同存在,它也应该是良性的。我还没有测试过这个,所以如果它适合你,让我们看看吧!