Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 연산자
/

Ops Manager 리소스 계획하기

이 페이지의 내용

  • 아키텍처
  • 고려 사항
  • 암호화 키
  • 애플리케이션 데이터베이스
  • 간소화된 구성
  • 백업
  • HTTPS를 통해 실행되도록 Ops Manager 구성
  • Ops Manager 애플리케이션 액세스
  • 원격 또는 로컬 모드에서 Ops Manager 배포
  • 외부 MongoDB 배포 관리하기
  • 멀티 클러스터에 MongoDB Ops Manager 배포
  • 비밀 저장소
  • 전제 조건

MongoDB MongoDB Ops Manager 는 MongoDB deployment를 관리, 백업 및 모니터링하는 엔터프라이즈 애플리케이션입니다. MongoDB Ops Manager를 사용하면 MongoDB 를 확장 및 업그레이드하고, 쿼리를 최적화하고, 특정 시점 복원을 수행하고, 성능 경고를 받고, 배포를 모니터링할 수 있습니다. MongoDB Ops Manager와 기본 데이터베이스를 관리하고 유지하려면 MongoDB Enterprise Kubernetes Operator 를 사용하여 Kubernetes 의 컨테이너에 배포된 리소스로 MongoDB Ops Manager를 실행할 수 있습니다.

다음 방법 중 하나로 MongoDB Ops Manager 리소스를 배포할 수 있습니다.

  • 단일 Kubernetes 클러스터 모드. 단일 MongoDB Ops Manager 인스턴스를 배포하여 리소스의 단일 클러스터 Kubernetes 배포를 지원할 수 MongoDB 있습니다.

  • 다중 Kubernetes 클러스터 모드. 여러 Kubernetes 클러스터에 여러 MongoDB Ops Manager 및 애플리케이션 데이터베이스 인스턴스를 배포할 수 있습니다. 이 모드에서 Ops Manager 리소스의 멀티 클러스터는 여러 Kubernetes 클러스터에서 MongoDB Ops Manager 애플리케이션 및 애플리케이션 데이터베이스의 배포를 지원합니다.

단일 또는 여러 클러스터에 리소스 를 배포 하기 MongoDB Ops Manager Kubernetes 전에 MongoDB Ops Manager 아키텍처 Kubernetes고려 사항 을 검토 하고 전제 조건을 완료합니다.

MongoDB Ops Manager 리소스 아키텍처에 대한 자세한 내용은 다음을 참조하세요.

Kubernetes Kubernetes MongoDB Ops Manager Operator는 MongoDB Ops Manager 애플리케이션 데이터베이스의 민감한 정보를 보호하기 위해 암호화 키 를 생성합니다. Kubernetes Kubernetes Operator는 이 키를 MongoDB Ops Manager MongoDB Ops Manager 리소스 와 동일한 네임스페이스 의 시크릿 에 저장합니다. Kubernetes Operator는 시크릿의 이름을 <om-resource-name>-gen-key 로 지정합니다.

참고

단일 클러스터 Kubernetes 배포에 시크릿이 저장되지 않도록 하려면 모든 시크릿 을 마이그레이션할 수 있습니다. 비밀 저장 도구 에 저장합니다. 여러 Kubernetes 클러스터에 대한 배포는 HashiCorp Vault 와 같은 비밀 저장소 도구에 비밀을 저장하는 것을 지원하지 않습니다. .

MongoDB Ops Manager 리소스를 제거해도 키는 Kubernetes 클러스터의 시크릿에 저장된 상태로 유지됩니다. 애플리케이션 데이터베이스를 영구 볼륨 에 저장한 경우 동일한 Kubernetes 이름으로 다른 MongoDB Ops Manager 리소스를 생성하면 Operator는 시크릿을 재사용합니다. 다른 이름으로 MongoDB Ops Manager 리소스를 생성하는 경우, Kubernetes Operator는 새 시크릿과 애플리케이션 데이터베이스를 생성하며, 이전 시크릿은 재사용되지 않습니다.

Kubernetes 연산자는 Ops Manager 애플리케이션을 지원하는 애플리케이션 데이터베이스를 모니터링하도록 Ops Manager를 자동으로 구성합니다. Kubernetes 연산자는 애플리케이션 데이터베이스 배포를 모니터링할 수 있도록 <ops-manager-deployment-name>-db 이라는 이름의 프로젝트를 생성합니다.

Ops Manager는 애플리케이션 데이터베이스 배포를 모니터링하지만 Ops Manager는 이를 managed하지 않습니다. Ops Manager 애플리케이션에서는 애플리케이션 데이터베이스의 구성을 변경할 수 없습니다.

