Docker AzureFunctions AppInsights日志记录在Azure AKS中不起作用
我已经使用Azure函数(使用适当DI的非静态函数)有一段时间了。我最近使用APPINSIGHTS\u INSTRUMENTATIONKEY添加了ApplicationInsights。在本地调试时,一切正常 如果我通过发布函数并使用以下dockerfile在docker上本地运行它,它也可以正常工作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 复制./
来自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来存储这个值。那你还有问题吗?