AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

MongoDB 마이그레이션 리소스 설정

중요

이 페이지의 설정은 Kubernetes 연산자 아래서 자체 관리형 배포서버를 Kubernetes로 마이그레이션하는 것을 지원하기 위해 존재합니다. 마이그레이션이 함께 제공되지 않는 Kubernetes에 직접 배포하는 MongoDB 리소스에 설정하지 마십시오.

이 페이지에서는 자체 관리형 가상 머신 배포서버에서 Kubernetes로 마이그레이션하는 동안에만 적용되는 MongoDB 리소스 필드, 상태 조건 및 주석을 문서화합니다. 전체 MongoDB 리소스 설정은 MongoDB 데이터베이스 리소스 사양을 참조하세요.

이러한 필드는 마이그레이션이 Kubernetes로 확장되는 소스 가상 머신 또는 베어메탈 프로세스를 식별합니다. 이러한 필드는 MongoDB 리소스인 apiVersion: mongodb.com/v1에 적용됩니다.

중요

이 필드들은 마이그레이션 전용입니다. 신규 Kubernetes 배포서버의 경우, MongoDB 리소스에 설정하지 마십시오.

spec.externalMembers

유형: ExternalMember 객체 배열

마이그레이션의 일부인 가상 마신 또는 베어 메탈 소스 프로세스. 이 필드는 마이그레이션만 위해 존재합니다.

이 목록에서 항목을 제거할 수 있습니다. 하지만 마이그레이션이 시작되면 항목을 추가하지 마십시오. 빈 spec.externalMembers 목록은 마이그레이션이 완료되었음을 의미합니다.

spec.externalMembers[].processName

유형: 문자열

필수 사항

이 필드는 마이그레이션 전용입니다. 자동화 구성의 processes 배열에서 그대로 표시되는 것과 같은 프로세스 이름.

spec.externalMembers[].hostname

유형: 문자열

필수 사항

이 필드는 마이그레이션 전용입니다. 자동화 구성에 표시된 그대로의 프로세스에 대한 host:port 값입니다.

spec.externalMembers[].type

유형: 열거형: mongod 또는 mongos

샤딩된 클러스터에 필요

이 필드는 마이그레이션 전용입니다. 복제본 세트에는 mongod 개의 외부 노드만 있습니다.

spec.externalMembers[].replicaSetName

유형: 문자열

옵션

이 필드는 마이그레이션 전용입니다. 샤딩된 클러스터 mongod 외부 노드에 필요합니다. 프로세스가 config 서버 복제본 세트에 속하는지 아니면 특정 샤드의 복제본 세트에 속하는지 식별합니다.

이 필드는 마이그레이션 전용이며 Kubernetes Operator가 사용하거나 생성할 리소스 또는 자동화 구성 이름을 재정의합니다.

spec.replicaSetNameOverride

유형: 문자열

이 필드는 마이그레이션 전용입니다. Kubernetes 리소스 이름과 다르거나 자동화 구성 복제본 세트 이름이 유효한 Kubernetes 이름이 아닌 경우의 자동화 구성 복제본 세트 이름입니다. kubectl mongodb migrate-to-mck 플러그인은 --resource-name-override 플래그를 통해 이 필드를 설정합니다.

spec.configServerNameOverride

유형: 문자열

이 필드는 마이그레이션 전용입니다. config 서버 복제본 세트 이름이 자동화 config에 표시되는 대로

spec.shardNameOverrides

유형: ShardNameOverride 객체 배열

이 필드는 마이그레이션 전용입니다. 샤드별 자동화 구성 복제본 세트 이름 및 샤드 _id.

참고

spec.shardNameOverrides와 spec.shardOverrides를 혼동하지 마십시오. spec.shardOverrides는 샤드별 리소스 설정을 구성하며, 마이그레이션 이름 지정과는 관련이 없습니다.

Kubernetes StatefulSet 이름은 이러한 재정의에 영향을 받지 않습니다.

Kubernetes 연산자는 이전에 이러한 자동화 구성 설정을 하드 코딩했습니다. 마이그레이션하려면 Kubernetes 배포서버가 소스 가상 머신에서 이미 사용 중인 경로와 일치시킬 수 있도록 구성 가능해야 합니다.

