无法从 kubernetes secrets 和 configMap 获取 spring cloud config 本地 application.properties 文件中的占位符值

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

我已将 server.path 值上传到 kubernetes configmap 中,并将 db.name 和 db.password 上传到 kubernetes secret 中。当我通过 env 命令检查时,这些值在服务容器中可用,也像“echo $server_path”。现在我试图将这些值绑定到相同的基于 spring-cloud-config-server 的服务相关的 application-dev.properties 文件中。我正在使用 server.path=${server_path}, db.name=${db_name} 之类的占位符

这不起作用,我在邮递员响应中获得了准确的键和占位符名称,而不是应该来自 ConfigMap 和 Secrets 的键和占位符值。

我是新来的。

请帮忙

我尝试了使用 ${placeholder} 将 k8s configMap 和 Secrets env 值绑定到应用程序属性文件的所有方法。它不工作。我是新来的。请帮助。

出于测试目的,我有一个键值对到 configMap。它的 jcsmp_PUB_ACK_WINDOW_SIZE :“50”

这是我的 configMap yaml。

这是我的 deployment.yaml,用于将 configmap 绑定到服务。

容器中的值也会更新。

kubernetes kubernetes-helm spring-cloud-config configmap kubernetes-secrets
1个回答
0
投票

尝试使用 RefKeys 将 configmap 和秘密分配给环境变量,如下所示

template:
  metadata:
   labels:
    app: my-app
  spec:
   containers:
    - name: my-app
      image: nginx
      env:
       - name: myvalue
         valueFrom:
           configMapKeyRef:
             name: my-config          # Configmap name
             key: my-property
       - name: my_password
         valueFrom:
          secretKeyRef:
            name: my-secret         #Secret name 
            key: password

另一种方法是您可以将 configmap 和 secrets 挂载为 volumes。这样这些配置就会挂载到 Pod 中。您可以使用 mountpath 并按如下方式访问容器内的这些配置

template:
  metadata:
   labels:
    app: my-app
  spec:
   containers:
    - name: my-app
      image: nginx
      volumeMounts:
       - name: config-volume
         moutnPath: /config
       - name: secret-volume
         mountPath: /secrets
   volumes:
     - name: config-volume
       configMap:
        name: my-config         #Configmap name
     - name: secret-volume
       secret:
        secretName: my-secret   #Secret name
© www.soinside.com 2019 - 2024. All rights reserved.