중요

<ops-manager-deployment-name>-db 프로젝트에 Ops Manager UI에 애플리케이션 데이터베이스의 에이전트가 오래되었다는 경고가 표시될 수 있습니다. 이러한 경고는 무시해도 됩니다.

Kubernetes Operator는 애플리케이션 데이터베이스에서 SCRAM-SHA-256 인증 을 시행합니다.

Kubernetes 연산자는 Ops Manager가 애플리케이션 데이터베이스에 연결하는 데 사용하는 데이터베이스 사용자를 생성합니다. 이 데이터베이스 사용자에게는 다음과 같은 속성이 있습니다.

사용자 이름

mongodb-ops-manager

인증 데이터베이스.

admin

역할

MongoDB Ops Manager 데이터베이스 사용자의 이름과 역할은 수정할 수 없습니다. 데이터베이스 사용자의 비밀번호를 설정하기 위한 시크릿을 생성 합니다. 시크릿을 편집하여 비밀번호를 업데이트합니다. 시크릿을 생성하지 않거나 기존 시크릿을 삭제하지 않으면 Kubernetes Operator가 비밀번호를 생성하여 저장합니다.

비밀 저장소의 다른 옵션에 학습 보려면 비밀 저장 구성 을 참조하세요. 멀티 클러스터 배포는 HashiCorp Vault 에 비밀을 저장하는 것을 지원 하지 않습니다. .

Kubernetes Operator에서는 MongoDB Enterprise 오프라인 배포를 포함한 MongoDB Ops Manager 리소스의 모든 배포를 활성화하기 위해 애플리케이션 데이터베이스 이미지의 버전을 지정해야 합니다.

MongoDB Ops Manager를 배포한 후에는 구성해야 합니다. 일반 절차에는 구성 마법사 를 통해 MongoDB Ops Manager를 설정하는 작업이 포함됩니다. 배포하기 전에 객체 사양에 몇 가지 필수 설정을 설정하면 구성 마법사를 건너뛸 수 있습니다.

Ops Manager 객체 사양의 spec.configuration 블록에서 다음을 수행해야 합니다.

예시

Ops Manager 구성 마법사를 비활성화하려면 spec.configuration 블록에서 다음 설정을 구성합니다.

1spec:
2 configuration:
3 mms.ignoreInitialUiSetup: "true"
4 automation.versions.source: "remote"
5 mms.adminEmailAddr: cloud-manager-support@mongodb.com
6 mms.fromEmailAddr: cloud-manager-support@mongodb.com
7 mms.mail.hostname: email-smtp.us-east-1.amazonaws.com
8 mms.mail.port: "465"
9 mms.mail.ssl: "true"
10 mms.mail.transport: smtp
11 mms.minimumTLSVersion: TLSv1.2
12 mms.replyToEmailAddr: cloud-manager-support@mongodb.com

예시 값을 Ops Manager에서 사용하려는 값으로 바꿉니다.

Kubernetes Operator는 기본적으로 백업 을 활성화합니다. Kubernetes Operator는 StatefulSet 를 배포합니다.백업 데몬 서비스 를 호스팅하는 하나의 파드로 구성된 다음 영구 볼륨 클레임 을 생성합니다.및 영구 볼륨 백업 데몬의 헤드 데이터베이스 . Kubernetes Operator는 MongoDB Ops Manager API 를 사용하여 백업 데몬을 활성화하고 헤드 데이터베이스를 구성합니다.

중요

백업을 구성하려면 oplog 저장소 및 다음 중 하나에 대해 MongoDB 리소스 또는 MongoDBMultiCluster 리소스를 만들어야 합니다.

  • oplog 저장소 또는 S3 oplog 저장소. oplog 저장소와 S3 oplog 저장소를 모두 배포하는 경우 MongoDB Ops Manager는 백업에 사용할 저장소를 무작위로 선택합니다.

  • S3 스냅샷 저장소 또는 블록 저장소 . S3 스냅샷 저장소블록 저장소를 모두 배포하는 경우 MongoDB Ops Manager는 백업에 사용할 스냅샷 저장소를 무작위로 선택합니다.

Ops Manager 리소스는 이러한 백업 리소스를 구성할 때까지 Pending 상태로 유지됩니다.

백업 작업을 암호화 할 수도 있지만 동일한 Kubernetes 연산자 인스턴스가 MongoDBOpsManagerMongoDB 사용자 지정 리소스를 모두 관리하지 않는 배포에는 제한 이 적용됩니다.

oplog 슬라이스를 저장하려면 3명의 멤버로 구성된 복제본 세트를 배포해야 합니다.

