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

Kubernetes의 MongoDB 데이터베이스 아키텍처

중요

이 섹션은 단일 Kubernetes 클러스터 배포에만 적용됩니다. 다중 Kubernetes cluster MongoDB deployment의 경우 개요 를 참조하세요.

Kubernetes Operator 및 Cloud Manager 또는 Ops Manager를 사용하여 MongoDB database 리소스를 Kubernetes 클러스터에 배포할 수 있습니다. 기존 Cloud Manager 또는 Ops Manager를 사용하거나 Kubernetes에 Ops Manager를 배포하여 데이터베이스를 관리할 수 있습니다.

Kubernetes Operator는 Cloud Manager 또는 Ops Manager를 사용하여 다음과 같은 MongoDB database 사용자 지정 리소스를 관리합니다.

  • MongoDB

  • MongoDBUser

사용자 정의 리소스 사양은 Kubernetes Operator에서 이러한 리소스를 정의합니다. Kubernetes Operator는 이러한 리소스를 모니터링합니다. 리소스의 사양을 업데이트하면, Kubernetes Operator는 이러한 변경 사항을 Cloud Manager 또는 Ops Manager에 푸시하고, 이 변경 사항은 MongoDB deployment의 구성을 변경합니다.

Kubernetes Operator는 MongoDB 사용자 지정 리소스에 의해 정의된 MongoDB database 배포를 관리합니다.

사용자 지정 리소스 사양은 MongoDB database 다음 유형의 MongoDB database 사용자 지정 리소스를 정의합니다.

  • Standalone

  • ReplicaSet

  • ShardedCluster

다음 다이어그램은 Kubernetes Operator에서 MongoDB 리소스의 각 유형 구성을 보여줍니다.

Kubernetes Operator용 MongoDB 컨트롤러에서 MongoDB 리소스의 상위 수준 아키텍처를 보여주는 다이어그램
클릭하여 확대

MongoDB database 리소스의 Standalone 유형에 대해 Kubernetes Operator는 단일 노드를 가진 복제본 세트를 StatefulSet로 Kubernetes 클러스터에 배포합니다.

Kubernetes Operator는 생성할 파드 수와 함께 파드 사양이 포함된 StatefulSet를 생성합니다. Kubernetes Operator는 Kubernetes StatefulSet 컨트롤러를 사용하여 이 독립형 MongoDB database 인스턴스에 대한 파드를 생성합니다.

중요

Kubernetes에서 Standalone 리소스는 노드가 하나뿐인 ReplicaSet 리소스와 동일합니다. 복제본 세트를 사용하면 나중에 노드를 추가할 수 있으므로 Standalone 대신 노드가 하나인 ReplicaSet를 배포하는 것이 좋습니다.

For the ReplicaSet type of the MongoDB resource, the Kubernetes Operator deploys a replica set to the Kubernetes cluster as a StatefulSet, with a number of members equal to the value of spec.members.

Kubernetes Operator는 Kubernetes StatefulSet 컨트롤러를 사용하여 복제본 세트의 각 노드에 대해 StatefulSet에 하나의 파드를 생성합니다.

StatefulSet의 각 파드는 MongoDB Agent 인스턴스를 실행합니다.

The ShardedCluster type of the MongoDB resource consists of one or more Config Servers, mongos instances, and shard members.

ShardedCluster 리소스에 대해 Kubernetes Operator가 다음을 배포합니다.

  • 모든 Config 서버에 대해 하나의 StatefulSet

  • One StatefulSet for all mongos instances

  • 각 샤드 노드당 하나의 StatefulSet

Kubernetes Operator는 Kubernetes StatefulSet 컨트롤러에 의존하여 샤딩된 클러스터에 대해 생성된 각 StatefulSet에 하나의 파드를 생성합니다.

MongoDB 사용자 지정 리소스 사양을 적용하면, Kubernetes Operator는 각 리소스를 StatefulSet로 Kubernetes 클러스터에 배포합니다.

Kubernetes Operator:

  • 사양 파일, ConfigMap 또는 시크릿이 변경되면 변경 사항을 검증합니다.

  • Kubernetes 클러스터의 MongoDB database 리소스를 적절하게 업데이트합니다.

  • 변경 사항을 Cloud Manager 또는 Ops Manager로 푸시하여 MongoDB deployment 구성을 변경합니다.

다음 다이어그램은 복제본 세트를 변경할 경우 Kubernetes Operator가 어떻게 작동하는지 설명합니다.

MongoDB Enterprise Kubernetes Operator가 복제본 세트에 대해 MongoDB 사용자 지정 리소스 정의를 변경하는 방법을 설명하는 다이어그램
클릭하여 확대

다음 다이어그램은 샤딩된 클러스터를 변경할 경우 Kubernetes Operator가 어떻게 동작하는지 설명합니다.

MongoDB Enterprise Kubernetes Operator가 샤딩된 클러스터에 대해 MongoDB 사용자 지정 리소스 정의를 변경하는 방법을 설명하는 다이어그램
클릭하여 확대