spec.downloadBase

유형: 문자열

기본값: /var/lib/mongodb-mms-automation

MongoDB Agent가 에이전트 바이너리를 다운로드하는 디렉토리입니다. Kubernetes 연산자는 이 설정에서 <downloadBase>/keyfile인 키 파일 경로를 추출합니다.

spec.security.tls.caFilePath

유형: 문자열

기본값: /mongodb-automation/tls/ca/ca-pem

Kubernetes Operator가 포드 내부에 CA 인증서를 투영하는 절대 경로입니다. 이 경로에는 최소 두 개의 경로 세그먼트가 포함되어야 합니다. 애플리케이션 데이터베이스에서는 지원되지 않습니다.

참고

Pod 템플릿이 이 경로 이상에서 볼륨을 마운트하는 경우, 마운트가 프로젝션된 CA 파일을 섀도잉할 수 있습니다. 사용자 지정 값을 설정하기 전에 podTemplate 볼륨 마운트를 검토하세요.

spec.security.authentication.agents.autoPEMKeyFilePath

유형: 문자열

데이터베이스 포드 내 MongoDB Agent의 결합된 PEM 파일의 절대 경로입니다. 이 필드를 설정하면 MongoDB Ops Manager 또는 Cloud Manager tls.autoPEMKeyFilePath 값이 설정되고 spec.security.authentication.agents.clientCertificateSecretRef에서 참조하는 보안 비밀이 해당 경로에 마운트됩니다.

spec.security.authentication.agents.clientCertificateSecretRef이(가) 필요합니다.

마이그레이션되지 않은 배포서버에 대해 Kubernetes Operator가 사용하는 해시 파생 에이전트 인증서 마운트 경로를 기본값으로 설정합니다.

status.conditions

유형: Kubernetes Conditions의 배열

type을 키로 사용하는 표준 Kubernetes 조건. 이 필드는 MongoDB 리소스에 새로 추가된 필드이며, 마이그레이션을 지원합니다.

status.conditions[type=Migrating]

유형: Kubernetes 조건

마이그레이션이 활성 상태인지 여부를 나타내는 최상위 지표입니다. spec.externalMembers이(가) 비어 있지 않은 동안 status은(는) True 이며, 마지막 외부 노드를 제거하면 MigrationComplete 이유로 False (으)로 전환됩니다.

이유
상태
의미

Validating

True

dry-run 어노테이션이 설정되었습니다.

Extending

True

원하는 Kubernetes 노드 수가 마지막으로 조정된 수보다 많습니다.

Pruning

True

externalMembers 개수가 status.migrationObservedExternalMembersCount 미만으로 제거되었습니다.

InProgress

True

외부 노드가 있지만 아무것도 변경되지 않습니다. 이것이 첫 번째 일치 시의 그러한 이유이기도 됩니다.

MigrationComplete

False

모든 외부 노드가 제거되었습니다.

우선순위는 Validating > Extending > Pruning > InProgress입니다. Kubernetes 측을 확장하는 프루는 Extending을 보고합니다. 이는 단일 변경을 수행해야 하는 또 다른 이유가 됩니다.

가지치기와 확장은 동시에 수행할 수 없습니다.

마이그레이션 완료를 스크립트로 작성하려면 status.phase을 폴링하는 대신 kubectl wait --for=condition=Migrating=False을 사용하세요.

status.conditions[type=NetworkConnectivityVerified]

유형: Kubernetes 조건

시험 실행 연결 확인 결과. Kubernetes 연산자는 외부 노드가 남지 않을 경우 status.conditions에서 이 조건을 완전히 제거합니다.

검증기 작업 종료 코드
조건 상태
이유
의미

작업이 여전히 실행 중입니다.

Unknown

Running

status.phase은 ConnectivityCheckRunning입니다.

0

True

NetworkValidationPassed

모든 외부 노드는 접근할 수 있고 인증됩니다.

2

False

AuthenticationFailed

자격 증명, 인증 메커니즘 또는 누락된 __system@local 역할입니다.

3

False

NetworkFailed

DNS, TLS, 시간 초과 또는 연결할 수 없는 노드. 작업 Pod 로그를 확인하세요.

1 또는 기타

False

UnknownError