Oplog 데이터베이스는 SCRAM 인증 메커니즘만 지원합니다. 다른 인증 메커니즘은 활성화할 수 없습니다.

oplog 데이터베이스에서 SCRAM 인증을 활성화하는 경우 다음을 수행해야 합니다.

  • MongoDB 사용자 리소스를 생성하여 Ops Manager를 oplog 데이터베이스에 연결합니다.

  • Ops Manager 리소스 정의에서 사용자의 name 를 지정합니다.

S3 oplog 저장소를 구성하려면 데이터베이스 Backup Oplog를 저장할 AWS S3 또는 S3 호환 버킷을 생성해야 합니다.

Ops Manager 리소스 정의의 spec.backup.s3OpLogStores.mongodbResourceRef.name 설정을 사용하여 MongoDB 리소스와 MongoDBMultiCluster 리소스 모두에 대해 oplog 저장소를 구성할 수 있습니다.

블록 저장소 를 구성하려면 스냅샷을 저장할 복제본 세트를 배포해야 합니다.

S 스냅샷3 저장소 를 구성하려면 데이터베이스 백업 스냅샷 저장할 Amazon Web Services S3또는 S3호환 버킷을 만들어야 합니다.

기본 구성은 애플리케이션 데이터베이스에 스냅샷 메타데이터를 저장합니다. 스냅샷 메타데이터를 저장하는 복제본 세트를 배포한 다음, Ops Manager 리소스 정의의 spec.backup.s3Stores.mongodbResourceRef.name 설정을 사용하여 구성할 수도 있습니다.

MongoDB 리소스와 MongoDBMultiCluster 리소스 모두에 대해 S3 스냅샷 저장소를 구성할 수 있습니다.

Operator가3 관리하지 않는 추가 S 구성 설정 Kubernetes 은 MongoDB Ops Manager 애플리케이션을 통해 업데이트할 수 있습니다.

백업을 활성화한 후 비활성화하려면 다음을 수행합니다.

  1. MongoDB Ops Manager Kubernetes 객체 spec.backup.enabled 설정 설정을 로 false 설정합니다.

  2. MongoDB Ops Manager 애플리케이션에서 백업을 비활성화합니다 .

  3. 백업 데몬 서비스 StatefulSet 삭제:

    kubectl delete statefulset <metadata.name> -backup-daemon \
    -n <metadata.namespace>

중요

영구 볼륨 클레임영구 볼륨 백업 데몬 서비스 StatefulSet 를 삭제할 때 백업 데몬의 헤드 데이터베이스 에 대한 데이터는 삭제되지 않습니다. . 이러한 Kubernetes 리소스를 삭제하기 전에 저장된 데이터를 검색할 수 있습니다.

영구 볼륨 회수에 대해알아보려면 Kubernetes 문서를 참조하세요.

동일한 Kubernetes 연산자 인스턴스가 MongoDBOpsManager MongoDB 사용자 지정 리소스를 모두 관리 하지 않는 배포의 경우, 다음 절차를 사용하여 Ops Manager에서 KMIP 백업 암호화 클라이언트 설정을 수동으로 구성해야 합니다. Kubernetes 연산자 두 리소스를 모두 관리하는 경우 대신 Ops Manager에 대한 KMIP 백업 암호화 구성 을 참조하세요.

  1. TLS 시크릿을 MongoDBOpsManager 사용자 지정 리소스에 마운트합니다. 예를 들면 다음과 같습니다.

    apiVersion: mongodb.com/v1
    kind: MongoDBOpsManager
    metadata:
    name: ops-manager-pod-spec
    spec:
    < ... omitted ... >
    statefulSet:
    spec:
    template:
    spec:
    volumes:
    - name: kmip-client-test-prefix-mdb-latest-kmip-client
    secretName: test-prefix-mdb-latest-kmip-client
    containers:
    - name: mongodb-ops-manager
    volumeMounts:
    - mountPath: /mongodb-ops-manager/kmip/client/test-prefix-mdb-latest-kmip-client
    name: kmip-client-test-prefix-mdb-latest-kmip-client
    readOnly: true
    ...
  2. KMIP 를 사용하도록 프로젝트 구성하기 의 절차에 따라 MongoDB Ops Manager에서 프로젝트에 대한 KMIP 설정을 구성합니다.

Kubernetes 연산자를 통해 생성된 Ops Manager 인스턴스가 HTTP 대신 HTTPS 를 통해 실행되도록 구성할 수 있습니다.

