Ведение журнала приложений AzureFunctions не работает в Azure AKS - PullRequest
0 голосов
/ 19 марта 2019

Я уже некоторое время использую функции Azure (не статичные с соответствующим DI). Недавно я добавил ApplicationInsights с помощью клавиши APPINSIGHTS_INSTRUMENTATIONKEY . При локальной отладке все работает нормально.

Если я запускаю его, публикуя функцию и используя следующий файл dockerfile для локального запуска на докере, он также работает нормально.

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

COPY ./publish/ /home/site/wwwroot

Тем не менее. Если я сделаю еще один шаг и попытаюсь развернуть его в kubernetes (в моем случае Azure AKS), используя следующие файлы YAML. Функция запускается нормально с файлами журналов, показывающими загрузку параметра Application insights. Тем не менее, это не входит в понимание.

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. Хотя это может быть спорным, является ли ключ инструментов секретным или нет, я бы предпочел хранить его там. У кого-нибудь есть идея, почему это может вызвать это?

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

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

Это версии, которые я использую

  • Основные инструменты функций Azure (2.4.419)
  • Версия времени выполнения функции: 2.0.12332.0
  • Azure AKS: 1.12.x

Также. Инструментальный ключ является поддельным для обмена. не фактический.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...