我使用ServiceBusTrigger构建了一个.NET Core Azure函数。一旦适当的应用程序设置(例如Service Bus连接字符串)部署在常规App Service计划中,该功能就可以正常工作。
但是,我更愿意将该功能作为Azure Kubernetes Service(AKS)上的Docker容器托管。我有AKS设置并且有许多.NET Core Docker容器在那里运行良好,包括TimerTriggers上的一些Azure功能。
当我使用ServiceBusTrigger部署该函数时,它无法正确调整并且我得到“函数主机未运行”。当我访问功能IP地址。我相信这是因为找不到应用程序设置。
问题是我不知道在Docker / Kubernetes环境中托管时如何包含它们。我已经尝试在Docker文件中包含相应的ENV条目,但是在我从PowerShell成功运行func deploy
之后,我无法在通过Kubernetes仪表板查看的部署YAML中找到相应的值。
大多数Microsoft文档都解决了TimerTrigger和HttpTrigger的问题,但在使用Docker / Kubernetes时,我几乎找不到ServiceBusTrigger。
那么,如何在部署中包含适当的应用程序设置?
从这个博客:Playing with Azure Functions kubernetes integration,您可以找到有关添加环境变量的说明。
在deployment.yml中,添加env(如AzureWebJobsStorage
作为环境变量)。
containers:
- image: tsuyoshiushio/queuefunction-azurefunc
imagePullPolicy: Always
name: queuefunction-deployment
env:
- name: AzureWebJobsStorage
value: YOUR_STORAGE_ACCOUNT_CONNECTION_STRING_HERE
ports:
- containerPort: 80
protocol: TCP
然后应用它,它会工作。