【Azure Container App】配置容器应用的缩放规则 Managed Identity 连接中国区 Azure Service Bus 问题

问题描述

为Azure Container App配置自动缩放规则,使用自定义 Azure Service Bus作为缩放规则的数据源。当消息总数每增长100,就增加一个Replica。相反,则减少一个Replica。


image.png

而中国区的Container App在配置使用管理标识(Managed Identity)进行认证时候,会出现如下错误:

ERROR:invalid metrics (1 invalid out of 5), first error is: failed to get ********-queue external metric value: ``failed to get``********-queue``external metric

unable to fetch metrics from external metrics api: rpc error: code = unknown desc = error

*dial tcp: lookup ********-queue.servicebus.windows.net on xxxxxxxx : no such host"*

问题解答

根据错误信息,它的原因就是配置Managed Identity时候没有指定Azure 环境,所以默认把Service Bus资源连接到Global Azure,所以报错无法解析域名:lookup ********-queue.servicebus.windows.net on xxxxxxxx : no such host 。

为解决此问题,需在 Azure Container Apps 的扩展规则中添加 cloud 参数,指定为 AzureChinaCloud

这是 KEDA(Kubernetes-based Event Driven Autoscaling)在中国 Azure 环境下的必要配置。


image.png

只需要在配置中添加 "cloud=AzureChinaCloud" 就可解决问题。

完成的配置命令如下:

 # 使用used identity 

  az containerapp create --resource-group <resource group name> --name <container app name> --environment <container app environment name> 
--user-assigned 'user managed identity resource id' 
--scale-rule-name azure-servicebus-test1 
--scale-rule-type azure-servicebus 
--scale-rule-metadata "namespace=sb-store-demo-12622" "queueName=orders" "messageCount=100" "cloud=AzureChinaCloud" "endpointSuffix=servicebus.chinacloudapi.cn" 
--scale-rule-identity 'user managed identity resource id' 

# 使用连接字符串 connection string 

az containerapp create --resource-group <resource group name> --name <container app name> --environment <container app environment name>  
--scale-rule-name azure-servicebus-test1   
--scale-rule-type azure-servicebus 
--scale-rule-metadata "namespace=sb-store-demo-12622" "queueName=orders" "messageCount=100" 
--secrets "service bus connection string value" 
--scale-rule-auth "connection=connection-string-secret"

参考资料

在 Azure 容器应用中设置缩放规则:https://docs.azure.cn/zh-cn/container-apps/scale-app?pivots=azure-cli#custom

KEDA Azure Service Bus: https://keda.sh/docs/2.17/scalers/azure-service-bus/

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容