繁体   English   中英

kube.netes mongo docker 身份验证不适用于自定义配置文件

[英]kubernetes mongo docker authentication does not work with custom config file

我创建了具有以下 pod 定义的 pod,它使用 mongo 官方 docker 图像。 这里的预期结果是 mongo docker 使用环境变量MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD创建用户和密码,然后它将使用从卷提供给它的/etc/mongo/mongod.conf 相反,发生的事情是 - 在第一次连接时 - 我无法连接说用户不存在。

如果我删除command部分,错误就会消失。 任何想法如何解决这个问题。

等效的 docker 命令运行良好,但在 kube.netes auth 中如果我提供自定义配置文件则不起作用。

docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secret --name some-mongo -v /etc/mongo:/etc/mongo -v /etc/ssl/keyfile:/data/db/keyfile  mongo:4.2.23 --config /etc/mongo/mongod.conf
apiVersion: v1
kind: Pod
metadata:
  name: mongodb
  labels:
    db: mongodb
spec:
  containers:
    - name: mongodb
      image: mongo:4.2.23
      command:
           - mongod
           - "--config"
           - "/etc/mongo/mongod.conf"
      env:
       - name: MONGO_INITDB_ROOT_USERNAME
         valueFrom:
            secretKeyRef:
              name: mongosecret
              key: user

       - name: MONGO_INITDB_ROOT_PASSWORD
         valueFrom:
            secretKeyRef:
              name: mongosecret
              key: password
      volumeMounts:
          - name: mongodb-keyfile
            mountPath: /etc/ssl
          - name: mongodb-config
            mountPath: /etc/mongo
            readOnly: true
  volumes:
    - name: mongodb-keyfile
      secret:
        secretName: mongodb-keyfile
        defaultMode: 0600
    - name: mongodb-config
      configMap:
        name: mongodb-config

按照这个SO ,正如你所说的从部署文件中删除“命令”并且它正在工作因为当你在清单中设置 MONGO_INITDB_ROOT_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD ENV 变量时。 Mongo 容器将自行启用 --auth。 因此,您无需明确指定并在此处进行检查。

有关详细信息,请参阅此SO1SO2 您还可以将用户名和密码作为secrets传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM