Nodejs OpenShift Do
improve this page | report issueMobile Foundation Nodejs odo コンポーネント
OpenShift Do (odo) は、マイクロサービスを素早く構築してデプロイするために Red Hat が作成した開発者向けの CLI ツールです。odo について詳しくは、こちらを参照してください。
Mobile Foundation Node.js odo コンポーネントは、開発者がモバイル・アプリのバックエンドまたは Backend-for-Frontend のマイクロサービスを構築するための Node.js 環境を提供します。このコンポーネントは、Mobile Foundation サービス (Push Notifications、Mobile Foundation Analytics および Live Update など) を取り込むための、使いやすい API をマイクロサービス開発者に提供します。例として、モバイル・クライアントからの注文に関する顧客の購入価格に基づいて、Nodejs バックエンドからプッシュ通知をトリガーすることができます。
odo コンポーネントを使用するための前提条件
- oc CLI のダウンロードとインストール。
- odo CLI の[インストール]((https://odo.dev/docs/installing-odo/)。
- Docker の[インストール]((https://docs.docker.com/get-started/)。
Mobile Foundation Nodejs odo docker イメージを使用した odo プロジェクトの作成
-
次のコマンドを使用してコンポーネントの Docker イメージをインポートします。
oc import-image mobile --from=docker.io/ibmcom/nodejs-mobile-foundation:odo-latest --confirm
ここで「mobile」の代わりに、選択した名前を使用できます。
-
ファイル・システムに新規フォルダーを作成し、odo CLI を使用してそれを初期設定します。以下に例を示します。
mkdir mf-mobile-backend cd mf-mobile-backend odo create mobile --git https://github.com/{userName}/{repositoryName}
これにより、odo 構成ファイルで Node.js Mobile Foundation プロジェクトが初期設定されます。この GitHub URL には、Mobile Foundation サービスを使用するノード・アプリを指定する必要があります。このようなサンプルについては、こちらを参照してください。
-
プロジェクトが初期設定されたら、作成したプロジェクト・フォルダーにナビゲートし、以下のように
.odo/config.yaml
ファイルの末尾に必須の環境変数を追加します。Envs: - Name: MF_ENVVARS Value: '{"push":{"mf_url":"<MFSERVER>","mf_app_id":"<APPID>","username":"<UNAME>","password":"<PWD>"},"liveupdate":{"mf_url":"<MFSERVER>","mf_app_id":"<APPID>","username":"<UNAME>","password":"<PWD>"},"analytics":{"mf_url":"<MFSERVER>","mf_app_name":"<APPNAME>","username":"<UNAME>","password":"<PWD>"},"passport_filter":{"mf_url":"<MFSERVER>","username":"<UNAME>","password":"<PWD>"}}'
環境変数の各パラメーターについては、以下に説明します。
-
MFSERVER
完全修飾 Mobile Foundation サービス・エンドポイント。例: https://mf-xxxxx-mfpserver.mf.cluster.svc.local:9080 (ポートを含む完全なサーバー・アドレスが必要なことにご注意ください)。Mobile Foundation サービスが外部クラスターで実行されている場合、完全修飾 Ingress ルートを指定します。
-
APPID
Android アプリケーションの場合はアプリのパッケージ名、iOS アプリケーションの場合はバンドル ID です。例: com.acme.myapp。
-
UNAME
機密クライアントのユーザー名。例: bffclient。
-
PASSWORD
機密クライアントのパスワード。例: bffclientpassword。
-
APPNAME
アプリケーションの表示名。例: Acme’s Awesome App。
あるいは、すべてのサービスが単一の Mobile Foundation サーバーと単一のアプリケーションを指している場合は、次のように個別の環境変数を指定することができます。
-Name:mf_url Value:<MFSERVER> -Name:mf_app_id Value:<APPID> -Name:push_mf_username Value:<PUSH_UNAME> -Name:push_mf_password Value:<PUSH_PWD> -Name:liveupdate_mf_username Value:<LIVEUPDATE_UNAME> -Name:liveupdate_mf_password Value:<LIVEUPDATE_PWD> -Name:analytics_mf_username Value:<ANALYICS_UNAME> -Name:analytics_mf_password Value:<ANALYTICS_PWD> -Name:pf_mf_username Value:<PASSPORT_FILTER_UNAME> -Name:pf_mf_password Value:<PASSPORT_FILTER_PWD>"
上記の場合、環境変数はご使用のポッドの Ingress ルートでなければなりません。代わりに内部 URL を使用する場合は、各サービス (Push、Liveupdate および Analytic) の内部 Mobile Foundation URL を指定する追加の環境変数が、Mobile Foundation サーバーのランタイム URL を指定する上記の mf_url に加えて必要です。
-Name:mf_push_url Value:<MFPUSHSERVER> -Name:mf_liveupdate_url Value:<MFLIVEUPDATESERVER> -Name:mf_analytics_rl Value:<MFANALYTICSSERVER>
注: 内部 Mobile Foundation サービス URL を使用する場合、個別の変数のみを指定する必要があります。渡される環境変数として、単一環境変数の
MF_ENVVARS
形式を使用することはできません。 -
-
次のコマンドを使用して、初期設定されたアプリのパブリック・ルートを作成します。
odo url create --port 8080
-
最後に、アプリは次のコマンドを使用するとデプロイできます。
odo push
これでアプリはデプロイされ、上記で作成したルートを使用してアクセスできるようになりました。
注: アプリのルートは
odo url list
コマンドを使用すると表示できます。
この odo コンポーネントに使用される Docker イメージは、以下の API を直接提供します。
提供される Push API
- sendNotification
- sendNotificationByTags
- sendNotificationByPlatform
- sendNotificationByDeviceId
- sendNotificationByUserId
提供される Live Update API
- isFeatureEnabled
- toggleFeature
- enableFeature
- disableFeature
- getProperty
- setProperty
提供される Analytics API
- sendCustomLogs
- sendNetworkTransactions
さらに、passport ストラテジーを活用すると、エンドの開発者がユーザー・コンテキスト (ユーザー名、デバイスの詳細などのユーザー固有のデータ) を利用できるようなります。passport ストラテジーについて詳しくは、こちらを参照してください。
これは、作成されたエンドポイントにフィルター mf.securityUtils.mfpAuth(scope) を追加することで使用できます。ここでのパラメーター scope により、取り出されるユーザー・コンテキスト・データが決定されます。この例は、サンプル・アプリ内に提供されます。
passport フィルターは、環境変数を指定する場合に、キー passport_filter を使用した環境変数を介して入力可能になります。
▲注: 使用可能な API について詳しくは、こちらを参照してください。
Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.