문서 메뉴

문서 홈MongoDB Enterprise Kubernetes 연산자

Ops Manager 리소스 계획하기

이 페이지의 내용

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

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

Ops Manager 리소스를 배포하기 전에 고려 사항 을 읽고 필수 구성 요소를 완료해야 합니다.

Ops Manager 리소스 아키텍처에 대한 자세한 내용 은 Kubernetes의 Ops Manager 아키텍처를 참조하세요.

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

참고

Kubernetes에 시크릿을 저장하지 않으려면 모든 시크릿 시크릿 저장 도구에 마이그레이션합니다.

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

  • MongoDB의 단일 Kubernetes cluster 배포에서 Kubernetes Operator를 통해 Ops Manager 인스턴스를 생성하면 Ops Manager 애플리케이션 데이터베이스복제본 세트 로 배포됩니다. 애플리케이션 데이터베이스를 독립형 데이터베이스 또는 cluster 로 구성할 수 없습니다. 애플리케이션 데이터베이스의 성능 또는 크기 요구 사항에 대한 우려 사항이 있는 경우 MongoDB 지원팀 에 문의하세요.

  • 다중 Kubernetes 클러스터 배포에서 Kubernetes 연산자를 통해 Ops Manager 인스턴스를 생성하는 경우, Kubernetes 연산자는 여러 멤버 클러스터에서 Ops Manager 애플리케이션 데이터베이스 를 구성할 수 있습니다.

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
역할

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

시크릿 스토리지에 대한 다른 옵션에 대해 알아보려면 시크릿 스토리지 구성을 참조하세요.

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

Ops Manager를 배포한 후에는 구성해야 합니다. 일반 절차에는 구성 마법사 를 통해 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 연산자가 배포하는 StatefulSet 백업 디먼 를 호스팅하는 하나의 파드로 구성된 다음 영구 볼륨 클레임 을 생성합니다. 및 영구 볼륨 백업 디먼의 헤드 데이터베이스 Kubernetes 연산자는 Ops Manager API 를 사용하여 백업 디먼을 활성화하고 헤드 데이터베이스를 구성합니다.

중요

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

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

  • S3 스냅샷 저장소 또는 블록 저장소. S3 스냅샷 저장소블록 저장소를 모두 배포하는 경우 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 저장소를 구성할 수 있습니다.

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

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

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

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

Kubernetes 연산자가 Ops Manager 애플리케이션을 통해 managed하지 않는 추가 S3 구성 설정 을 업데이트할 수 있습니다.

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

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

  2. 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 를 사용하도록 프로젝트 구성의 절차에 따라 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와 같은 타사 서비스를 사용합니다.

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

환경에서 Kubernetes cluster의 호스트에 인터넷 액세스 권한을 부여할 수 없는 경우 Kubernetes 연산자를 사용하여 로컬 또는 원격 모드에서 작동하도록 Ops Manager를 구성할 수 있습니다. 이러한 모드에서 백업 디먼과 managed 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 설정과 동일한 값으로 설정합니다.

중앙 cluster에 Ops Manager 인스턴스를 배포하고 연결하려면 다음 절차를 따르세요.

이러한 절차는 다음과 같은 예외를 제외하고 Kubernetes Operator와 함께 배포된 단일 cluster에 대한 절차와 동일합니다.

  • 컨텍스트와 네임스페이스를 설정합니다.

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

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

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

  • Ops Manager에 대한 외부 연결을 구성합니다.

    다중 Kubernetes cluster 배포에서 중앙 cluster의 Ops Manager 리소스 배포에 노드 cluster를 연결하려면 다음 방법 중 하나를 사용합니다.

    • spec.externalConnectivitytrue 으로 설정하고 그 안에 Ops Manager 포트를 지정합니다. ops-manager-external.yaml 사용 예제 스크립트를 필요에 맞게 수정하고 구성을 적용합니다. 예를 들어 다음을 실행합니다.

      kubectl apply \
      --context "$MDB_CENTRAL_CLUSTER_FULL_NAME" \
      --namespace "mongodb" \
      -f https://raw.githubusercontent.com/mongodb/mongodb-enterprise-kubernetes/master/samples/ops-manager/ops-manager-external.yaml
    • 중앙 cluster와 모든 멤버 cluster를 동일한 서비스 격자에 추가합니다. 서비스 메시는 중앙 및 모든 멤버 cluster에서 Ops Manager 인스턴스로의 통신을 설정합니다. 자세히 알아보려면 멀티-Kubernetes-cluster 빠른 시작 절차 및 Istio의 istio-injection=enabled 레이블을 참고하는 단계를 참고하세요. 자동 사이드카 삽입 도 참조하세요. Istio 문서에 있습니다.

  • cluster에 Ops Manager와 애플리케이션 데이터베이스를 배포하세요.

    단일 Kubernetes 클러스터와 동일한 절차를 사용하여 중앙 클러스터에만 Ops Manager 및 애플리케이션 데이터베이스를 배포하도록 선택할 수 있습니다. 자세한 내용 은 TLS 암호화를 사용하여 중앙 cluster에 Ops Manager 인스턴스 배포를 참조하세요.

  • 중앙 cluster에 Ops Manager를 배포하고 선택한 member cluster에 애플리케이션 데이터베이스를 배포합니다.

    중앙 cluster에 Ops Manager를 배포하고 선택한 멤버 cluster의 하위 집합에 애플리케이션 데이터베이스를 배포하도록 선택하여 Ops Manager에서 애플리케이션 데이터베이스의 복원력과 가용성을 높일 수 있습니다. Ops Manager CRD에서 다음 설정을 구성합니다.

    • topology 를 사용하여 MultiCluster 값을 지정합니다.

    • clusterSpecList 를 지정하고 애플리케이션 데이터베이스를 배포하려는 선택한 각 Kubernetes cluster의 { clusterName }와 각 Kubernetes cluster 내 members (MongoDB) 수를 포함합니다.

    참고

    다중 Kubernetes 클러스터 배포에서 선택한 멤버 클러스터에 애플리케이션 데이터베이스를 배포하는 경우 중앙 클러스터와 멤버 클러스터를 동일한 서비스메시 구성에 포함해야 합니다. 이를 통해 Ops Manager에서 애플리케이션 데이터베이스로의 BI 통신이 가능해집니다.

    자세히 알아보려면 Ops Manager 를 참조하고 다중 Kubernetes cluster 배포 예시를 검토하고topologyMultiCluster 를 지정 .

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

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

    참고

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

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

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

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

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

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

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

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

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

    참고

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

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

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

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

    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 연산자가 자동으로 비밀번호를 생성하여 내부에 저장합니다. 자세한 내용은 인증을 참조하세요.

  2. (선택 사항). S3 스냅샷 저장소에 대한 백업을 구성하려면 비밀 번호 를 만듭니다. 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 스냅샷 스토리지 관리에 대해 자세히 알아보려면 필수 구성 요소를 참조하세요.

←  Kubernetes의 Ops Manager 아키텍처Ops Manager 리소스 배포 →