MongoDB 状态集更新

MongoDB statefulset updating

我正在 GKE.

上部署 mongodb ReplicaSet

我的部署有效,但是我想在 Mongo 上启用身份验证。

我已经连接到我的 pod

kubectl exec -it {pod_name} mongo admin

为我的数据库创建了一个管理员用户和一个用户。我当时想我可以用 --auth 标志更新 mongo-statefulset.yaml 并应用更新后的 yaml.

类似

.....
spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: mongod-container
          image: mongo:3.6
          command:
            - mongod
            - "--bind_ip"
            - "0.0.0.0"
            - "--replSet"
            - rs0
            - "--smallfiles"
            - "--noprealloc"
            - "--auth"
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: mongo-persistent-storage
              mountPath: /data/db
.....

但是运行 kubectl apply -f mongo-statefulset.yaml 只产生

service/mongo-svc unchanged

statefulset.apps/mongo configured

我应该重新启动我的 pods 以使它现在生效吗?

你可以试试

kubectl delete -f mongo-statefulset.yaml && kubectl apply -f mongo-statefulset.yaml

尝试滚动更新: RollingUpdate 更新策略将以相反的顺序更新 StatefulSet 中的所有 Pods,同时尊重 StatefulSet 保证。

修补 web StatefulSet 以应用 RollingUpdate 更新策略。

$ kubectl patch statefulset your_statefulset_name -p '{"spec":{...}}}'

不要忘记使用您在 pod 上创建的凭据添加 env 标签,例如:

      env:
        - name: MONGODB_USERNAME
          value: admin
        - name: MONGODB_PASSWORD
          value: password

希望对您有所帮助。