首页 > 解决方案 > 如何将 Kubernetes 配置映射和密码设置为 mongodb 环境变量

问题描述

我正在尝试设置envmongo 的两个变量,即 -MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD使用kubernetes ConfigMapSecret,如下所示:

当我不使用配置映射和密码时,即我硬编码用户名和密码时,它可以工作,但是当我尝试用配置映射和密码替换它时,它说

“认证失败。”

我的用户名和密码是一样的,就是admin

这是yaml这些对象的定义,有人可以帮我解决什么问题吗?

apiVersion: v1
kind: ConfigMap
metadata:
  name: mongodb-username
data:
  username: admin
---
apiVersion: v1
kind: Secret
metadata:
  name: mongodb-password
data:
  password: YWRtaW4K  
type: Opaque
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodbtest
spec:
  # serviceName: mongodbtest
  replicas: 1
  selector:
    matchLabels:
      app: mongodbtest
  template:
    metadata:
      labels:
        app: mongodbtest
        selector: mongodbtest
    spec:
      containers:
      - name: mongodbtest
        image: mongo:3       
        # env:
        #   - name: MONGO_INITDB_ROOT_USERNAME
        #     value: admin
        #   - name: MONGO_INITDB_ROOT_PASSWORD
        #     value: admin
        env:
          - name: MONGO_INITDB_ROOT_USERNAME
            valueFrom:
              configMapKeyRef:
                name: mongodb-username
                key: username
          - name: MONGO_INITDB_ROOT_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mongodb-password
                key: password

标签: mongodbkubernetes

解决方案


最后我在几个小时后找到了解决方案,这不是我从 kubernetes 方面做的事情,而是我base64编码的时候。

正确的编码方法是使用以下命令:

echo -n 'admin' | base64

这就是我的问题。


推荐阅读