Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 演算子
/

MongoDB Ops Managerのリソースを計画する

項目一覧

  • アーキテクチャ
  • Considerations
  • 暗号化のキー
  • アプリケーション データベース
  • 効率化された構成
  • バックアップ
  • HTTPS 経由で実行するようにMongoDB Ops Managerを構成する
  • MongoDB Ops Manager Application Access
  • リモート モードまたはローカル モードでのMongoDB Ops Managerの配置
  • 外部 MongoDB 配置の管理
  • マルチクラスターでのMongoDB Ops Managerの配置
  • シークレット ストレージ
  • 前提条件

MongoDB MongoDB Ops Managerは、 MongoDBの配置を管理、バックアップ、モニターするエンタープライズ アプリケーションです。 MongoDB Ops Managerを使用すると、 MongoDBのスケーリングとアップグレード、クエリの最適化、ポイントインタイム復元の実行、パフォーマンス アラートの受信、配置のモニターが可能です。 MongoDB Ops Managerとその基礎となるデータベースを管理および維持するには、 MongoDB Enterprise Kubernetes Operatorを使用して、 MongoDB Ops ManagerをKubernetesのコンテナに配置されたリソースとして実行します。

MongoDB Ops Managerのリソースは、次のいずれかの方法で配置できます。

  • 単一 Kubernetes クラスター モード。 MongoDB Ops ManagerKubernetes単一のMongoDB インスタンスを配置して、 リソースの単一の クラスター配置をサポートできます。

  • 複数の Kubernetes クラスター モード。 複数のMongoDB Ops Managerとアプリケーション データベースのインスタンスを複数のKubernetesクラスターに配置できます。 このモードでは、{0Ops Manager リソースのマルチクラスターは、複数のMongoDB Ops Manager Kubernetesクラスターでの アプリケーションと アプリケーション データベースの配置をサポートします。

MongoDB Ops Manager単一または複数のKubernetes クラスターに リソースを配置する前に、MongoDB Ops Manager Kubernetes アーキテクチャ と 考慮事項 を確認し、 前提条件を完了してください。

MongoDB Ops Managerリソース アーキテクチャの詳細については、以下を参照してください。

Kubernetes Operator は、 Ops Manager Application Database内の機密情報を保護するための暗号化のキーを生成します。 Kubernetes Operator はこのキーを シークレット に保存します。 MongoDB Ops Manager リソースと同じ名前空間内にある。Kubernetes Operator はシークレットに<om-resource-name>-gen-keyという名前を付けます。

注意

単一クラスターの Kubernetes 配置でシークレットが保存されないようにするには、すべての シークレット を移行します シークレット ストレージ ツール に渡す追加オプション。複数の Kubernetes クラスターでの配置では、 HashiCorp Vault などのシークレット ストレージ ツールへのシークレットの保存はサポートされていません。 。

MongoDB Ops Managerリソースを削除しても、キーはKubernetesクラスターの シークレット に保存されたままになります。 アプリケーション データベースを 永続的なボリューム に保存した場合 と同じ名前で別の MongoDB Ops Managerリソースを作成すると、Kubernetes Operator はシークレットを再利用します。別の名前でMongoDB Ops Managerリソースを作成すると、 Kubernetes Operator によって新しいシークレットとアプリケーション データベースが作成され、古いシークレットは再利用されません。

Kubernetes Operator は、 MongoDB Ops Managerアプリケーションをサポートするアプリケーションデータベースを監視するようにMongoDB Ops Managerを自動的に構成します。 Kubernetes Operator は、アプリケーション データベースの配置を監視するための<ops-manager-deployment-name>-dbという名前のプロジェクトを作成します。

MongoDB Ops Managerはアプリケーション データベースの配置を監視しますが、 MongoDB Ops Managerはそれを管理しません。 MongoDB Ops Manager Application では、アプリケーション データベースの構成を変更できません。

重要

<ops-manager-deployment-name>-dbプロジェクトで、アプリケーション データベースのエージェントが古くなっていることを示す警告が MongoDB Ops Manager UI に表示される場合がある。 これらの警告を無視しても問題ありません。

Kubernetes Operator は、アプリケーション データベースに対してSCRAM-SHA-256認証を強制します。

Kubernetes Operator は、 MongoDB Ops Managerがアプリケーションデータベースに接続するために使用するデータベースユーザーを作成します。 このデータベースユーザーには次の属性があります。

ユーザー名
mongodb-ops-manager
認証データベース
admin
ロール

MongoDB Ops Manager データベースユーザーの名前とロールを変更することはできません。 データベースユーザーのパスワードを設定するためのシークレットを作成します。 シークレットを編集してパスワードを更新します。 シークレットを作成したり、既存のシークレットを削除したりしない場合、Kubernetes Operator はパスワードを生成し、それを保存します。

シークレット ストレージのその他のオプションの詳細については、「シークレット ストレージの構成 」を参照してください。 マルチクラスター配置では、 HashiCorp Vault でのシークレットの保存はサポートされていません 。

KubernetesOperator では、オフライン配置を含むMongoDB Enterprise リソースの任意の配置を有効にするには、 アプリケーション データベース イメージに バージョンMongoDB Ops Manager を指定する必要があります。

MongoDB Ops Managerを配置した後、それを構成する必要があります。 通常の手順では、MongoDB Ops Manager 構成ウィザード を使用して を設定します。配置する前にオブジェクト仕様にいくつかの重要な設定を設定すると、構成ウィザードをバイパスできます。

spec.configurationMongoDB Ops Managerオブジェクト仕様の ブロックでは、次の操作を行う必要があります。

MongoDB 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

サンプル値を、MongoDB Ops Manager で使用する値に置き換えます。

Kubernetes Operator はデフォルトでバックアップを有効にします。 Kubernetes 演算子は Atlas App Services をステートメントを配置します。 バックアップデーモン サービス をホストするために 1 つのポッドで構成され、 永続的なボリューム要求 を作成します および 永続的なボリューム バックアップデーモンの ヘッドデータベース 用。Kubernetes Operator は、 MongoDB Ops Manager APIを使用して バックアップデーモン を有効にし、ヘッドデータベースを構成します。

重要

バックアップを構成するには、 oplog ストアおよび次のいずれかに対して、 MongoDBリソースまたはMongoDBMultiClusterリソースを作成する必要があります。

  • oplog ストアまたは S 3 oplog ストア。 oplogストアとS3 oplogストアの両方を配置する場合、 MongoDB Ops Managerはバックアップに使用するものをランダムに選択します。

  • S3 スナップショット ストアまたはブロックストア 。 S3スナップショット ストアブロックストア の両方を配置する場合、 MongoDB Ops Managerはバックアップに使用するものをランダムに選択します。

これらのバックアップ リソースを構成するまで、 MongoDB Ops Managerリソースは Pending 状態のままになります。

バックアップジョブを暗号化 することもできますが、同じ Kubernetes Operator インスタンスが MongoDPOsManager と MongoDB カスタム リソースの両方を管理していない配置には 制限が 適用されます。

oplog スライスを保存するには、3 つのノードのレプリカセットを配置する必要があります。

oplogデータベースは SCRAM 認証メカニズムのみをサポートしています。 他の認証メカニズムを有効にすることはできません。

oplog データベースでSCRAM認証を有効にする場合は、次の操作を行う必要があります。

  • MongoDBMongoDB Ops Managerをoplog データベースに接続するための ユーザー リソースを作成します。

  • nameのリソース定義でユーザーのMongoDB Ops Manager を指定します。

S3oplog ストアを構成するには、データベースバックアップAmazon Web Services を保存するための S3 または S3 と互換性のあるバケットを作成する必要があります。oplog

のリソース定義で 設定を使用して、 oplogMongoDBリソースとMongoDBMultiClusterspec.backup.s3OpLogStores.mongodbResourceRef.name リソースの両方に ストアを構成できます。MongoDB Ops Manager

ブロックストアを構成するには、スナップショットを保存するためのレプリカセットを配置する必要があります。

S3スナップショットストアを設定するには、データベースバックアップ スナップショットを保存するためのAmazon Web Services S3またはS3 と互換性のあるバケットを作成する必要があります

デフォルト構成では、スナップショットのメタデータは アプリケーション データベース に保存されます。 また、レプリカセットを配置してスナップショット メタデータを保存し、spec.backup.s3Stores.mongodbResourceRef.name MongoDB Ops Managerのリソース定義で 設定を使用して構成することもできます。

MongoDBリソースとMongoDBMultiClusterリソースの両方でS3スナップショット ストアを構成できます。

Operator が管理しない追加の S3 構成設定 KubernetesMongoDB Ops Managerは、 アプリケーションを通じて更新できます。

バックアップを有効にした後に無効にするには、以下の手順を行います。

  1. MongoDB Ops ManagerKubernetesオブジェクトspec.backup.enabled の設定 の設定をfalse に設定する。

  2. アプリケーションでの バックアップを無効 にします。MongoDB Ops Manager

  3. バックアップデーモンのサービス ステートメント を削除する :

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

重要

永続的なボリューム要求 および 永続的なボリューム バックアップデーモン サービス の ステートメント を削除しても、バックアップデーモンの ヘッドデータベース 用の は削除されません。 。これらの Kubernetes リソースを削除する前に、保存されたデータを検索できます。

永続的なボリューム の再利用の詳細 については、 Kubernetes のドキュメント を参照してください。

同じKubernetes Operator インスタンスが MongoDBOpsManager と カスタムMongoDB リソースの両方を管理して いないMongoDB Ops Manager 配置の場合は、次の手順を使用して で KMIP バックアップ暗号化クライアント設定を手動で構成する必要があります。Kubernetes Operator両方のリソースを管理している場合は、代わりに「 MongoDB 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 を使用するようにプロジェクトを構成する 」の手順に従って、 でプロジェクトの KMIP 設定を構成します 。MongoDB Ops Manager

Operator MongoDB Ops Managerを通じて作成されたKubernetes インスタンスは、 ではなく HTTPHTTPS 経由 で実行するように構成できます。

MongoDB Ops Manager インスタンスをHTTPS 経由で実行するように構成するには、次の手順に従います。

  1. TLS証明書と秘密キーを含むシークレットを作成します。

  2. このシークレットを MongoDB Ops Manager 構成オブジェクト に追加します。

詳細な手順については、「 MongoDB Ops Managerリソースの配置 」を参照してください。

重要

既存の配置がある場合は、 HTTPSを有効にした後、それらを手動で再起動する必要があります。 配置が再起動しないようにするには、管理対象リソースを配置する前にHTTPSを構成します。

詳細については、「デプロイメント後に HTTPS が有効になる 」を参照してください。

デフォルトでは、Kubernetes OperatorKubernetes は、Kubernetes クラスターの外部から発生したトラフィックをMongoDB Ops Manager アプリケーションにルーティングする サービスを作成しません。

MongoDB Ops Managerアプリケーションにアクセスするには、次の方法を実行します。

  • Kubernetes Operator を構成して Kubernetes サービスを作成します。

  • Kubernetes サービスを手動で作成します。 MongoDB では、クラウドプロバイダーがサポートしている場合、 LoadBalancer Kubernetes サービスを使用することを推奨します。

  • OpenShift を使用している場合は、 ルートを使用します。

  • Istio などのサードパーティ サービスを使用します。

最も単純な方法は、外部トラフィックをKubernetes Kubernetesアプリケーションにルーティングする サービスを作成するように OperatorMongoDB Ops Manager を構成することです。MongoDB Ops Managerの配置手順では、 オブジェクト に次の設定を追加するように指示しますKubernetes Operator がサービスを作成するように構成する仕様。

さらに、複数の Kubernetes クラスターへの配置については、「ネットワーク、ロード バランシング、サービス メッシュ 」を参照してください。

Kubernetes Operator を使用して、単一のMongoDB Ops Managerクラスターをローカルモードまたはリモートモードで動作するようにKubernetesできます。 これらのモードでは、バックアップデーモンと管理対象のMongoDBリソースは、インターネットからではなくMongoDB Ops Managerからインストール アーカイブをダウンロードします。

  • リモートMongoDB Ops Manager モード を使用するように MongoDB Ops ManagerHTTPリソースを構成しますKubernetes は、 クラスターに配置されたウェブ サーバーまたは S3 互換のファイル ストア上の エンドポイントからインストール アーカイブを読み取ります。

  • ローカル MongoDB Ops Managerモード MongoDB Ops Managerを使用するように リソースを構成しますMongoDB Ops Manager 。MongoDB は、 永続的なボリューム からインストール アーカイブを読み取ります MongoDB Ops Manager Atlas Triggers は、 ステートメントを使用して作成します。

Operator を使用してMongoDB Ops Manager を配置すると、KubernetesMongoDB Ops Manager は配置されたMongoDB データベース リソースを管理できます。

  • Kubernetesと同じMongoDB Ops Manager クラスターへの接続。

  • Kubernetes クラスターの外部。

が、MongoDB Ops Manager ManagerMongoDB とは異なる クラスター、または クラスターの外部に配置された データベースKubernetes MongoDB Ops ManagerKubernetesリソースを管理する場合は、次を行う必要があります。

  1. MongoDB Ops Managerリソース仕様で mms.centralUrl 設定を spec.configuration に追加します。

    URLMongoDB Ops ManagerがKubernetes クラスターの外部で公開される に値を設定します。

    spec:
    configuration:
    mms.centralUrl: https://a9a8f8566e0094380b5c257746627b82-1037623671.us-east-1.elb.example.com:8080/
  2. Kubernetes Operator を使用して配置した Kubernetes クラスター内のすべての MongoDB database リソースが参照するConfigMaps を更新します。

    リソース仕様の data.baseUrl設定と同じ値にspec.configuration.mms.centralUrl を設定します。MongoDB Ops Manager

マルチクラスターMongoDB Ops Managerのアーキテクチャ 」を参照してください。

Kubernetes にシークレットが保存されないようにするには、すべての Kubernetes シークレット を移行してください Kubernetes Operator が シークレット ストレージ ツール に作成するマルチクラスター配置では、 HashiCorp Vault などのシークレット ストレージ ツールにシークレットを保存することはできません。 。

  1. まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべてのkubectlコマンドを実行します。

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

    注意

    MongoDB Ops Manager リソースを複数の Kubernetes クラスター MongoDB デプロイメントに配置している場合、次の手順に従います。

    • contextを中央クラスターの名前に設定します(例: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"

    • MongoDB のマルチ配置に使用したのと同じスコープ(例: kubectl config --namespace "mongodb"--namespaceを設定します。

  2. をインストール MongoDBEnterprise Kubernetes Operatorします。

  3. MongoDB Ops Managerを配置するホストに少なくとも 5 ギガバイトのメモリがあることを確認します。

  1. Kubernetes シークレット の作成 同じ 名前空間 の管理者ユーザーの場合 MongoDB Ops Manager リソースとして。MongoDB Ops Manager を複数の Kubernetes クラスター MongoDB 配置に配置している場合は、同じ 名前空間 を使用します マルチ Kubernetes クラスター MongoDB 配置 スコープに設定した

    HashiCorp Vault を使用している場合 シークレット ストレージ ツール として使用する場合は、代わりに Vault シークレットを作成 できます。

    シークレット ストレージのオプションの詳細については、「シークレット ストレージの構成 」を参照してください。

    MongoDB Ops Managerリソースを配置すると、MongoDB 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 を使用している場合 シークレット ストレージ ツール として使用する場合は、代わりに 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>"

    注意

    MongoDB Ops Manager データベース ユーザーのシークレットを作成する場合は、MongoDB Ops Manager リソース定義でシークレットのnameを指定する必要があります。 デフォルトでは、Kubernetes Operator はpasswordキー内のパスワード値を検索します。 If you stored the password value in a different key, you must also specify that key name in the Ops Manager resource definition.

    シークレットを作成しない場合、Kubernetes Operator によってパスワードが自動的に生成され、それが内部的に保存されます。 詳細については、「認証 」を参照してください。

  2. 任意)。 S3 スナップショット ストアへのバックアップを構成するには、 シークレット を作成します MongoDB Ops Manager リソースと同じ名前空間内にある。

    HashiCorp Vault を使用している場合 シークレット ストレージ ツール として使用する場合は、代わりに Vault シークレットを作成 できます。

    このシークレットはS3認証情報を保存し、 Kubernetes Operator はMongoDB Ops ManagerをAmazon Web Services S3またはS3互換バケットに接続できます。 シークレットには、次のキーと値のペアが含まれている必要があります。

    キー
    accessKey
    Amazon Web ServicesS3 または S3 互換バケットを所有する ユーザーの一意の識別子。
    secretKey
    Amazon Web ServicesS3 または S3 互換バケットを所有する ユーザーの秘密キー。

    シークレットを作成するには、次のコマンドを呼び出します。

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

    S 3スナップショット ストレージの管理の詳細については、前提条件 を参照してください。

戻る

パフォーマンス