HTTPS 를 통해 실행되도록 Ops Manager 인스턴스를 구성하려면 다음을 수행합니다.

  1. TLS 인증서와 비공개 키가 포함된 시크릿을 생성합니다.

  2. 이 시크릿을 Ops Manager 구성 객체에 추가합니다.

자세한 지침 은 Ops Manager 리소스 배포를 참조하세요.

중요

기존 배포가 있는 경우 HTTPS 를 활성화한 후 수동으로 다시 시작해야 합니다. 배포를 다시 시작하지 않으려면 managed 리소스를 배포하기 전에 HTTPS 를 구성하세요.

자세한 내용은 배포 후 HTTPS 활성화를 참조하세요.

기본적으로 Kubernetes 연산자는 Kubernetes cluster 외부에서 발생하는 트래픽을 Ops Manager 애플리케이션으로 라우팅하는 Kubernetes 서비스를 생성하지 않습니다.

Ops Manager 애플리케이션에 액세스하려면 다음을 수행합니다.

  • Kubernetes 서비스를 생성하도록 Kubernetes 연산자를 구성합니다.

  • Kubernetes 서비스를 수동으로 생성합니다. MongoDB는 클라우드 공급자가 지원하는 경우 LoadBalancer Kubernetes 서비스를 사용할 것을 권장합니다.

  • OpenShift를 사용하는 경우 route를 사용합니다.

  • Istio와 같은 타사 서비스를 사용합니다.

가장 간단한 방법은 외부 트래픽을 MongoDB Ops Manager 애플리케이션으로 라우팅하는 Kubernetes 서비스를 생성하도록 Kubernetes Operator를 구성하는 것입니다. MongoDB Ops Manager 배포 절차에서는 객체 에 다음 설정을 추가하도록 안내합니다.Kubernetes 서비스를 생성하도록 Operator를 구성하는 사양입니다.

또한 여러 Kubernetes 클러스터에 대한 배포의 경우 네트워킹, 로드 밸런싱, 서비스 메시를 참조하세요.

환경에서 클러스터의 Kubernetes 호스트에 인터넷 액세스 권한을 부여할 수 없는 경우, Operator를 사용하여 단일 MongoDB Ops Manager 클러스터가 로컬 또는 원격 모드에서 작동하도록 구성할 수 있습니다.Kubernetes 이러한 모드에서 백업 데몬과 관리되는 MongoDB 리소스는 인터넷이 아닌 MongoDB Ops Manager에서 설치 아카이브를 다운로드합니다.

Kubernetes 연산자로 Ops Manager를 배포하면 Ops Manager가 배포된 MongoDB 데이터베이스 리소스를 managed합니다.

  • Ops Manager와 동일한 Kubernetes cluster로.

  • Kubernetes cluster 외부.

Ops Manager가 Ops Manager와 다른 Kubernetes cluster 또는 Kubernetes cluster 외부에 배포된 MongoDB database 리소스를 managed하는 경우, 다음을 수행해야 합니다.

  1. Ops Manager 리소스 사양의 spec.configurationmms.centralUrl 설정을 추가합니다.

    Ops Manager가 Kubernetes cluster 외부에 노출되는 URL로 값을 설정합니다.

    spec:
    configuration:
    mms.centralUrl: https://a9a8f8566e0094380b5c257746627b82-1037623671.us-east-1.elb.example.com:8080/
  2. Kubernetes Operator를 사용하여 배포한 Kubernetes cluster 내부의 모든 MongoDB database 리소스에서 참고 하는 ConfigMap을 업데이트합니다 .

    data.baseUrl 를 Ops Manager 리소스 사양 spec.configuration.mms.centralUrl 설정과 동일한 값으로 설정합니다.

    중요

    MongoDB database 여기에는 oplog 및 스냅샷 저장소에대해 리소스가 참조하는 ConfigMap이 포함됩니다.

멀티 클러스터 MongoDB Ops Manager 아키텍처를 참조하세요.

