我正在尝试使用 helm 定义一些变量(包括已在 GCP 中定义的机密)并在 appsettings.json 文件中使用它们。没有人能渡过难关。我的舵图定义了变量,如下所示。一些“秘密”来自掌舵图表,一些来自 GCP 秘密):
- name: ASPNETCORE_ENVIRONMENT
value: qa-k8
- name: auth__apiScopeSecret
value: foo
- name: discovery__uri
value: bar
envFrom:
- secretRef:
name: blah-secrets
gcpSecrets:
enabled: true
secretsFrom:
- blah-secrets
我的 appsettings.json 文件是按照以下示例配置的。当我检查容器时,舵图表中的所有变量均未转换,且值均为空白。我缺少什么?据我了解,需要使用双下划线将变量定位在正确的位置,但 appsettings 文件中可能不需要双下划线。
"auth": {
"apiScopeSecret": "${auth__apiScopeSecret}"
},
"discovery": {
"uri": "${discovery__uri}"
这也是预期的行为。通常,您使用 helm 值作为 cm 或机密创建 appsettings 文件,并在部署期间替换这些值,然后将其安装到容器中。在你的情况下,我没有看到你将某些东西安装到容器中,你只是将其作为环境提供。
您应该使用提供 appsettings 文件的 helm 值指定一个 Secret 或 configMap。
apiVersion: v1
kind: ConfigMap
metadata:
name: appsettings
data:
appsettings.dev.json: |-
{
"Logging": {
"LogLevel": {
"Default": {{my__helmvalue}},
}
}
}
在您的 pod 中,您应该指定卷,并在容器中指定volumeMounts,以指定应用程序设置文件应安装到的位置。
apiVersion: v1
kind: Pod
metadata:
name: examplepod
spec:
containers:
- name: test-container
image: myimage
volumeMounts:
- name: config-volume
mountPath: /app ## specify your path to overwrite the appsettingsfile!
volumes:
- name: config-volume
configMap:
name: appsettings
restartPolicy: Never