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

时间:2019-03-19 19:59:56

标签: docker kubernetes azure-functions azure-application-insights azure-aks

我一直在使用Azure函数(具有适当DI的非静态函数)已有很短的时间了。我最近通过使用 APPINSIGHTS_INSTRUMENTATIONKEY 键添加了ApplicationInsights。在本地调试时,一切正常。

如果我通过发布功能并使用以下dockerfile在docker本地运行它来运行它,那么它也可以正常运行。

FROM mcr.microsoft.com/azure-functions/dotnet:2.0-alpine
ENV AzureWebJobsScriptRoot=/home/site/wwwroot

COPY ./publish/ /home/site/wwwroot

但是。如果我更进一步,并尝试使用以下YAML文件将其部署到kubernetes(在我的情况下为Azure AKS)。该功能从显示应用程序洞察参数加载的日志文件开始就可以正常运行。但是,它不会记录到见解。

deployment.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功能无法记录到见解的事实,我感到惊讶。我的印象是,正在运行的应用程序不在乎或不知道该值是来自kubernetes中的秘密符号还是常规符号。即使Instrumentationkey是否是一个秘密也值得商,,但我还是希望将其存储在此处。有谁知道为什么会导致这种情况?

        # Not working
        - name: APPINSIGHTS_INSTRUMENTATIONKEY
          valueFrom:
            secretKeyRef:
              name: mytestfunction-secrets
              key: ApplicationInsights

        # Working
        - name: APPINSIGHTS_INSTRUMENTATIONKEY
          value: a9c908d8-192d-482c-906e-1269478fab6f

这些是我正在使用的版本

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

也。 Instrumentation密钥是用于共享目的的伪造密钥。不是实际的。

0 个答案:

没有答案