コンテナのイメージ
Kubernetes Operator をインストールすると、Qui.ioコンテナレジストリからイメージがプルされます。 Kubernetes Operator のイメージは、 Red Hat UBI オペレーティング8 システムに基づいています。MongoDBは、最新のオペレーティング システムとライブラリの更新をサポートするためにKubernetes Operator イメージを毎日再構築します。
公式イメージには、次の利点があります。
最新のアップストリームの脆弱性修正のために毎日再ビルドされます。
MongoDB は、それらをテスト、維持、サポートします。
各イメージで利用可能なすべてのバージョンを表示するには、次のリンクを参照してください。
イメージ名 | 説明 |
---|---|
MongoDB Agent のイメージ。 | |
静的コンテナとアプリケーション データベースに使用される Enterprise MongoDBイメージ。 | |
| |
非静的コンテナに使用されるMongoDB Database 環境イメージ。静的コンテナと非静的コンテナの詳細については、「 静的コンテナ(パブリック プレビュー) 」を参照してください。 | |
| |
MongoDB Ops Managerのイメージ。 | |
|
静的コンテナ(パブリック プレビュー)
静的コンテナは、非静的コンテナよりも安全で簡単です。 静的コンテナは実行時に不変です。 さらに、
実行中は、ネットワーク接続を介してバイナリをダウンロードしたり、スクリプトやその他のユーティリティを実行したりすることはできません。 静的コンテナはランタイム構成ファイルのみをダウンロードできます。
静的コンテナは実行中、ストレージ ボリュームのマウント以外のファイルを変更することはできません。
静的コンテナでは、コンテナのセキュリティ脆弱性についてコンテナをスキャンする必要はありません。これは、コンテナのセキュリティスキャンが必要な非静的コンテナとは対照的です。 静的コンテナを使用する場合、セキュリティ スキャンはコンテナ イメージ自体に対してのみ実行できますが、そのコンテナに対しては実行できません。
静的コンテナでは、MongoDB または別のMongoDB Ops Manager HTTPS サーバーをホストするサーバーで バイナリをホストする必要はありません。
静的コンテナでは大量の
CMD
スクリプトを実行できません。initContainer
を使用して静的コンテナ間でファイルをコピーすることはできません。
注意
静的コンテナとして配置する場合、 Kubernetes Operator の配置は、mongodb-agent
コンテナと mongodb-enterprise-server
コンテナの 2 つのコンテナで構成されます。MongoDBデータベースのカスタムリソースは、静的コンテナ配置で mongod
プロセスを実行する mongodb-agent
コンテナからリソース制限の定義を継承します。MongoDBデータベースリソースのリソース制限を変更するには、mongodb-agent
コンテナに必要なリソース制限を指定する必要があります。
MongoDBEnterprise Kubernetes Operator1.25以降では、実行時にMongoDB Cloud ManagerまたはMongoDB Ops Manager またはインターネットから バイナリをダウンロードする既存の非静的コンテナの代わりに、静的コンテナのパブリック プレビューを使用できます。すべてまたは個々の MongoDB 配置で静的コンテナを有効または無効にするには、次の手順を使用します。
静的コンテナは mongodb-enterprise-server のイメージを使用します Qui.io リポジトリを参照してください。
アーキテクチャ
静的コンテナと非静的コンテナのアーキテクチャは大きく異なるため、一方からもう一方の要素に移行するにはいくつかの手順が必要です。 詳細については、「静的コンテナへの移行 」および「非静的コンテナへの移行 」を参照してください。
非静的コンテナのアーキテクチャ
デフォルトの非静的コンテナMongoDB Agent アーキテクチャでは、空の shellmongod
コンテナをブートストラップすること、mongosh
をダウンロードして起動すること、によりCloud Manager または から とMongoDB Ops Manager のバイナリをダウンロードすることを前提としています。
静的コンテナ アーキテクチャ
静的コンテナ アーキテクチャは、Kubernetes の 共有名前空間機能 を使用します MongoDB Agent を別のプロセスとして実行することで、完全なmongod
ライフサイクルを制御し、ネットワーク経由でのファイルのダウンロードを回避できます。
静的コンテナは、非静的コンテナよりも安全で簡単です。 静的コンテナは実行時に不変です。 さらに、
実行中は、ネットワーク接続を介してバイナリをダウンロードしたり、スクリプトやその他のユーティリティを実行したりすることはできません。 静的コンテナはランタイム構成ファイルのみをダウンロードできます。
静的コンテナは実行中、ストレージ ボリュームのマウント以外のファイルを変更することはできません。
静的コンテナでは、コンテナのセキュリティ脆弱性についてコンテナをスキャンする必要はありません。これは、コンテナのセキュリティスキャンが必要な非静的コンテナとは対照的です。 静的コンテナを使用する場合、セキュリティ スキャンはコンテナ イメージ自体に対してのみ実行できますが、そのコンテナに対しては実行できません。
静的コンテナでは、MongoDB または別のMongoDB Ops Manager HTTPS サーバーをホストするサーバーで バイナリをホストする必要はありません。
静的コンテナでは大量の
CMD
スクリプトを実行できません。initContainer
を使用して静的コンテナ間でファイルをコピーすることはできません。
注意
静的コンテナとして配置する場合、 Kubernetes Operator の配置は、mongodb-agent
コンテナと mongodb-enterprise-server
コンテナの 2 つのコンテナで構成されます。MongoDBデータベースのカスタムリソースは、静的コンテナ配置で mongod
プロセスを実行する mongodb-agent
コンテナからリソース制限の定義を継承します。MongoDBデータベースリソースのリソース制限を変更するには、mongodb-agent
コンテナに必要なリソース制限を指定する必要があります。
制限
静的コンテナを有効にする場合:
バックアップデーモン サービスMongoDB がMongoDB Ops Manager から バイナリをダウンロードしようとしないように、 クエリ可能なバックアップ を 無効 にする 必要があります。これにより、静的コンテナの不変の性質が損なわれます。
MongoDB Ops Managerでは、バージョン 6.0.24 のみ、 7.0.5 、またはそれ以降と互換性があります。 KubernetesOperatorMongoDB Agent は、特定の配置を管理するために、選択した バージョンに基づいて、正しいバージョンのMongoDB Ops Manager コンテナを自動的に使用します。
MongoDB Cloud Manager では、Kubernetes Operator が MongoDB Cloud Manager の
agentVersion
エンドポイントを呼び出されないため、MongoDB Agent バージョンが MongoDB Cloud Manager の最新バージョンとの互換性を失う可能性があります。 MongoDB Agent が MongoDB Cloud Manager で最新の状態になるようにするには、次のいずれかのアクションを実行します。ステートフルセット をオーバーライドして、 MongoDB リソース仕様 で 互換性 のある MongoDB Agent のバージョンを指定する MongoDB Agent のコンテナ イメージ。例:
podSpec: podTemplate: spec: containers: - name: mongodb-agent-ubi Image: 12.0.29.7785-1_1.24.0 Kubernetes Operator を最新バージョンにアップグレードすると、MongoDB Agent が自動的に更新されます。
MongoDB のバージョンをアップグレードすると、最後から最初の順に、すべての ポッドのローリング再起動がトリガーされ、最大でポッドの数まで増加する選挙が発生する可能性があります。 これは、ローリング再起動をtriggerするすべての更新に当てはまります。
MongoDB Agent の ステータスから、MongoDB database のアップグレードが行われたかどうかを判断することはできません。 アップグレード後に Kubernetes がポッドをローテーションすると、MongoDB Agent はヘルス ステータス ファイルを置き換えるため、バージョンの変更が発生したことはヘルス ステータスからは判断できず、現在のヘルス ステータスのみが置き換えられます。
静的コンテナへの移行
非静的コンテナから静的コンテナに移行するには、MongoDB Agent 環境変数を設定し、以下の手順に従って静的コンテナを有効にします。 インストールまたはアップグレード時に静的コンテナを有効にすることもできます。
制限事項 を確認します。
MongoDB Agent イメージの環境変数を設定します。
Kubernetes Operator Helm チャートで、 registry.agentとAgent.nameを定義し、Kubernetes Operator が静的コンテナ用に MongoDB Agent イメージをダウンロードするリポジトリを指定します。
ファイルを保存して適用します。
変更を保存した後、構成を再適用します。
OpenShift なしで Kubernetes を使用している場合は、次を実行します。
kubectl apply -f mongodb-enterprise.yaml
OpenShift で Kubernetes を使用する場合:
oc apply -f mongodb-enterprise-openshift.yaml
helm upgrade enterprise-operator mongodb/enterprise-operator \ --set registry.pullPolicy='IfNotPresent'
これにより、配置内のすべてのポッドのローリング再起動が開始されます。
静的コンテナを有効にします。
以下の適切なタブを選択して、既存の配置を含むすべての MongoDB 配置の静的コンテナを一度に有効にする、または一度に 1 つの配置を有効にします。
Kubernetes Operator の構成ファイルで、 MDB_DEFAULT_ARCHIVECUREまたはオペレーター.mdbDefaultアーキテクチャを設定します からstatic
へのリンク
特定の配置のMongoDB リソース仕様で、 metadata.annotations.mongodb.com/v1.architecture
アノテーションをstatic
に設定します。
ファイルを保存して適用します。
変更を保存した後、構成を再適用します。
OpenShift なしで Kubernetes を使用している場合は、次を実行します。
kubectl apply -f <my-config-file>.yaml
OpenShift で Kubernetes を使用する場合:
oc apply -f <my-config-file>.yaml
helm upgrade enterprise-operator mongodb/enterprise-operator \ --set <setting_1> --set <setting_2> --set operator.mdbDefaultArchitecture="static"
Kubernetes 演算子によるステートメント更新 MongoDB 配置のイメージは、以前は MongoDB Agent と MongoDB database の両方を管理していた単一のコンテナから、MongoDB Agent 用と MongoDB データベース用の 2 つの個別のコンテナを持つ新しい構成に移行します。この更新により、ローリング再起動が開始されます。
非静的コンテナへの移行
静的コンテナから非静的コンテナに移行するには、以下の手順に従って静的コンテナを無効にします。 インストールまたはアップグレード中に静的コンテナを無効にすることもできます。
静的コンテナを無効にします。
既存の配置を含むすべての MongoDB 配置の静的コンテナ、または一度に 1 つの配置を無効にするには、以下の適切なタブを選択します。
Kubernetes Operator の構成ファイルで、 MDB_DEFAULT_ARCHIVECUREまたはオペレーター.mdbDefaultアーキテクチャを設定します からnon-static
へのリンク
特定の配置のMongoDB リソース仕様で、 metadata.annotations.mongodb.com/v1.architecture
アノテーションをnon-static
に設定します。
ファイルを保存して適用します。
変更を保存した後、構成を再適用します。
OpenShift なしで Kubernetes を使用している場合は、次を実行します。
kubectl apply -f <my-config-file>.yaml
OpenShift で Kubernetes を使用する場合:
oc apply -f <my-config-file>.yaml
helm upgrade enterprise-operator mongodb/enterprise-operator \ --set <setting_1> --set <setting_2> --set operator.mdbDefaultArchitecture="non-static"
Kubernetes 演算子へのステートメント MongoDB 配置のイメージを作成し、配置内のすべてのポッドのローリング再起動を開始します。