kubernetes에 배포된 mongodb의 암호 변경
kubernetes에 배포된 mongodb의 암호 변경
데이터베이스를 삭제한 후 새 암호로 다시 만들지 않으면 k8s에 배포된 MongoDB에서 기존 사용자의 암호를 변경할 수 없습니다.
db를 삭제하지 않고 mongo stateful 객체에 대해 yaml을 사용하여 비밀번호를 변경하려면 어떻게 해야 합니까?
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
내가 당신의 문제를 올바르게 이해한다면:
- 비밀번호를 환경변수로 비밀번호를 가지고 있으며, 포드는 볼륨을 통해 비밀데이터에 액세스할 수 있습니다
- 암호를 변경했지만 다시 시작하지 않으면 포드가 암호를 인식하지 못합니다.
다음에 따름:
암호화된 업데이트 후에는 환경 변수가 업데이트되지 않으므로 컨테이너가 이미 환경 변수의 암호를 사용하는 경우 암호화된 업데이트는 다시 시작되지 않는 한 컨테이너에 표시되지 않습니다. 비밀이 변경될 때 재시작을 트리거하는 타사 솔루션이 있습니다.
이것은 알려진 것입니다. 이것에서 더 자세히 읽을 수 있습니다.
따라서 비밀 암호를 변경한 후에는 이 값을 업데이트하기 위해 포드를 다시 시작해야 하므로 삭제할 필요가 없습니다.
문서에서 언급한 바와 같이, 비밀이 변경될 때 재시작을 트리거하는 타사 도구가 있습니다. 그 중 하나는 다음과 같습니다.
업로더는 ConfigMap 및 Secret의 변경 사항을 모니터링하고 관련된 DeploymentConfigs, Deployments, Daemonsets 및 Statefulset를 사용하여 포드에서 롤링 업그레이드를 수행할 수 있습니다.
배포를 다시 시작하는 가장 빠른 방법은 를 사용하는 것입니다. 를 사용하면 단계별 종료를 수행하고 배포 또는 상태 저장 세트의 각 컨테이너를 다시 시작할 수 있습니다.
비밀번호를 변경하고 kubectl 롤아웃을 사용하면 새 비밀번호가 작동합니다.
@kane에 대한 명령 예제. 주석으로 추가할 평판이 없습니다. kubectl -n 네임스페이스 롤아웃 다시 시작 배포/name_of_deployment
편집: 비밀로 비밀번호를 변경했지만, 쿠벡틀 롤아웃 후 다시 시작 몽고는 어떻게든 이전 비밀번호를 사용합니다. 어떻게 해야 할지 잘 모르겠습니다. 편집2: mongopod에 연결하면 변수 MONGO_INITDB_ROOT_PASSWORD가 새 암호를 표시하지만 mongodb에 연결하는 것은 이전 암호 편집3에서만 작동합니다: 결국 내가 한 일은: 1. 새로운 가치를 가진 비밀을 유지하고, 이 시점에서 중요한지 확신하지 못하는 것이었다. 2. 포드에 로그인하여 이 두 가지 명령을 실행하십시오. db = db.getSiblingDB('admin') 다음에 db.changeUserPassword("root", "NEW PASSWORD") 3. 이것이 지속적인지 테스트하기 위해 배포를 삭제했다가 다시 생성하면 새 암호가 작동합니다. 이전 암호는 더 이상 작동하지 않습니다