リモート モードを使用するようにMongoDB Ops Managerリソースを構成する
項目一覧
- 前提条件と考慮事項
- 手順
-
kubectl
をデフォルトで名前空間に設定します。 - Ninx 用の ConfigMap を作成します。
- Kubernetes クラスターに Nginx を配置します。
- Kubernetes サービスを作成して、クラスター内の他のポッドから Ninx にアクセスできるようにします。
- このMongoDB Ops Managerリソースの強調表示されたフィールドをコピーして更新します。
- コピーしたサンプル セクションを既存のMongoDB Ops Managerリソースに貼り付けます。
- MongoDB Ops Manager構成ファイルを保存します。
- MongoDB Ops Manager配置に変更を適用します。
- MongoDB Ops Managerインスタンスのステータスを追跡します。
- MongoDB Database リソースを配置します。
デフォルト構成では、MongoDB Agent の および バックアップデーモンは、MongoDB, Inc. からインターネット経由で MongoDB インストール アーカイブにアクセスします。
MongoDB Ops Managerをリモート モードで実行するように構成すると、バックアップデーモンと管理対象のMongoDBリソースのダウンロード インストールはMongoDB Ops Managerからのみアーカイブされます。これは、ローカル ウェブ サーバーまたは S3 互換ストア上のHTTPエンドポイントへのダウンロード リクエストをプロキシします。 Kubernetesクラスターにデプロイされた
前提条件と考慮事項
手順
次の手順では、Nginx HTTP サーバーを Kubernetes クラスターに配置して MongoDB インストール アーカイブをホストします。
kubectl
を名前空間にデフォルトします。
まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべてのkubectl
コマンドを実行します。
注意
MongoDB Ops Manager リソースを複数の Kubernetes クラスター MongoDB 配置に配置している場合、次の手順に従います。
context
を中央クラスターの名前に設定します(例:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"
。MongoDB のマルチ配置に使用したのと同じスコープ(例:
kubectl config --namespace "mongodb"
に--namespace
を設定します。
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
Ninx 用の ConfigMap を作成します。
このチュートリアルの ConfigMap により、Ngix は次のように構成されます。
Kubernetes クラスター内のノードでポート
80
をリッスンするlocalhost
という名前の HTTP サーバーを実行し、MongoDB Server および MongoDB Database Tools のインストール アーカイブを提供するロケーションに、特定のリソースに対する HTTP リクエストをルーティングします。
次の例の Ninx ConfigMap をテキストエディタに貼り付けます。
1 2 apiVersion: v1 3 kind: ConfigMap 4 metadata: 5 name: nginx-conf 6 data: 7 nginx.conf: | 8 events {} 9 http { 10 server { 11 server_name localhost; 12 listen 80; 13 location /linux/ { 14 alias /mongodb-ops-manager/mongodb-releases/linux/; 15 } 16 location /tools/ { 17 alias /tools/; 18 } 19 } 20 } 21 ... このファイルは、
.yaml
ファイル拡張子で保存します。作成した ConfigMap ファイルで次の
kubectl
コマンドを呼び出して、Ninx ConfigMap を作成します。kubectl apply -f <nginix-configmap>.yaml
Kubernetes クラスターに Nginx を配置します。
このチュートリアルの Ninx リソース構成は次のとおりです。
次の 1 つの Ninx レプリカを配置します:
MongoDB Server および MongoDB Database Tools のインストール アーカイブを保存するためのボリュームマウントを作成し、
初期化コンテナ を定義します
curl
は、 コマンドを使用してインストール アーカイブをダウンロードし、Kubernetes クラスターに配置した MongoDB Database リソースに提供します。
次の例の Ninx リソース構成をテキスト エディターに貼り付けます。
1 2 apiVersion: apps/v1 3 kind: Deployment 4 metadata: 5 name: nginx-deployment 6 spec: 7 replicas: 1 8 selector: 9 matchLabels: 10 app: nginx 11 template: 12 metadata: 13 labels: 14 app: nginx 15 spec: 16 containers: 17 - image: nginx:1.14.2 18 imagePullPolicy: IfNotPresent 19 name: nginx 20 ports: 21 - containerPort: 80 22 volumeMounts: 23 - mountPath: /mongodb-ops-manager/mongodb-releases/linux 24 name: mongodb-versions 25 - mountPath: /tools/db/ 26 name: mongodb-tools 27 - name: nginx-conf 28 mountPath: /etc/nginx/nginx.conf 29 subPath: nginx.conf 30 initContainers: 31 - name: setting-up-rhel-mongodb 32 image: curlimages/curl:latest 33 command: 34 - curl 35 - -L 36 - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz 37 - -o 38 - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz 39 volumeMounts: 40 - name: mongodb-versions 41 mountPath: /mongodb-ops-manager/mongodb-releases/linux 42 - name: setting-up-rhel-mongodb-tools 43 image: curlimages/curl:latest 44 command: 45 - curl 46 - -L 47 - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz 48 - -o 49 - /tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz 50 volumeMounts: 51 - name: mongodb-tools 52 mountPath: /tools/db/ 53 restartPolicy: Always 54 terminationGracePeriodSeconds: 30 55 volumes: 56 - name: mongodb-versions 57 emptyDir: {} 58 - name: mongodb-tools 59 emptyDir: {} 60 - configMap: 61 name: nginx-conf 62 name: nginx-conf 63 ... 例で強調表示された行を変更して、インストールする MongoDB Server のバージョンを指定します。
たとえば、MongoDB バージョン
4.0.2
を別のデータベース バージョンに置き換えるには、次のブロックを更新します。- name: setting-up-rhel-mongodb image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz - -o - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz MongoDB Database Tools のバージョンを変更するには、次のようにブロックを更新します。
- name: setting-up-rhel-mongodb-tools image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz - -o - /tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz - 複数のバージョンを読み込むには、
curl
コマンドを追加します を、Ninx で提供するバージョンごとに適切な initContainer に設定します。
たとえば、MongoDB
6.0.1
を提供するように Ninx を構成するには、次の手順に従います。- name: setting-up-rhel-mongodb image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz - -o - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
- 複数のバージョンを読み込むには、
このファイルは、
.yaml
ファイル拡張子で保存します。作成した Ninx リソース ファイルで次の
kubectl
コマンドを呼び出して Ninx を配置します。kubectl apply -f <nginix>.yaml
次の例の Ninx リソース構成をテキスト エディターに貼り付けます。
1 2 apiVersion: apps/v1 3 kind: Deployment 4 metadata: 5 name: nginx-deployment 6 spec: 7 replicas: 1 8 selector: 9 matchLabels: 10 app: nginx 11 template: 12 metadata: 13 labels: 14 app: nginx 15 spec: 16 containers: 17 - image: nginx:1.14.2 18 imagePullPolicy: IfNotPresent 19 name: nginx 20 ports: 21 - containerPort: 80 22 volumeMounts: 23 - mountPath: /mongodb-ops-manager/mongodb-releases/linux 24 name: mongodb-versions 25 - mountPath: /tools/db/ 26 name: mongodb-tools 27 - name: nginx-conf 28 mountPath: /etc/nginx/nginx.conf 29 subPath: nginx.conf 30 initContainers: 31 - name: setting-up-rhel-mongodb 32 image: curlimages/curl:latest 33 command: 34 - curl 35 - -L 36 - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz 37 - -o 38 - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz 39 volumeMounts: 40 - name: mongodb-versions 41 mountPath: /mongodb-ops-manager/mongodb-releases/linux 42 - name: setting-up-rhel-mongodb-tools 43 image: curlimages/curl:latest 44 command: 45 - curl 46 - -L 47 - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz 48 - -o 49 - /tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz 50 volumeMounts: 51 - name: mongodb-tools 52 mountPath: /tools/db/ 53 restartPolicy: Always 54 terminationGracePeriodSeconds: 30 55 volumes: 56 - name: mongodb-versions 57 emptyDir: {} 58 - name: mongodb-tools 59 emptyDir: {} 60 - configMap: 61 name: nginx-conf 62 name: nginx-conf 63 ... 例で強調表示された行を変更して、インストールする MongoDB Server のバージョンを指定します。
たとえば、MongoDB バージョン
4.0.2
を別のデータベース バージョンに置き換えるには、次のブロックを更新します。- name: setting-up-rhel-mongodb image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz - -o - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz MongoDB Database Tools のバージョンを変更するには、次のようにブロックを更新します。
- name: setting-up-rhel-mongodb-tools image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz - -o - /tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz 複数のバージョンを読み込むには、N指定するバージョンごとに適切な initContainer に
curl
コマンドを追加します。たとえば、MongoDB
6.0.1
を提供するように Ninx を構成するには、次の手順に従います。- name: setting-up-rhel-mongodb image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz - -o - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz このファイルは、
.yaml
ファイル拡張子で保存します。作成した Ninx リソース ファイルで次の
oc
コマンドを呼び出して Ninx を配置します。oc apply -f <nginix>.yaml
Kubernetes サービスを作成して、クラスター内の他のポッドから Ninx にアクセスできるようにします。
このチュートリアルのサービスは、ポート80
経由で Kubernetes クラスター内の他のノードからのトラフィックに Nginx を公開します。 これにより、Kubernetes Operator を使用して配置した MongoDB Database リソース ポッドは、Ninx からインストール アーカイブをダウンロードできます。
次のコマンドを実行して、Ninx 配置のサービスを作成します。
次のサンプル サービスをテキスト エディターに貼り付けます。
1 2 apiVersion: v1 3 kind: Service 4 metadata: 5 name: nginx-svc 6 labels: 7 app: nginx 8 spec: 9 ports: 10 - port: 80 11 protocol: TCP 12 selector: 13 app: nginx 14 ... このファイルは、
.yaml
ファイル拡張子で保存します。作成したサービスファイルで次の
kubectl
コマンドを呼び出してサービスを作成します。kubectl apply -f <nginix-service>.yaml
このMongoDB Ops Managerリソースの強調表示されたフィールドをコピーして更新します。
強調表示されたセクションでは、次のMongoDB Ops Manager構成設定を使用します。
automation.versions.source: remote
リモート モードを有効にするには、spec.configuration
の を使用します。automation.versions.download.baseUrl
(spec.configuration
の )を使用して、MongoDB インストール アーカイブを提供する HTTP リソースのベース URL を提供します。この行を更新して、
<namespace>
を Kubernetes Operator を使用してリソースを配置する名前空間に置き換えます。automation.versions.download.baseUrl.allowOnlyAvailableBuilds: "false"
spec.configuration
の を使用して、エンタープライズ ビルドで問題が発生しないようにします。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDBOpsManager 4 metadata: 5 name: ops-manager-localmode 6 spec: 7 replicas: 1 8 version: "6.0.0" 9 adminCredentials: ops-manager-admin-secret 10 configuration: 11 # this enables remote mode in Ops Manager 12 automation.versions.source: remote 13 automation.versions.download.baseUrl: "http://nginx-svc.<namespace>.svc.cluster.local:8080" 14 15 backup: 16 enabled: false 17 18 applicationDatabase: 19 members: 3 20 ...
コピーしたサンプル セクションを既存のMongoDB Ops Managerリソースに貼り付けます。
希望のテキストエディタを開き、 オブジェクト を貼り付けます リソース ファイル内の適切な場所に指定する必要があります。
MongoDB Ops Managerインスタンスのステータスを追跡します。
MongoDB Ops Manager リソースのステータスを確認するには、次のコマンドを呼び出します。
kubectl get om -o yaml -w
リソースの配置ステータスの詳細については、「 Kubernetes 演算子のトラブルシューティング 」を参照してください。
MongoDB Ops Managerリソースが Pending
フェーズを完了すると、コマンドは次のような出力を返します。
1 status: 2 applicationDatabase: 3 lastTransition: "2020-05-15T16:20:22Z" 4 members: 3 5 phase: Running 6 type: ReplicaSet 7 version: "4.4.5-ubi8" 8 backup: 9 phase: "" 10 opsManager: 11 lastTransition: "2020-05-15T16:20:26Z" 12 phase: Running 13 replicas: 1 14 url: http://ops-manager-localmode-svc.mongodb.svc.cluster.local:8080 15 version: "6.0.0"
リソースの接続 URLを示すstatus.opsManager.url
フィールドの値をコピーします。 この値は、 ConfigMap を作成するときに使用します 手順の後半にある を参照してください。
MongoDB Database リソースを配置します。
まだ行っていない場合は、次の前提条件を完了します。
を配置した名前空間と同じ名前空間に DatabaseMongoDB リソース MongoDB Ops Managerを配置します。以下のことを確認してください。
リソースの
spec.opsManager.configMapRef.name
を ConfigMap のmetadata.name
と照合します。リソースの
spec.credentials
を、 MongoDB Ops ManagerプログラムAPIキー ペアを含む作成したシークレットの名前と照合します。
Operator を使用して作成したMongoDB Agent MongoDBデータベース リソース コンテナで実行されているKubernetesMongoDB Ops Manager は、インターネットからではなく Nginx 経由で からインストール アーカイブをダウンロードします。