MongoDB 리소스 사양을 생성하거나 변경할 때 또는 관련 ConfigMap 또는 시크릿을 변경할 때, Kubernetes Operator는 변경 사항을 조정하기 위해 다음 작업을 수행합니다.

  1. Kubernetes Operator에서 프로젝트를 생성하거나 프로젝트에 연결하는 데 사용한 ConfigMap에서 필요한 조직 및 프로젝트 구성을 읽습니다.

    리소스 사양을 변경하면 Kubernetes Operator는 변경이 발생했음을 식별하고 spec.opsManager.configMapRef.name에 지정된 ConfigMap의 사양을 확인합니다.

    참고

    MongoDB 리소스에 대한 Kubernetes Operator를 구성할 때 ConfigMap을 생성하여 Cloud Manager 또는 Ops Manager 프로젝트를 연결하거나 생성합니다. MongoDB Agent는 이 ConfigMap을 사용하여 MongoDB 리소스의 배포를 시작하거나 변경합니다.

  2. 다음 중 하나에 지정된 시크릿에서 Cloud Manager 또는 Ops Manager에 대한 인증 구성을 읽습니다.

    이 시크릿은 Kubernetes Operator가 Cloud Manager 또는 Ops Manager에 인증하는 데 필요한 Cloud Manager API 키 또는 Ops Manager API 키를 저장합니다.

    참고

    MongoDB 리소스에 대한 Kubernetes Operator를 구성할 때 이 시크릿을 Kubernetes에서 생성하거나 시크릿 저장소 도구에 저장해야 합니다.

  3. Kubernetes Operator는 Cloud Manager 또는 Ops Manager에 연결하여 다음 작업을 수행합니다.

    • ConfigMap의 orgId 필드에서 조직을 읽습니다. orgId 필드에 값을 제공해야 합니다.

    • 이 선택적 필드에 값을 지정하지 않은 경우 ConfigMap의 projectName 필드에 지정된 프로젝트 이름을 읽거나 없는 경우 Cloud Manager 또는 Ops Manager에서 이 프로젝트를 만듭니다.

    • MongoDB Agent에 대해 Kubernetes Operator에서 생성한 <project-id>-group-secret 시크릿이 있는지 확인합니다. Kubernetes Operator는 시크릿 저장소 도구에서 시크릿을 읽거나 Ops Manager API 키 또는 Cloud Manager API 키를 사용하여 시크릿을 생성합니다.

    • 자체를 ConfigMap 및 이 시크릿의 감시자로 등록합니다. 이를 통해 Kubernetes Operator는 ConfigMap 또는 시크릿에 대한 변경 사항에 반응할 수 있습니다.

  4. Kubernetes Operator는 모든 TLS 및 X.509 인증서를 확인합니다.

    • 복제본 세트에 대해 TLS가 활성화된 경우, Kubernetes Operator는 <prefix>-<resource-name>-cert 시크릿 또는 시크릿 저장소 도구에 제공된 인증서를 찾습니다.

    • 샤딩된 클러스터에 대해 TLS가 활성화된 경우, Kubernetes Operator는 이러한 시크릿에서 인증서를 찾습니다.

      • <prefix>-<resource-name>-x-cert 각 샤드 노드에 대해.

      • <prefix>-<resource-name>-config-cert 모든 Config 서버에 대해.

      • <prefix>-<resource-name>-mongos-cert for all mongos instances.

    • X.509 또는 X.509 및 TLS를 사용한 내부 인증이 활성화된 경우, Kubernetes Operator는 해당 인증서에 필요한 구성이 포함되어 있는지 확인합니다.

  5. Kubernetes Operator는 필요한 StatefulSet를 찾아 업데이트하거나, StatefulSet가 존재하지 않는 경우 새 StatefulSet를 생성합니다. StatefulSet의 수는 MongoDB 리소스 유형에 따라 다릅니다.

    • ReplicaSet 또는 Standalone 리소스의 경우 Kubernetes Operator는 단일 StatefulSet를 생성합니다.

    • ShardedCluster 리소스의 경우 Kubernetes Operator는 다음을 생성합니다.

      • 모든 Config 서버에 대해 하나의 StatefulSet.

      • One StatefulSet for all mongos instances.

      • 각 샤드 노드당 하나의 StatefulSet.

      At this point, each Pod runs at least one MongoDB Agent instance, but does not yet contain mongod instances.

    • 각 MongoDB Agent 인스턴스는 Cloud Manager 또는 Ops Manager 폴링을 시작하여 MongoDB 자동화 구성을 수신합니다.

      참고

      비정적 컨테이너: 가 MongoDB Agent 처음으로 구성을 수신하면 에 MongoDB 지정된 버전의 spec.version 바이너리를 인터넷에서 다운로드하거나,MongoDB Ops Manager 가 MongoDB Agent 로컬 모드 로 구성된 경우 에서 다운로드합니다.

      정적 컨테이너: 정적 컨테이너는 런타임에 바이너리를 다운로드하지 않습니다. 자세한 내용은 정적 컨테이너(공개 미리 보기)를 참조하세요.

    • After the MongoDB Agent receives the automation configuration, it starts a mongod instance on the corresponding Pod.

    • For each Pod of each StatefulSet that the MongoDB custom resource creates, except for mongos StatefulSets, the Kubernetes Operator generates a Persistent Volume Claim. You can override this behavior by setting spec.persistent to false in the resource specification.

  6. Kubernetes Operator는 MongoDB Agent로부터 수신한 자동화 구성을 사양의 변경 사항으로 업데이트하여 Cloud Manager 또는 Ops Manager로 전송합니다.

    • 각 파드에 대한 각 MongoDB Agent는 Cloud Manager 또는 Ops Manager를 다시 폴링하고 업데이트된 자동화 구성을 수신합니다.

    • 사양의 필드 변경하면 Kubernetes Operator는 StatefulSet의 롤링 업데이트 수행하여 새 사양과 일치하는 새 파드를 시작합니다.

    • Kubernetes Operator는 각 MongoDB Agent가 준비 상태에 도달했다고 보고할 때까지 기다립니다.

    참고

    데이터베이스 리소스 의 보안 구성을 변경하거나 기존 StatefulSet를 확장하다 하는 경우, Kubernetes Operator는 단계를 6 실행하기 전에 단계를 5 실행합니다.

  7. Kubernetes Operator는 Kubernetes 서비스를 업데이트하거나 새로운 MongoDB 리소스의 경우 각각의 새로운 StatefulSet에 필요한 서비스를 생성합니다.

    For the ServiceType ClusterIP, the Kubernetes Operator sets ClusterIP to None, and performs these actions:

    • 이 서비스가 존재하지 않는 경우 생성합니다.

    • ReplicaSet 또는 Standalone 리소스의 경우, Kubernetes Operator는 사용자 지정 리소스의 이름에 -svc를 추가하여 서비스 이름을 지정합니다.

    • ShardedCluster 리소스의 경우, Kubernetes Operator는 이러한 명명 규칙을 사용한합니다.

      • For mongos instances, the Kubernetes Operator uses the name specified in spec.service, or the resource's name with -svc appended to it.

      • Config 서버의 경우 Kubernetes Operator는 -cs가 추가된 리소스 이름을 사용합니다.

      • 각 샤드의 경우 Kubernetes Operator는 -sh가 추가된 리소스 이름을 사용합니다.

    • 포트의 경우 Kubernetes Operator는 기본값 포트 27017 또는 에 지정된 .net.port를 spec.additionalMongodConfig사용합니다.

