はじめに
IBM Cloudで新しいDatabase Instanceをプロビジョニングすることは比較的に簡単です。
しかし、InstanceがPrivate Endpointで構成されている場合、特に初めてこのサービスを利用する方にとっては、アクセス方法がわかりにくいとの声をいただきました。
そのため、本記事ではPublic EndpointとPrivate Endpointそれぞれで、MongoDB Instanceにアクセスする方法について説明します。
MongoDB DatabaseのPublic EndpointとPrivate Endpointについて
- プロビジョニング時にPublicかPrivateかを選択する必要があり、作成後に変更することはできません。
IBM Cloud上にPostgreSQLなどのDatabaseを作成する際に、Both public & private networkとの選択肢があります。
一方、MongoDBがこの選択肢がないで、作成後に変更することもできません。
- 既存のInstanceがPublic Endpointを使用しているか、Private Endpointを使用しているか、確認する方法
私の知る限りは、Cloud Portalで下記の方法のみです。
InstanceのOverview タブ --> Endpoints エリア --> MongoDB タブ:ここにはPublic Connections または Private Connections と表示されます。(もちろん、その画面の下部にある詳細情報の中にもPublicかPrivateか、見えます。)次の2つのスクリーンショットをご参考してください。
注: 混乱しやすいかもしれませんが、Private ConnectionsのInstanceでも、Deployment Details エリアにあるCRN情報には、publicの文字が入っています。
Public Endpointを使用するMongoDB Instanceにアクセス
こんな流れになります:
- 初期パスワードを生成
- ローカルPCにMongoDBシェルをインストール
- IBMCloud CLIよりDatabaseをアクセス
Step 1: 初期パスワードを生成する
MongoDB InstanceのSettings画面で、Databaseの初期Admin Passwordを設定できます。
15文字以上で、少なくとも1つの数字と1つの文字を含む必要があります。Passwordを入力してから、Change Password ボタンを押します。
Step 2:ローカルPCにMongoDBシェルをインストール
IBMCloud CLIは実際には裏でMongoDB シェルを使用しているため、ローカルPCにmongoshをインストールし、env $PATHを設定することが必要です。
MongoDB ShellのDownload Siteがこちら:
https://www.mongodb.com/try/download/shell
MongoDB ShellのVersion、及び、Local PCのOS、Download Packageのタイプを選択します。私のPCがWindowsなので、msi Packageが楽です。Downloadボタンを押して、PCにインストールする際に特に注意点なしで全部Nextで完了です。
Windowsの環境変数 $PATH の設定も必要ですが、手順の説明は割愛します。
WindowsのPowerShellかCMDで、mongoshのバージョンが表示されるか、ご確認ください。
C:\Windows\System32>mongosh --version
2.3.2
Step 3:IBMCloud CLIよりDatabaseをアクセス
ここは、IBMcloud LoginやPlugin installなどの基本的なステップの紹介をスキップします。
InstanceのInstanceのOverview タブ --> Endpoints エリア --> Quick start タブには、
接続するコマンドが表示されていて、特に編集なしで利用できます。Database Password>> のPromptにStep 1で設定されたパスワードを入力して、Databaseに接続できました。
C:\Windows\System32>ibmcloud cdb cxn -s crn:v1:bluemix:public:databases-for-mongodb:jp-tok:a/27dc483xxxxxxxxxxxc0-9c9c-5ced312a6ce4::
Database Password>>
Current Mongosh Log ID: 6724xxxxxxxxxb01c
Connecting to: mongodb://<credentials>@xxxxxxxxxxauthSource=admin&appName=mongosh+2.3.2
Using MongoDB: 6.0.12
Using Mongosh: 2.3.2
For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/
replset [primary] test>
replset [primary] test>
replset [secondary] test> exit
C:\Windows\System32>
もしStep 2でMongo Shellのインストール、または、$PATHの設定にうまくできてない場合、このステップで"could not find mongosh on path: exec: "mongosh": executable file not found in $PATH"とのエラーが出るはずです。
Public Endpointを使用するMongoDB Instanceにアクセスする手順が以上です。
Private Endpointを使用するMongoDB Instanceにアクセス
Private Endpointの場合、VPNの接続が前提となります。また、Portalに提示されたibmcloud CLIを使用できず、直接mongoshを実行する必要があります。全体の流れは以下の通りです:
- VPNを接続
- 初期パスワードを生成
- ローカルPCにMongoDBシェルをインストール
- Mongo ShellよりDatabaseをアクセス
Step 1: VPNを接続する
私のIBM Cloud環境はClient VPN for VPCが使用されています。Local PCでは、OpenVPN ConnectとのClientを使って、IBM CloudのPrivate Networkに接続します。
Step 2: 初期パスワードを生成する
手順はPublic Endpointの場合と同じです。
Step 3:ローカルPCにMongoDBシェルをインストール
手順はPublic Endpointの場合と同じです。
Step 4:Mongo ShellよりDatabaseをアクセスする
こちらのリンク先には、Mongo Shellのコマンド例と説明が記載されています:https://cloud.ibm.com/docs/databases-for-mongodb?topic=databases-for-mongodb-connecting-cli-client#connecting-cli-client-mongo-example
mongosh -u admin -p $PASSWORD --ssl --sslCAFile c5f07836-d94c-11e8-a2e9-62ec2ed68f84 --authenticationDatabase admin --host replset/bd574ce4-7b36-4274-9976-96db98a3ac10-0.b8a5e798d2d04f2e860e54e5d042c915.databases.appdomain.cloud:30484,bd574ce4-7b36-4274-9976-96db98a3ac10-1.b8a5e798d2d04f2e860e54e5d042c915.databases.appdomain.cloud:30484
必要なパラメータは:
- -u: DatabaseのUsernameです。 adminを使ってください。
- -p: DatabaseのPasswordです。 前述のステップ設定されたものです。
- --ssl --sslCAFile: SSL証明書のFilenameです。 証明書は、MongoDB InstanceのOverview タブ --> Endpoints エリア --> MongoDB タブ --> 一番下にあるCertificate Authority エリアでDownloadできます。
- --authenticationDatabase: Authentication Databaseの名前です。 adminを使ってください
- --host: Databaseのreplica set membersのhostnameとPort Noの情報です。MongoDB タブで確認できます。Endpointの値を参照してもよいです。また、必ず replica/xxxのように入力する必要があります。
C:\Windows\System32>mongosh -u admin -p Testaccessxxxxxxxxxx --ssl --sslCAFile 20accxxxxxxxxb02 --authenticationDatabase admin --host replset/7f7cf4ea-fe45-xxxxxxxx0.private.databases.appdomain.cloud:30588,7f7cf4ea-fe45-xxxxxxxx0.private.databases.appdomain.cloud:30588,7f7cf4ea-fe45-xxxxxxxx0.private.databases.appdomain.cloud:30588
WARNING: argument --ssl is deprecated and will be removed. Use --tls instead.
WARNING: argument --sslCAFile is deprecated and will be removed. Use --tlsCAFile instead.
Current Mongosh Log ID: 6724d323d5e1459ea586b01c
Connecting to: mongodb://<credentials>@7f7cf4ea-fe45-xxxxxxxxx0.private.databases.appdomain.cloud:30588,7f7cf4ea-fe45-xxxxxxxxx0.private.databases.appdomain.cloud:30588,7f7cf4ea-fe45-xxxxxxxxx0.private.databases.appdomain.cloud:30588/?replicaSet=replset&authSource=admin&tls=true&tlsCAFile=20accfbb-5bcd-4edc-aacf-ca14822b8b02&appName=mongosh+2.3.2
Using MongoDB: 6.0.12
Using Mongosh: 2.3.2
mongosh 2.3.3 is available for download: https://www.mongodb.com/try/download/shell
For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/
replset [primary] test>
replset [primary] test>
replset [primary] test> exit
C:\Windows\System32>
手順が以上です。
お役に立てれば幸いです。