【问题标题】:Change password in mongodb deployed on kubernetes更改部署在 kubernetes 上的 mongodb 中的密码
【发布时间】:2021-04-23 01:21:54
【问题描述】:

我无法从部署在 k8s 上的 MongoDB 更改现有用户的密码,除非我删除数据库然后使用新密码重新创建它。

如何在不删除数据库的情况下使用 yaml 更改 mongo 状态对象的密码?

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mongo-db-statefulset
  namespace: development
spec:
  serviceName: mongo-svc
  replicas: 1
  selector:
    matchLabels:
      component: mongo
  template:
    metadata:
      labels:
        component: mongo
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: mongo
          image: mongo:4.0.4
          volumeMounts:
            - mountPath: /data/db
              name: volume 
          ports:
            - containerPort: 27017
          env:
            - name: MONGO_INITDB_ROOT_USERNAME
              value: admin
            - name: MONGO_INITDB_ROOT_PASSWORD
             # from secrets
              value: password
            - name: MONGO_INITDB_DATABASE
              value: admin
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: database-persistent-volume-claim

【问题讨论】:

  • 如果您不想删除数据库,您不能使用这些命令更改密码吗? docs.bitnami.com/bch/apps/lets-chat/administration/…
  • 嗨@Mike Me,您所说的# from secrets 是什么意思,MONGO_INITDB_ROOT_PASSWORD 是来自秘密的值,您在秘密中更改了它,还是在 statefulset yaml 中指定?
  • 嗨@Jakub 它存储在一个秘密中并在那里进行了更改。

标签: mongodb kubernetes


【解决方案1】:

如果我正确理解您的问题:

  • 您有密码作为环境变量的秘密,并且 pod 可以通过卷访问秘密数据
  • 您更改了秘密密码,但未重新启动的 Pod 无法获取该密码。

根据documentation

Secret 更新后不会更新环境变量,因此如果容器已经消费了环境变量中的 Secret,除非重新启动,否则容器不会看到 Secret 更新。有第三方解决方案可以在机密更改时触发重启。

这是一个已知的issue。您可以在 github issue 中了解更多信息。


所以当你修改密码后,你必须重启你的 pod 来更新这个值,你不必删除它。


如文档中所述,有第三方工具可在机密更改时触发重启,其中之一是 Reloader

Reloader 可以观察 ConfigMap 和 Secret 的变化,并对 Pod 及其相关的 DeploymentConfig、Deployments、Daemonsets 和 Statefulsets 进行滚动升级。


重新启动部署的快速方法是使用 kubectl rollout restart,它会逐步关闭并重新启动部署或 statefulset 中的每个容器。

如果您更改密码中的密码并使用 kubectl rollout restart 新密码应该可以使用。

【讨论】:

    猜你喜欢
    • 2020-09-13
    • 2020-11-08
    • 1970-01-01
    • 2019-06-17
    • 2020-03-25
    • 1970-01-01
    • 2019-05-31
    • 2020-04-08
    • 1970-01-01
    相关资源
    最近更新 更多