首页 > 解决方案 > 部署到 Kubernetes 时如何包含 Azure Function Secret?

问题描述

我使用 ServiceBusTrigger 构建了一个 .NET Core Azure 函数。一旦适当的应用程序设置(例如服务总线连接字符串)部署在常规应用服务计划中,该功能就可以正常工作。

但是,我更愿意将函数作为 Docker 容器托管在 Azure Kubernetes 服务 (AKS) 上。我有 AKS 设置,并且有许多 .NET Core Docker 容器在那里运行良好,包括 TimerTriggers 上的一些 Azure 函数。

当我使用 ServiceBusTrigger 部署该功能时,它无法正确调整并且我得到“功能主机未运行”。当我访问功能IP地址时。我相信这是因为找不到应用程序设置。

问题是我不知道在 Docker/Kubernetes 环境中托管时如何包含它们。func deploy我尝试在 Docker 文件中包含适当的 ENV 条目,但是在我从 PowerShell成功运行后,我无法在通过 Kubernetes 仪表板查看的部署 YAML 中找到相应的值。

大多数 Microsoft 文档都涉及 TimerTrigger 和 HttpTrigger 案例,但在使用 Docker/Kubernetes 时,我在 ServiceBusTrigger 上几乎找不到。

那么,如何在我的部署中包含适当的应用程序设置?

标签: dockerkubernetes.net-coreazure-functionsazure-aks

解决方案


来自这个博客:<a href="https://medium.com/@tsuyoshiushio/playing-with-azure-functions-kubernetes-integration-9048908bfc2a" rel="nofollow noreferrer">玩转 Azure Functions kubernetes 集成,你可以找到关于添加环境变量的描述。

在 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

然后应用它,它会起作用。


推荐阅读