If the user authentication method is set to SCRAM, the MongoDB User Resource Specification depends on the secret storage tool that stores the user credentials. If you are using a Kubernetes secret, you specify the secret in the spec.passwordSecretKeyRef settings in the MongoDBUser resource specification.

Kubernetes Operator는 변경 사항에 대한 시크릿을 감시합니다. 시크릿 구성을 변경하면 Kubernetes Operator가 변경 사항을 조정합니다. 다음 작업을 수행합니다.

  1. MongoDB 사용자 리소스 사양spec.MongoDBResourceRef.name 설정에 지정된 값에 따라 MongoDB 사용자의 리소스를 결정합니다.

  2. Cloud Manager 또는 Ops Manager에 연결합니다.

    • ConfigMap의 orgId에서 조직을 읽습니다.

    • ConfigMap의 projectName에서 프로젝트 이름을 읽거나 이 프로젝트가 없는 경우 Cloud Manager 또는 Ops Manager에서 이 프로젝트를 만듭니다.

    • MongoDB Agent용으로 Kubernetes Operator가 생성한 <project-id>-group-secret 파일이 존재하는지 확인합니다. Kubernetes Operator는 시크릿 저장소 도구에서 시크릿을 읽거나 Ops Manager API 키 또는 Cloud Manager API 키를 사용하여 시크릿을 생성합니다.

  3. Cloud Manager 또는 Ops Manager에서 사용자의 자격 증명을 업데이트하거나 존재하지 않는 경우 새 사용자를 생성합니다.

    • 사용자 인증 메서드가 SCRAM인 경우 시크릿에서 비밀번호를 읽습니다.

    • 사용자 이름을 읽습니다. 사용자 이름이 변경된 경우 Kubernetes Operator는 이전 이름을 제거하고 새 이름을 추가합니다.

    • Cloud Manager 또는 Ops Manager에 사용자가 있는지 확인합니다.

다음 다이어그램은 사용자 시크릿 또는 MongoDB 사용자 리소스 사양을 변경할 경우 Kubernetes Operator가 어떻게 동작하는지 설명합니다.

MongoDB Enterprise Kubernetes Operator가 MongoDBUser 사용자 지정 리소스 정의에 대한 변경 사항을 조정하는 방법을 설명하는 다이어그램
클릭하여 확대