미분류 실패. 작업 Pod 로그를 확인하세요.

작업 시작 전에 발생하는 오류는 OperatorImageUnknown, BuildStatefulSetOptions, AgentCertSecretFailed, AgentCertSubject 이유로 인해 발생합니다.

Kubernetes 연산자는 외부 노드가 남지 않으면 status.conditions에서 NetworkConnectivityVerified 조건을 완전히 제거합니다.

status.migrationObservedExternalMembersCount

유형: integer

마지막 조정에서 Kubernetes Operator가 관찰한 spec.externalMembers 항목 수입니다. Kubernetes Operator는 다음 조정에서 이 값을 현재 spec.externalMembers 개수와 비교하여 외부 노드를 가지치기했는지 감지합니다. 이 필드는 외부 노드가 남아 있지 않을 때 설정 해제됩니다.

참고

이 필드는 MongoDBOpsManager 사용자 지정 리소스 스키마에서도 Go 구조체 임베딩의 부작용으로 나타납니다. MongoDBOpsManager 리소에서 필드는 항상 null 입니다. 그곳에서 무시하십시오.

metadata.annotations.mongodb.com/migration-dry-run

유형: string(불리언 값)

kubectl mongodb migrate-to-mck 플러그인은 이 주석을 true(으)로 설정합니다. 이 주석이 있는 동안 Kubernetes Operator는 자동화 구성 변경을 수행하지 않고 연결 유효성 검사만 수행합니다. 주석을 제거하면 실제 마이그레이션이 시작됩니다.

metadata.annotations.mongodb.com/migrate-tool-version

유형: 문자열

리소스를 생성한 kubectl mongodb migrate-to-mck 플러그인의 버전을 기록합니다. Kubernetes Operator는 드라이 런을 포함하여 모든 조정 시 자체 버전에 대해 이 주석의 유효성을 검사합니다.

다음의 기존 MongoDB 리소스 필드는 마이그레이션에만 사용되는 것이 아니라 마이그레이션 동안 특정 값 또는 검토가 필요합니다.

  • spec.members, spec.mongodsPerShardCount, spec.configServerCount 및 spec.mongosCount은 모두 kubectl mongodb migrate-to-mck 플러그인이 생성하는 리소스의 0에서 시작합니다.

  • spec.memberConfig[].votes (정수, 기본값 1) 및 spec.memberConfig[].priority (플로트를 포함하는 문자열, 기본값 "1"). 최소한 spec.members만큼 많은 spec.memberConfig 항목을 제공해야 합니다. Kubernetes Operator는 spec.topology이 MultiCluster인 경우에만 샤딩된 클러스터에 대한 최상위 spec.memberConfig를 무시합니다. 단일 클러스터 샤딩된 클러스터의 경우, 최상위 spec.memberConfig은(는) 일치하는 spec.shardOverrides 항목 없이 config 서버 멤버와 모든 샤드 의 멤버를 구성합니다. kubectl mongodb migrate-to-mck 플러그인은 spec.memberConfig를 생성하지 않고, Kubernetes Operator는 새 멤버를 투표권이 없는 것으로 기본값 하지 않으므로, 새 멤버가 동기화되는 동안에는 CRD 기본값 1 및 "1"가 올바르지 않습니다.

    경고

    spec.memberConfig 설정 노드 수를 늘리기 전에

    기본값으로 새 Kubernetes 노드는 투표 노드로 참여합니다. CRD 기본값은 votes: 1 및 priority: "1"입니다. 이 기본값을 사용하면 아직 동기화 중인 노드가 초기 동기화를 완료하기 전에 투표에 참여할 수 있습니다.

    MongoDB에서는 노드 수를 증가시키기 전에 votes: 0 및 priority: "0"를 사용하여 새 Kubernetes 노드 하나당 하나의 spec.memberConfig 엔트리 쓰기 (write)를 하도록 권장합니다. 이렇게 하면 아직 동기화 중인 노드가 투표에서 이길 수 없습니다. votes은 정수입니다. priority은 string입니다.

  • 소스 배포서버와 정확히 일치해야 하는 필드: spec.version, spec.featureCompatibilityVersion, spec.additionalMongodConfig.net.port, spec.security.authentication.modes 및 spec.security.authentication.internalCluster.