应用程序设置文件中的 Helm 变量替换

问题描述 投票:0回答:1

我正在尝试使用 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}"
asp.net kubernetes google-cloud-platform kubernetes-helm
1个回答
2
投票

这也是预期的行为。通常,您使用 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
© www.soinside.com 2019 - 2024. All rights reserved.