スクリプトを使用した IBM Cloud Kubernetes クラスター上の MobileFirst サーバーのセットアップ

improve this page | report issue


注: Kubernetes クラスターにソフトウェアをデプロイする際の推奨されるアプローチは、Helm です。 Helm チャートを使用した IBM Cloud Kubernetes クラスター上の Mobile Foundation のデプロイについて学習してください。

概説

下記の指示に従って MobileFirst Server インスタンスおよび MobileFirst Analytics インスタンスを IBM Cloud 上で構成します。 これは、次のような手順で行います。

  • タイプ: 標準 (有料クラスター) の Kubernetes クラスターを作成します。
  • 以下の必要なツールを使用して、ホスト・コンピューターをセットアップします。Docker、Cloud Foundry CLI ( cf )、IBM Cloud CLI ( bx )、Container Service Plugin for IBM Cloud CLI ( bx cs )、Container Registry Plugin for IBM Cloud CLI ( bx cr )、Kubernetes CLI (kubectl)
  • MobileFirst Server Docker イメージをビルドし、それを IBM Cloud リポジトリーにプッシュします。
  • 最後に、Kubernetes クラスター上で Docker イメージを実行します。

注:

  • Windows OS でのこれらのスクリプトの実行は現在サポートされていません。
  • MobileFirst Server 構成ツールは IBM Containers へのデプロイメントには使用できません。

ジャンプ先:

IBM Cloud でアカウントを登録する

まだアカウントをお持ちでない場合は、IBM Cloud Web サイトにアクセスし、「無料で開始」、または「登録」をクリックします。 次のステップに進むため、登録フォームに記入する必要があります。

IBM Cloud ダッシュボード

IBM Cloud にサインインすると IBM Cloud ダッシュボードが表示され、アクティブな IBM Cloud スペースの概略が示されます。 デフォルトでは、この作業領域の名前は「dev」です。 必要に応じて、複数の作業領域/スペースを作成できます。

ホスト・マシンをセットアップする

コンテナーとイメージを管理するには、以下のツールをインストールする必要があります。

  • Docker
  • IBM Cloud CLI (bx)
  • Container Service Plugin for IBM Cloud CLI ( bx cs )
  • Container Registry Plugin for IBM Cloud CLI ( bx cr )
  • Kubernetes CLI (kubectl)

前提条件の CLI をセットアップする手順については、IBM Cloud 資料を参照してください。

IBM Cloud Container Service を使用して Kubernetes クラスターを作成およびセットアップする

IBM Cloud 上の Kubernetes クラスターをセットアップするには、IBM Cloud の資料を参照してください。

注: Mobile Foundation のデプロイには、Kubernetes クラスター・タイプ: 標準 (有料クラスター) が必要です。

ibm-mfpf-container-8.0.0.0 アーカイブをダウンロードする

IBM Cloud Container を使用して、Mobile Foundation を Kubernetes クラスターとしてセットアップするには、まず、後で IBM Cloud にプッシュするイメージを作成する必要があります。
IBM Containers 上の MobileFirst Server 用の暫定修正を IBM Fix Central から取得できます。
Fix Central から、最新の暫定修正をダウンロードします。 Kubernetes サポートは、iFix 8.0.0.0-IF201707051849 以降で使用可能です。

このアーカイブ・ファイルには、イメージをビルドするためのファイル (dependenciesmfpf-libs)、 Kubernetes 上で MobileFirst Server および MobileFirst Analytics をビルドしてデプロイするためのファイル (bmx-kubenetes) が含まれています。

アーカイブ・ファイルのファイル・システム構成を示すイメージ

bmx-kubernetes フォルダー

IBM Cloud Container Service を使用して Kubernetes クラスターにデプロイするために必要な、カスタマイズ・ファイルとスクリプトが含まれています。