Kubernetes에 시크릿이 저장되지 않도록 하려면 모든 Kubernetes 시크릿 을 마이그레이션하세요. Kubernetes Operator가 시크릿 스토리지 도구 에 생성하는 . 멀티 클러스터 배포는 HashiCorp Vault 와 같은 비밀 저장소 도구에 비밀을 저장하는 것을 지원하지 않습니다. .

  1. 아직 실행하지 않았다면 다음 명령을 실행하여 생성한 네임스페이스에서 kubectl 명령을 모두 실행합니다.

    kubectl config set-context $(kubectl config current-context) \
    -n <metadata.namespace>

    참고

    다중 Kubernetes 클러스터 MongoDB deployment에서 MongoDB Ops Manager 리소스를 배포하는 경우:

    • context을 중앙 클러스터의 이름(예: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME")으로 설정합니다.

    • --namespace 를 다중 Kubernetes 클러스터 MongoDB 배포에 사용한 것과 동일한 범위 (예: kubectl config --namespace "mongodb" 로 설정합니다.

  2. MongoDB Enterprise Kubernetes Operator를 설치 합니다.

  3. Ops Manager를 배포하려는 호스트의 메모리가 최소 5GB인지 확인합니다.

  1. Kubernetes 시크릿 만들기 동일한 네임스페이스 에 있는 관리자의 경우 MongoDB Ops Manager 리소스로 사용합니다. 다중 MongoDB Kubernetes 클러스터 배포에 MongoDB Ops Manager를 배포하는 경우 동일한 네임스페이스 MongoDB 를 사용합니다. 다중 Kubernetes 클러스터배포 범위에 대해 설정한 값입니다.

    HashiCorp Vault 를 사용하는 경우 대신 볼트 시크릿을 생성 할 수 있습니다.

    시크릿 스토리지 옵션에 대한 자세한 내용은 시크릿 스토리지 구성을 참조하세요.

    MongoDB Ops Manager 리소스를 배포하면 MongoDB Ops Manager는 이러한 자격 증명을 가진 사용자를 생성하고 이 사용자에게 Global Owner 역할을 부여합니다. 이 자격 증명을 사용하여 MongoDB Ops Manager에 처음 로그인합니다. MongoDB Ops Manager를 배포한 후에는 비밀번호를 변경하거나 이 시크릿을 제거하세요.

    참고

    관리자의 비밀번호는 MongoDB Ops Manager 비밀번호 복잡성 요구 사항을 준수해야 합니다.

    kubectl create secret generic <adminusercredentials> \
    --from-literal=Username="<username>" \
    --from-literal=Password="<password>" \
    --from-literal=FirstName="<firstname>" \
    --from-literal=LastName="<lastname>"
  1. (선택 사항) MongoDB Ops Manager 데이터베이스 사용자의 비밀번호를 설정하려면 시크릿 을 동일한 네임스페이스 에서 MongoDB Ops Manager 리소스로 사용합니다.

    HashiCorp Vault 를 사용하는 경우 대신 볼트 시크릿을 생성 할 수 있습니다.

    Kubernetes Operator는 MongoDB Ops Manager가 Ops Manager Application Database 에 연결하는 데 사용하는 데이터베이스 사용자를 생성합니다. 다음 명령을 호출하여 시크릿을 생성하여 이 데이터베이스 사용자의 비밀번호를 설정할 수 있습니다.

    kubectl create secret generic <om-db-user-secret-name> \
    --from-literal=password="<om-db-user-password>"

    참고

    Ops Manager 데이터베이스 사용자에 대한 암호를 생성하기로 선택한 경우 Ops Manager 리소스 정의에 암호의 name 를 지정해야 합니다. 기본적으로 Kubernetes 연산자는 password 키에서 비밀번호 값을 찾습니다. 비밀번호 값을 다른 키에 저장한 경우 Ops Manager 리소스 정의에서 해당 key 이름도 지정해야 합니다.

    시크릿을 생성하지 않으면 Kubernetes Operator가 자동으로 비밀번호를 생성하여 내부에 저장합니다. 자세한 내용은 인증을 참조하세요.

  2. (선택 사항). S 스냅샷3 저장소에 대한 백업을 구성하려면 시크릿 을 생성하세요. MongoDB Ops Manager 리소스와 동일한 네임스페이스에 있습니다.

    HashiCorp Vault 를 사용하는 경우 대신 볼트 시크릿을 생성 할 수 있습니다.

    이 비밀은 Kubernetes Operator가 Ops Manager를 AWS S3 또는 S3 호환 버킷에 연결할 수 있도록 S3 자격 증명을 저장합니다. 시크릿에는 다음과 같은 키-값 쌍이 포함되어야 합니다.

    accessKey

    S3 또는 S3 호환 버킷을 소유한 AWS 사용자의 고유 식별자입니다.

    secretKey

    S3 또는 S3 호환 버킷을 소유한 Amazon Web Services사용자의 비밀 키입니다.

    시크릿을 생성하려면 다음 명령을 호출합니다.

    kubectl create secret generic <my-aws-s3-credentials> \
    --from-literal=accessKey="<AKIAIOSFODNN7EXAMPLE>" \
    --from-literal=secretKey="<wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY>"

    S3 스냅샷 스토리지 관리에 대해 자세히 알아보려면 전제 조건을 참조하세요.

돌아가기

성능