Docker AzureFunctions AppInsights日志记录在Azure AKS中不起作用

Docker AzureFunctions AppInsights日志记录在Azure AKS中不起作用,docker,kubernetes,azure-functions,azure-application-insights,azure-aks,Docker,Kubernetes,Azure Functions,Azure Application Insights,Azure Aks,我已经使用Azure函数(使用适当DI的非静态函数)有一段时间了。我最近使用APPINSIGHTS\u INSTRUMENTATIONKEY添加了ApplicationInsights。在本地调试时,一切正常 如果我通过发布函数并使用以下dockerfile在docker上本地运行它,它也可以正常工作 来自mcr.microsoft.com/azure functions/dotnet:2.0-1 ENV azurewebjobscriptrout=/home/site/wwwroot 复制./

我已经使用Azure函数(使用适当DI的非静态函数)有一段时间了。我最近使用APPINSIGHTS\u INSTRUMENTATIONKEY添加了ApplicationInsights。在本地调试时,一切正常

如果我通过发布函数并使用以下dockerfile在docker上本地运行它,它也可以正常工作

来自mcr.microsoft.com/azure functions/dotnet:2.0-1
ENV azurewebjobscriptrout=/home/site/wwwroot
复制./publish//home/site/wwwroot
不过。如果我进一步尝试使用以下YAML文件将其部署到kubernetes(在我的例子中是Azure AKS)。该函数从显示Application insights参数加载的日志文件开始。但是,它不会记录到insights

部署。yaml


apiVersion: v1
kind: Secret
metadata:
  name: mytestfunction-secrets
  namespace: "testfunction"
type: Opaque
data:
  ApplicationInsights: YTljOTA4ZDgtMTkyZC00ODJjLTkwNmUtMTI2OTQ3OGZhYjZmCg==

---

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mytestfunction
  namespace: "testfunction"
  labels:
    app: mytestfunction
spec:
  replicas: 1
  template:
    metadata:
      namespace: "testfunction"
      labels:
        app: mytestfunction
    spec:
      containers:
      - image: mytestfunction:1.1
        name: mytestfunction
        ports:
         - containerPort: 5000
        imagePullPolicy: Always
        env:
        - name: AzureFunctionsJobHost__Logging__Console__IsEnabled
          value: 'true'
        - name: ASPNETCORE_ENVIRONMENT
          value: PRODUCTION
        - name: ASPNETCORE_URLS
          value: http://+:5000
        - name: WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT
          value: '5'
        - name: APPINSIGHTS_INSTRUMENTATIONKEY
          valueFrom:
            secretKeyRef:
              name: mytestfunction-secrets
              key: ApplicationInsights
      imagePullSecrets:
      - name: imagepullsecrets

不过。我确实改变了yaml,没有将密钥作为秘密存储,然后它就成功了

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mytestfunction
  namespace: "testfunction"
  labels:
    app: mytestfunction
spec:
  replicas: 1
  template:
    metadata:
      namespace: "testfunction"
      labels:
        app: mytestfunction
    spec:
      containers:
      - image: mytestfunction:1.1
        name: mytestfunction
        ports:
         - containerPort: 5000
        imagePullPolicy: Always
        env:
        - name: AzureFunctionsJobHost__Logging__Console__IsEnabled
          value: 'true'
        - name: ASPNETCORE_ENVIRONMENT
          value: PRODUCTION
        - name: ASPNETCORE_URLS
          value: http://+:5000
        - name: WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT
          value: '5'
        - name: APPINSIGHTS_INSTRUMENTATIONKEY
          value: a9c908d8-192d-482c-906e-1269478fab6f
      imagePullSecrets:
      - name: imagepullsecrets
我有点惊讶于符号之间的差异导致Azure函数无法登录到insights。我的印象是,正在运行的应用程序并不关心或知道值是来自kubernetes中的秘密还是常规符号。尽管instrumentationkey是否为机密可能存在争议,但我更愿意将其存储在那里。有人知道为什么会这样吗

#不工作
-名称:APPINSIGHTS\u INSTRUMENTATIONKEY
价值来源:
secretKeyRef:
名称:mytestfunction机密
关键字:应用程序说明
#工作
-名称:APPINSIGHTS\u INSTRUMENTATIONKEY
值:a9c908d8-192d-482c-906e-1269478fab6f
这些是我正在使用的版本

  • Azure功能核心工具(2.4.419)
  • 函数运行时版本:2.0.12332.0
  • Azure AKS:1.12.x

还有。出于共享目的,检测密钥是假的。不是真的。

你找到它不起作用的原因了吗?我有一个类似的问题。我没有解决方案,但也许你可以使用一个秘密的configmap来存储这个值。那你还有问题吗?