Dockerfile-mfpf-analytics と Dockerfile-mfpf-server

  • Dockerfile-mfpf-server: MobileFirst Server イメージをビルドするのに必要なコマンドがすべて含まれているテキスト文書です。
  • Dockerfile-mfpf-analytics: MobileFirst Analytics イメージをビルドするのに必要なコマンドがすべて含まれているテキスト文書です。
  • scripts フォルダー: このフォルダーには、args フォルダー (構成ファイルのセットを含む) が含まれます。 また、IBM Cloud へのログイン、MobileFirst Server/MobileFirst Analytics イメージのビルド、およびイメージのプッシュと IBM Cloud での実行に必要なスクリプトも含まれます。 スクリプトは、対話式に実行することも、後述のように、構成ファイルを事前に設定することで実行することもできます。 カスタマイズ可能な args/*.properties ファイル以外、このフォルダー内のエレメントを変更しないでください。 スクリプトの使用法に関するヘルプを表示するには、-h または --help コマンド・ライン引数を使用します (例: scriptname.sh --help)。
  • usr-mfpf-server フォルダーと usr-mfpf-analytics フォルダー
    • bin フォルダー: コンテナーの始動時に実行されるスクリプト・ファイル (mfp-init) が入っています。 実行する独自のカスタム・コードを追加できます。
    • config フォルダー: MobileFirst Server/MobileFirst Analytics によって使用されるサーバー構成フラグメント (鍵ストア、サーバー・プロパティー、ユーザー・レジストリー) が含まれます。
    • keystore.xml - SSL 暗号化に使用されるセキュリティー証明書のリポジトリーの構成が含まれています。 リストされたファイルは、./usr/security フォルダー内で参照される必要があります。
    • ltpa.xml - LTPA 鍵とそのパスワードを定義する構成ファイル。
    • mfpfproperties.xml - MobileFirst Serverおよび MobileFirst Analytics の構成プロパティー。 以下の資料トピックにリストされた、サポートされるプロパティーを参照してください。
    • mfpfsqldb.xml - DB2 データベースまたは dashDB データベースに接続するための JDBC データ・ソース定義。
    • registry.xml - ユーザー・レジストリー構成。 basicRegistry (基本の XML ベースのユーザー・レジストリー構成がデフォルトとして提供されています。 basicRegistry 用にユーザー名とパスワードを構成できます。または ldapRegistry を構成することができます。
    • tracespec.xml - デバッグ・レベルだけでなく、ロギング・レベルを有効にするトレース仕様。
  • jre-security フォルダー: JRE セキュリティー関連のファイル (トラストストア、ポリシー JAR ファイルなど) を、このフォルダーに配置することで更新できます。 このフォルダー内のファイルは、コンテナーの JAVA_HOME/jre/lib/security/ フォルダーにコピーされます。
  • security フォルダー: 鍵ストア、トラストストア、および LTPA 鍵ファイル (ltpa.keys) の保管場所として使用します。
  • env フォルダー: サーバーの初期化に使用される環境プロパティー (server.env) およびカスタム JVM オプション (jvm.options) が含まれています。

  • プロパティー デフォルト値 説明
    MFPF_SERVER_HTTPPORT 9080* クライアント HTTP 要求に使用されるポート。 このポートを無効にする場合は、-1 を使用します。
    MFPF_SERVER_HTTPSPORT 9443* SSL (HTTPS) で保護されたクライアント HTTP 要求に使用されるポート。 このポートを無効にする場合は、-1 を使用します。
    MFPF_ADMIN_ROOT mfpadmin MobileFirst Server Administration Services が使用可能になるコンテキスト・ルート。
    MFPF_CONSOLE_ROOT mfpconsole MobileFirst Operations Console が使用可能になるコンテキスト・ルート。
    MFPF_ADMIN_GROUP mfpadmingroup 事前定義の役割 mfpadmin が割り当てられたユーザー・グループの名前。
    MFPF_DEPLOYER_GROUP mfpdeployergroup 事前定義の役割 mfpdeployer が割り当てられたユーザー・グループの名前。
    MFPF_MONITOR_GROUP mfpmonitorgroup 事前定義の役割 mfpmonitor が割り当てられたユーザー・グループの名前。
    MFPF_OPERATOR_GROUP mfpoperatorgroup 事前定義の役割 mfpoperator が割り当てられたユーザー・グループの名前。
    MFPF_SERVER_ADMIN_USER WorklightRESTUser MobileFirst Server Administration Services の Liberty サーバー管理者ユーザー。
    MFPF_SERVER_ADMIN_PASSWORD mfpadmin。 実稼働環境にデプロイする前に、デフォルト値を個人用パスワードに変更するようにしてください。 MobileFirst Server Administration Services の Liberty サーバー管理者ユーザーのパスワード。

    プロパティー デフォルト値 説明
    ANALYTICS_SERVER_HTTP PORT 9080* クライアント HTTP 要求に使用されるポート。 このポートを無効にする場合は、-1 を使用します。
    ANALYTICS_SERVER_HTTPS PORT 9443* クライアント HTTP 要求に使用されるポート。 このポートを無効にする場合は、-1 を使用します。
    ANALYTICS_ADMIN_GROUP analyticsadmingroup 事前定義のロール worklightadmin を所有しているユーザー・グループの名前。

  • dependencies フォルダー: Mobile Foundation ランタイムおよび IBM Java JRE 8 が含まれています。
  • mfpf-libs folder フォルダー: MobileFirst 製品コンポーネント・ライブラリーおよび CLI が含まれています。

前提条件

この手順を実行するには、操作者に、Kubernetes の実用的知識が必要です。 詳しくは、Kubernetes 資料を参照してください。

IBM Containers を使用して Kubernetes クラスター上の MobileFirst および Analytics サーバーをセットアップする

前述のとおり、スクリプトは、対話式に実行することも、構成ファイルを使用して実行することもできます。

  • 構成ファイルを使用する場合: スクリプトを実行し、個々の構成ファイルを引数として渡します。
  • 対話式の場合: 引数を付けずにスクリプトを実行します。

注: スクリプトを対話式に実行する場合は、この構成をスキップしてかまいませんが、指定することになる引数について一読し、理解しておくことを、強くお勧めします。

対話式に実行する場合、指定された引数のコピーがディレクトリー: ./recorded-args/ に保存されます。 このため、初めて対話モードを使用したあと、その後のデプロイメントの参照としてプロパティー・ファイルを再使用できます。

args フォルダーに、構成ファイルのセットが含まれています。スクリプトの実行に必要な引数は、これらの構成ファイルに含まれています。 以下のファイルに引数値を入力します。

initenv.properties

  • IBM_CLOUD_API_URL - デプロイメントを行う地理的な場所や地域。
    例: api.ng.bluemix.net は米国地域用、api.eu-de.bluemix.net はドイツ用、api.au-syd.bluemix.net はシドニー用。
  • IBM_CLOUD_ACCOUNT_ID - ご使用のアカウント ID。これは、英数字で、例えば a1b1b111d11e1a11d1fa1cc999999999 などです。
    コマンド bx target を使用してアカウント ID を取得します。
  • IBM_CLOUD_USER - ご使用の IBM Cloud ユーザー名 (E メール)。
  • IBM_CLOUD_PASSWORD - ご使用の IBM Cloud パスワード。
  • IBM_CLOUD_ORG - ご使用の IBM Cloud 組織名。
  • IBM_CLOUD_SPACE - ご使用の IBM Cloud スペース (前述のとおり)。

prepareserverdbs.properties

Mobile Foundation サービスでは、外部の DB2 on Cloud インスタンスが必要です。
注: 独自の DB2 データベースを使用することもできます。 IBM Cloud Kubenetes クラスターは、データベースに接続するように構成する必要があります。
DB2 インスタンスのセットアップが完了したら、必要な引数を入力します。
  • DB_TYPE - dashDB (DB2 on Cloud を使用している場合) または DB2 (独自の DB2 データベースを使用している場合)。
  • 独自の DB2 データベースを使用している (すなわち、DB_TYPE=DB2) 場合は、以下を指定します。
    • DB2_HOST - DB2 セットアップのホスト名。
    • DB2_DATABASE - データベースの名前。
    • DB2_PORT - データベースに接続するポート。
    • DB2_USERNAME - DB2 データベース・ユーザー (ユーザーには、指定されたスキーマ内で表を作成するための許可がある必要があります。あるいは、スキーマがまだ存在していない場合、ユーザーはスキーマを作成できる必要があります)
    • DB2_PASSWORD - DB2 ユーザーのパスワード。
  • DB2 on Cloud を使用している (すなわち、DB_TYPE=dashDB) 場合は、以下を指定します。
    • ADMIN_DB_SRV_NAME - admin データを保管するための dashDB サービス・インスタンス名。
    • RUNTIME_DB_SRV_NAME - ランタイム・データを保管するための dashDB サービス・インスタンス名。 デフォルトは admin のサービス名です。
    • PUSH_DB_SRV_NAME - ランタイム・データを保管するための dashDB サービス・インスタンス名。 デフォルトは admin のサービス名です。
  • ADMIN_SCHEMA_NAME - admin データ用のスキーマ名。 デフォルトは MFPDATA です。
  • RUNTIME_SCHEMA_NAME - ランタイム・データ用のスキーマ名。 デフォルトは MFPDATA です。
  • PUSH_SCHEMA_NAME - ランタイム・データ用のスキーマ名。 デフォルトは MFPDATA です。
  • 注: DB2 データベース・サービス・インスタンスが多数のユーザーや複数の Mobile Foundation デプロイメントによって共有されている場合は、必ず固有のスキーマ名を指定してください。

prepareserver.properties

  • SERVER_IMAGE_TAG - 当該イメージのタグ。 registry-url/namespace/image:tag の形式でなければなりません。
  • ANALYTICS_IMAGE_TAG - 当該イメージのタグ。 registry-url/namespace/image:tag の形式でなければなりません。
  • 例: registry.ng.bluemix.net/myuniquenamespace/mymfpserver:v1
    Docker レジストリーの名前空間をまだ作成していない場合は、次のいずれかのコマンドを使用してレジストリーの名前空間を作成します。
    • bx cr namespace-add myuniquenamespace
    • bx cr namespace-list

以下の説明は、構成ファイルを使用してスクリプトを実行する方法を示しています。 非対話モードでの実行を選択した場合は、コマンド・ライン引数のリストも使用可能です。

  1. initenv.sh – IBM Cloud へのログイン
    initenv.sh スクリプトを実行して、IBM Containers 上で Mobile Foundation をビルドして実行するための環境を作成します。 対話モード
    ./initenv.sh
    非対話モード
    ./initenv.sh args/initenv.properties
  2. prepareserverdbs.sh - MobileFirst Server データベースの準備
    prepareserverdbs.sh スクリプトを使用して、DB2 データベース・サービスが含まれた MobileFirst Server を構成します。 手順 1 でログインした組織およびスペースにおいて、DB2 サービスのサービス・インスタンスが使用可能になっている必要があります。次のコマンドを実行します。 対話モード
    ./prepareserverdbs.sh
    非対話モード
    ./prepareserverdbs.sh args/prepareserverdbs.properties
  3. initenv.sh(Optional) – IBM Cloud へのログイン
    このステップは、DB2 サービス・インスタンスが使用可能になっている組織およびスペースとは別の組織およびスペースにコンテナーを作成する必要がある場合にのみ必須です。 この条件に当てはまる場合は、コンテナーを作成 (および開始) する必要のある新しい組織およびスペースの情報で initenv.properties を更新し、次のように initenv.sh スクリプトを再実行します。
    ./initenv.sh args/initenv.properties
  4. prepareserver.sh - MobileFirst Server イメージの準備
    MobileFirst Server および MobileFirst Analytics イメージをビルドし、これを IBM Cloud リポジトリーにプッシュするため、prepareserver.sh スクリプトを実行します。 IBM Cloud リポジトリー内にある使用可能なすべてのイメージを表示するには、次のコマンドを実行します。bx cr image-list
    リストには、イメージ名、作成日、および ID が表示されます。
    対話モード
    ./prepareserver.sh
    非対話モード
    ./prepareserver.sh args/prepareserver.properties
  5. IBM Cloud Container Service を使用して、MobileFirst Server と MobileFirst Analytics を Kubernetes クラスター上の Docker コンテナーにデプロイします。
    1. ターミナル・コンテキストをクラスターに設定します。
      bx cs cluster-config my-cluster
      クラスター名を知るには、次のコマンドを実行します。
      bx cs clusters
      この出力に、環境変数を設定するコマンドとして構成ファイルへのパスが表示されます。例えば次のとおりです。
      export KUBECONFIG=/Users/ibm/.bluemix/plugins/container-service/clusters/my-cluster/kube-config-prod-dal12-my-cluster.yml
      my-cluster をご使用のクラスター名に置き換えて上記のコマンドをコピーして貼り付けて、ターミナルに環境変数を設定し、Enter を押します。
    2. [MobileFirst Analytics の場合必須]: 永続ボリューム要求を作成します。 これは、Analytics データを永続化するために使用されます。 これは 1 回限りの手順です。 以前に PVC を作成済みであれば、それを再使用できます。 yaml ファイル args/mfpf-persistent-volume-claim.yaml を編集し、コマンドを実行します。 次の kubectl コマンドを実行する前に、すべての変数をその値に置き換える必要があります。
      kubectl create -f ./args/mfpf-persistent-volume-claim.yaml
      後の手順で指定する必要があるため、永続ボリューム要求の名前をメモします。
    3. 入口ドメインを取得するには、次のコマンドを実行します。
      bx cs cluster-get my-cluster
      入口ドメインをメモします。 TLS を構成する必要がある場合は、入口秘密をメモします。
    4. Kubernetes デプロイメントを作成します。
      yaml ファイル args/mfpf-deployment-all.yaml を編集して、詳細を設定します。 kubectl コマンドを実行する前に、すべての変数をその値に置き換える必要があります。
      ./args/mfpf-deployment-all.yaml には次のデプロイメントが含まれています。
      • 1024 MB のメモリーと 1Core CPU で、3 個のインスタンス (レプリカ) で構成される MobileFirst Server の Kubernetes デプロイメント。
      • 1024 MB のメモリーと 1Core CPU で、2 個のインスタンス (レプリカ) で構成される MobileFirst Analytics の Kubernetes デプロイメント。
      • MobileFirst Server の Kubernetes サービス。
      • MobileFirst Analytics の Kubernetes サービス。
      • MobileFirst Server および MobileFirst Analytics のすべての REST エンドポイントなど、セットアップ全体のための入口。
      • MobileFirst Server および MobileFirst Analytics のインスタンスで環境変数を使用可能にするための、configMap。
      YAML ファイルの以下の値を編集する必要があります。
      1. 上述のように、入口ドメインの出力の my-cluster.us-south.containers.mybluemix.net が、bx cs cluster-get コマンドの出力と異なります。
      2. registry.ng.bluemix.net/repository/mfpfanalytics:latestregistry.ng.bluemix.net/repository/mfpfserver:latest - イメージをアップロードするために prepareserver.sh で使用したのと同じ名前を使用します。
      3. claimName: mfppvc - PVC を作成するために上記で使用した永続ボリューム要求の名前を名前として使用します。
      次のコマンドを実行します。
      kubectl create -f ./args/mfpf-deployment-all.yaml
      注:
      以下のテンプレート yaml ファイルが提供されます。
      • mfpf-deployment-all.yaml: MobileFirst Server と MobileFirst Analytics を http でデプロイします。
      • mfpf-deployment-all-tls.yaml: MobileFirst Server と MobileFirst Analytics を https でデプロイします。
      • mfpf-deployment-server.yaml: MobileFirst Server を http でデプロイします。
      • mfpf-deployment-analytics.yaml: MobileFirst Analytics を http でデプロイします。
      作成後、Kubernetes ダッシュボードを使用するには、次のコマンドを実行します。
      kubectl proxy
      ブラウザーに localhost:8001/ui を開きます。

これで、IBM Cloud で実行中の MobileFirst Server を使用して、アプリケーション開発を始めることができます。 Mobile Foundation チュートリアルを確認してください。

MobileFirst Server 修正の適用

IBM Containers 上の MobileFirst Server 用の暫定修正を IBM Fix Central から取得できます。
暫定修正を適用する前に、既存の構成ファイルのバックアップを取ってください。 構成ファイルは次のフォルダー内にあります。

  • MobileFirst Analytics: package_root/bmx-kubernetes/usr-mfpf-analytics
  • MobileFirst Server Liberty Cloud Foundry アプリケーション: package_root/bmx-kubernetes/usr-mfpf-server

iFix を適用するためのステップ:

  1. 暫定修正アーカイブをダウンロードし、その内容を既存のインストール・フォルダーに解凍して、既存のファイルを上書きします。
  2. バックアップした構成ファイルを package_root/bmx-kubernetes/usr-mfpf-server および package_root/bmx-kubernetes/usr-mfpf-analytics の各フォルダーにリストアし、新規にインストールされた構成ファイルを上書きします。
  3. エディターで package_root/bmx-kubernetes/usr-mfpf-server/env/jvm.options ファイルを編集して、次の行が存在する場合は削除します。
    -javaagent:/opt/ibm/wlp/usr/servers/mfp/newrelic/newrelic.jar”
    

    これで、更新したサーバーをビルドおよびデプロイできるようになりました。

    a. prepareserver.sh スクリプトを実行してサーバー・イメージを再ビルドし、それを IBM コンテナー・サービスにプッシュします。

    b. 次のコマンドを実行して、ローリング更新を実行します。 kubectl rolling-update NAME -f FILE

IBM Cloud からの Kubernetes デプロイメントの削除

次のコマンドを実行して、デプロイされたインスタンスを IBM Cloud Kubernetes クラスターから削除します。

kubectl delete -f mfpf-deployment-all.yaml ( yaml で定義されたすべての Kubernetes タイプを削除します )

以下のコマンドを実行して、IBM Cloud レジストリーからイメージ名を削除します。

bx cr image-list (レジストリー内のイメージをリストします)
bx cr image-rm image-name (レジストリーからイメージを削除します)

IBM Cloud からのデータベース・サービス構成の削除

MobileFirst Server イメージの構成時に prepareserverdbs.sh スクリプトを実行した場合、MobileFirst Server に必要な構成およびデータベース表が作成されます。 このスクリプトは、コンテナー用のデータベース・スキーマも作成します。

IBM Cloud からデータベース・サービス構成を削除するには、IBM Cloud ダッシュボードを使用して、以下の手順を実行します。

  1. IBM Cloud ダッシュボードから、使用した DB2 on Cloud サービスを選択します。 prepareserverdbs.sh スクリプトの実行時にパラメーターとして指定した DB2 サービス名を選択します。
  2. 選択した DB2 サービス・インスタンスのスキーマおよびデータベース・オブジェクトを対処するために、DB2 コンソールを「起動」します。
  3. IBM MobileFirst Server 構成に関連したスキーマを選択します。 スキーマ名は、prepareserverdbs.sh スクリプトの実行時にパラメーターとして指定したスキーマ名です。
  4. スキーマ名とその下のオブジェクトを慎重に調べた後で、それぞれのスキーマを削除します。 IBM Cloud からデータベース構成が削除されます。
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.
Last modified on May 13, 2020