3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Cloud Databases for MongoDB:PublicおよびPrivate Endpointへのアクセスについて

Last updated at Posted at 2024-11-01

はじめに

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との選択肢があります。

Screenshot 2024-11-01 145155.png

一方、MongoDBがこの選択肢がないで、作成後に変更することもできません。
image.png

  • 既存のInstanceがPublic Endpointを使用しているか、Private Endpointを使用しているか、確認する方法

私の知る限りは、Cloud Portalで下記の方法のみです。
InstanceのOverview タブ --> Endpoints エリア --> MongoDB タブ:ここにはPublic Connections または Private Connections と表示されます。(もちろん、その画面の下部にある詳細情報の中にもPublicかPrivateか、見えます。)次の2つのスクリーンショットをご参考してください。

Public Connections の場合:
image.png

また、Private Connections の場合:
image.png

: 混乱しやすいかもしれませんが、Private ConnectionsのInstanceでも、Deployment Details エリアにあるCRN情報には、publicの文字が入っています。
image.png

Public Endpointを使用するMongoDB Instanceにアクセス

こんな流れになります:

  1. 初期パスワードを生成
  2. ローカルPCにMongoDBシェルをインストール
  3. IBMCloud CLIよりDatabaseをアクセス

Step 1: 初期パスワードを生成する

MongoDB InstanceのSettings画面で、Databaseの初期Admin Passwordを設定できます。
15文字以上で、少なくとも1つの数字と1つの文字を含む必要があります。Passwordを入力してから、Change Password ボタンを押します。
image.png

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で完了です。
image.png

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に接続できました。
image.png

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"とのエラーが出るはずです。
image.png

Public Endpointを使用するMongoDB Instanceにアクセスする手順が以上です。

Private Endpointを使用するMongoDB Instanceにアクセス

Private Endpointの場合、VPNの接続が前提となります。また、Portalに提示されたibmcloud CLIを使用できず、直接mongoshを実行する必要があります。全体の流れは以下の通りです:

  1. VPNを接続
  2. 初期パスワードを生成
  3. ローカルPCにMongoDBシェルをインストール
  4. Mongo ShellよりDatabaseをアクセス

Step 1: VPNを接続する

私のIBM Cloud環境はClient VPN for VPCが使用されています。Local PCでは、OpenVPN ConnectとのClientを使って、IBM CloudのPrivate Networkに接続します。
image.png

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のように入力する必要があります。

image.png

image.png

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>

手順が以上です。
お役に立てれば幸いです。

3
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?