Kubernetes Operator 1.15부터 독립형 배포는 더 이상 사용되지 않으며 다음 주요 버전에서 지원 중단됩니다. 독립형 배포를 1멤버 복제본 세트로 마이그레이션합니다. 멤버가 1개인 복제본 세트 독립형 인스턴스 와 동일한 단일 노드 토폴로지 제공하며 나중에 다시 마이그레이션하지 않고도 멤버를 추가할 수 있도록 지원합니다.
이 작업에 대하여
이 마이그레이션 현재 위치 업그레이드 아닙니다. 새 1멤버 복제본 세트 배포 mongodump 및 mongorestore를 사용하여 데이터를 복사한 다음 애플리케이션을 복제본 세트 로 보냅니다.
Ops Manager 프로젝트 하나의 배포서버 포함되므로 복제본 세트 새 프로젝트 필요합니다. 독립형 배포서버 에서 사용하는 프로젝트 재사용할 수 없습니다.
mongodump그리고mongorestore은(는 ) 데이터베이스 사용자를 복사하지 않습니다. 복원 후 사용자를MongoDBUser리소스로 다시 생성합니다.독립형 배포서버 삭제 때까지 그대로 유지됩니다. 마이그레이션 이 실패하면 애플리케이션을 독립형 배포서버 로 다시 보낼 수 있습니다.
시작하기 전에
Kubernetes Operator가 관리하는 독립형 리소스 배포합니다. 자세한 학습 은 독립형 MongoDB 인스턴스 배포를 참조하세요.
독립형 배포서버 호스팅하는 Kubernetes 클러스터 에 액세스 하도록
kubectl를 구성합니다.독립형 리소스 에서
spec.version값을 확인합니다. 멤버가 1개인 복제본 세트 동일한 MongoDB 버전을 실행 해야 합니다.
절차
새 프로젝트 에 대한 ConfigMap을 만듭니다.
Ops Manager 프로젝트 하나의 배포서버 포함되므로 독립형 배포서버 에서 사용하는 프로젝트 재사용할 수 없습니다. 독립형 배포서버 참조하는 ConfigMap을 복사하고 baseUrl 및 orgId 값을 유지한 상태에서 새롭고 고유한 projectName를 설정하다 . 독립형 배포서버 와 동일한 Kubernetes 네임스페이스 에 ConfigMap을 적용합니다.
멤버가 1개인 복제본 세트 배포합니다.
spec.type을 ReplicaSet로 설정하다 spec.members를1로 설정하다 MongoDB 리소스 생성합니다.spec.version를 독립형 배포서버 실행하는 것과 동일한 MongoDB 버전으로 설정하고, 이전 단계에서 생성한 ConfigMap을 참조합니다. 독립형 배포서버 에서 사용하는 자격 증명 시크릿을 재사용할 수 있습니다. 독립형 리소스 에서 추가 spec 설정을 복사합니다.
apiVersion: mongodb.com/v1kind: MongoDBmetadata: name: <my-replica-set> namespace: <my-namespace>spec: members: 1 # Must match the MongoDB version of the standalone deployment version: "<mongodb-version>" opsManager: configMapRef: # Must match metadata.name in the new project ConfigMap file name: <configMap.metadata.name> # Can match the credentials Secret that the standalone deployment uses credentials: <mycredentials> type: ReplicaSet persistent: true리소스 적용합니다.
kubectl apply -f <replica-set-yaml> --namespace <my-namespace>MongoDB 리소스의 상태를 확인하려면 다음 명령어를 사용하세요.
kubectl get mdb <resource-name> -o yaml -w-w(watch) 플래그 설정이 적용된 경우, 구성이 변경되면 상태 단계가 Running 상태를 달성할 때까지 출력이 즉시 새로 고침 됩니다. 리소스 배포 상태에 대해 자세히 알아보려면 Kubernetes Operator 문제 해결을 참조하세요.
도구 포드를 배포합니다.
데이터베이스 파드를 실행 컨테이너 이미지에는 MongoDB 데이터베이스 도구 포함되어 있지 않습니다. mongodump 및 mongorestore를 실행 하려면 mongodb-enterprise-server 이미지를 기반으로 전용 도구 포드를 배포 . 이미지 태그를 지정하다 독립형 배포서버 실행하는 것과 동일한 MongoDB 버전으로 설정합니다.
apiVersion: v1kind: Podmetadata: name: mongodb-tools namespace: <my-namespace>spec: containers: - name: mongodb-tools # Use the standalone's MongoDB version without the -ent # suffix, for example 8.0.4 image: quay.io/mongodb/mongodb-enterprise-server:<mongodb-version>-ubi9 command: ["sleep", "infinity"]pod를 적용합니다.
kubectl apply -f <tools-pod-yaml> --namespace <my-namespace>문서 수와 데이터베이스 해시를 기록합니다.
admin, config 및 local 데이터베이스를 제외한 독립형 배포서버 에서 각 컬렉션 의 문서 수와 각 데이터베이스 의 dbHash를 기록합니다. 복원 admin 및 config 데이터베이스와 복제 local 데이터베이스 에 쓰기를 제외하므로 이러한 값은 일치하지 않습니다. 복원 후 복제본 세트 에 대해 이러한 측정을 반복하여 마이그레이션 확인합니다.
독립형 데이터를 덤프합니다.
독립형 배포의 서비스에 대해 도구 pod에서 mongodump를 실행합니다.
kubectl exec mongodb-tools --namespace <my-namespace> -- \ mongodump \ --host "<my-standalone>-svc.<my-namespace>.svc.cluster.local:27017" \ --out /tmp/dump독립형 배포서버 인증 필요한 경우 backup 및 readAnyDatabase 역할이 있는 사용자로 연결합니다. 배포서버 TLS가 필요한 경우 해당 mongodump 연결 옵션을 추가합니다. 자세한 학습 은 mongodump를 참조하세요.
데이터를 복제본 세트 로 복원합니다.
도구 pod에서 복제본 세트의 서비스에 대해 mongorestore를 실행합니다.
kubectl exec mongodb-tools --namespace <my-namespace> -- \ mongorestore \ --host "<my-replica-set>-svc.<my-namespace>.svc.cluster.local:27017" \ --nsExclude="admin.*" \ --nsExclude="config.*" \ /tmp/dump--nsExclude 옵션은 admin 및 config 데이터베이스를 복원 에서 제외합니다. 전체 mongodump 출력에는 admin.system.users 및 admin.system.version가 포함됩니다. 이를 복원하면 데이터베이스 사용자와 인증 스키마 자동화 구성 외부의 복제본 세트 에 쓰기 (write) 되므로 Ops Manager 의 프로젝트 사용자 목록이 더 이상 데이터베이스 일치하지 않습니다.
복제본 세트 인증 필요한 경우 이후 단계에서 데이터베이스 사용자를 다시 생성하기 때문에 복제본 세트 아직 사용자가 없습니다.restore, readWriteAnyDatabase, dbAdminAnyDatabase 역할을 사용하여 새 프로젝트 에 임시 MongoDBUser 리소스 생성하고 해당 사용자로 연결합니다. 사용자 생성에 대해 자세히 학습 데이터베이스 사용자 관리를 참조하세요.
복제본 세트 TLS가 필요한 경우 해당 mongorestore 연결 옵션을 추가합니다. 자세한 학습 은 mongorestore를 참조하세요.
데이터베이스 사용자를 다시 생성합니다.
덤프에는 데이터베이스 사용자가 포함되지 않습니다. 각 사용자를 새 프로젝트 에서 MongoDBUser 리소스 로 다시 생성합니다. 복원 위한 임시 사용자를 생성한 경우 사용자를 다시 생성한 후 삭제 . 자세한 학습 은 데이터베이스 사용자 관리 및 MongoDB 사용자 리소스 사양을 참조하세요.
독립형 배포서버 삭제합니다.
마이그레이션 확인한 후 독립형 MongoDB 리소스 삭제 . Kubernetes Operator는 독립형 배포서버 에서 사용한 영구 볼륨 클레임을 삭제 하지 않으므로 클레임을 수동으로 삭제 . 자세한 학습 은 MongoDB 리소스 제거를 참조하세요.
Rollback
독립형 배포서버 삭제 때까지 그대로 유지됩니다. 마이그레이션 을 롤백하려면 애플리케이션을 독립형 배포서버 서버로 되돌립니다. 독립형 배포서버 전환 후 복제본 세트 받은 쓰기가 포함되지 않습니다.