OpenShift に接続するためのMendixクラスタ設定方法

ソリューションアーキテクトの蒸野(ムシノ)です。

前回に引き続き「OpenShift上でのローコード開発」についてお伝えさせて頂けたらと思います。

前回の振り返り

前回はローコードビジネスのメリットやローコードプラットフォームとしてMendixの紹介とMendixサンプルアプリを作成しました。 今回はMendixアプリをOpenShift上で動作させるためのクラスタ設定方法について言及させていただきたいと思います。

rheb.hatenablog.com

また、改めてのご案内になりますが、Mendixの機能一覧について分かりやすいページがありましたので追加でご紹介させて頂けたらと思います。 jpn.nec.com

MendixアプリのOpenShiftデプロイ手順

それではMendixマニュアルを参考にMendixアプリを OpenShift 上に公開するためのクラスタ設定を実施してみたいと思います。

同手順は正式には Mendix マニュアル(private-cloud-cluster)に作成方法が記載されていますので、詳細については下記をご覧いただけたらと思います。 docs.mendix.com

2.OpenShift環境の用意

2.1.オンラインLAB(OPEN)

前回の記事を参考にサンプルアプリを用意できましたら次は OpenShift 環境を準備しましょう。

今回はRedhat オンラインLAB(OPEN)環境で試したいと思います。
オンラインLAB(OPENTLC) 利用方法については下記記事を御覧ください。
レッドハットのパートナー【5】Red Hat OPEN に関する説明と利用手順 その2 - 赤帽エンジニアブログ

下記手順でプロビジョニングを行います。

  • カタログOPENTLC Openshift 4LabsHands On with OpenShift 4.8

プロビジョニングするまで少し時間がかかりますが待ちます。
完了すればプロビジョニング結果と共に各種情報がメールで通知されます。

オンラインLAB(OPEN)をご利用できない方向けのご案内

今回はオンラインLAB環境を使った手順でご説明しておりますが、無料の Developer Sandbox for Red Hat OpenShift という環境もあります。
詳細手順は下記記事でも紹介されておりますので是非ともお試しいただければと思います。
Kogito-Onlineでお手軽デシジョンサービス開発 - 赤帽エンジニアブログ

3.クラウド環境の設定

3.1.クラウド管理メニューの表示

オンラインLAB(OPEN)で準備した OpenShift への接続設定を行います。
Mendixの「Developer Portal」に戻り、一番左端にあるメニューアイコンをクリックします。
すると「Manage」>「Cloud」という項目が表示されるためこれをクリックします。

f:id:nmushino:20211110172910p:plain:w300

3.2.クラスターマネージャの作成

メニューに「Cluster Manager」と表示されていると思いますのでこれをクリックします。
次にクラスタマネージャの「Register Cluster」をクリックし、クラスタ名などの入力項目があるクラスタ設定画面が表示されるので適宜入力します。 下記はMendixマニュアルにも載っている項目名で作成してみます。

  • Cluster Name:My Private Cloud Cluster
  • Cluster Type:OpenShift
  • Description:My OpenShift cluster

すべて入力したら「Create」をクリックしクラスタを作成します。

f:id:nmushino:20211112110734p:plain

3.3.クラスターマネージャの設定

クラスタの設定が成功すれば下記の様な画面になっているはずです。
それでは「Details」をクリックし、更に追加設定を行います。

f:id:nmushino:20211112110731p:plain

3.4.ネームスペースの設定

次にネームスペースを作成します。
「Add Namespace」をクリックします。

f:id:nmushino:20211112112338p:plain

ネームスペースを設定する画面が表示されます。 このネームスペースは OpenShift 上のプロジェクト名にもなるので分かりやすい名称を付けましょう。

  • Namespace:mendix-dev-workspace
  • Install Type:Connected

入力が完了すれば「Done」をクリックします。

f:id:nmushino:20211112112942p:plain:w500

マニュアルにも記載がありますが、Mendix Developer Portal からアプリをデプロイする場合には「Connected」を選択します。 CLIから制御するだけの場合には「Standalone」を選択することになります。 また、ネームスペースは小文字しか受け入れられないためご注意ください。

3.5.Mendix CLI のインストール

次は Mendixのオペレータをインストールしていきます。
下記のようなMendix CLIをダウンロードする画面に遷移したと思います。ここから適切なCLIをダウンロードします。

f:id:nmushino:20211112130456p:plain

「Donwnload Executable」をクリックするとダウンロードバージョンを選択する画面が表示されます。基本的には最新を選びましょう。 執筆時点(2021/12)では「2.1.0」を選択します。

f:id:nmushino:20211112124608p:plain:w500

これをクライアントPCにインストールします。

3.6.OCコマンドでOpenShift にログイン

Mendixマニュアルに記載されていますが、MendixではOpenShiftに「Mendix Operator」と「Mendix Gateway Agent」をデプロイすることで OpenShift などの実行環境を提供します。

そのため、次はMendixオペレータ等を OpenShift にデプロイするため、OpenShift CLI(OCコマンド)でログインします。
オンラインLAB(OPEN)のプロビジョニング時にアクセス情報が共有されていると思いますのでこれを利用します。 Operator をインストールする際、Operatorをインストールできる権限でログインしておく必要があります。

oc login -u admin -p xxxxxxxxxxx https://api.cluster-xxx.xxx.sandboxxxx.opentlc.com:6443 

Login successful.

You have access to 74 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".
3.7.mxpc-cli コマンドの利用

OpenShift にログインできたら、次は Mendix CLIの「mxpc-cli 」からMendixオペレータをインストールしていきます。
Mendix CLIをダウンロードした画面に実行コマンドが記載されているのでこれをコピーしターミナルに入力します。

f:id:nmushino:20211112131244p:plain

コマンド実行後、ターミナルに次のような表示がされていれば問題ありません。
もし表示されないという場合は mxpc-cli コマンドが正しく認識されているか確認が必要です。

f:id:nmushino:20211112131858p:plain

3.8.ベースインストール

それでは次にMendixオペレータのインストールするため、「1) Base Installation」をクリックします。
以下の項目を「options」に設定します。

  • Cluster Mode:connected
  • Cluster Type:openshift

Mendix CLIの画面が崩れていますが気にせず実施します。実行には影響はありません。

f:id:nmushino:20211112132844p:plain

設定が終われば「Run Installer」をクリックします。
「Installer output」に実行ログが表示されます。インストールできれば最終行に「--Done」と表示されます。
もしエラーになるようなら OpenShift が動作しているか、クライアントからアクセスできるかなどをチェックします。
ここで一度「Save Installer」をクリックしYAMLファイルを保存しておきます。

インストール内容を OpenShift側で 確認してみましょう。
OpenShift コンソールを確認すると、設定したネームスペースである「mendix-dev-workspace」 が作成できているのが分かります。

また、Podも見てみましょう。
MendixのAgentとOperatorの名前がついたPodが作成されていることが分かります。

f:id:nmushino:20211112134037p:plain

3.9.ネームスペースの設定

Mendix CLI は次のメニューにそのままでは遷移できないのでここで一度「Exit Installer」で終了します。 次にクラスタ環境設定に進みたいと思いますので先程同様「mxpc-cli 」コマンドで設定画面を表示します。

次は「2) Configure Namespace」を設定します。

f:id:nmushino:20211112164947p:plain

Mendix CLIではいつくかの設定項目がありますが、OpenShift 上で動かすためには最低限以下の設定を行う必要があります。

  • Database Plan
  • Storage Plan
  • Registory

「Select items to configure:」で上記3項目をチェックし、「2) Configure Namespace」をクリックします。

Mendix マニュアルでは「Registory」は必須項目と指定がありませんが、実行時にレジストリURLがないとエラーになりますので設定するようにしましょう。

3.10.データベースの準備

Mendix CLIは次の設定画面に遷移されますが、一旦ターミナルを離れ OpenShift コンソールにアクセスします。

メニューで指定があったように、Mendixアプリを OpenShift 上で動かすにはデータベースとストレージが必要となります。 まずはデータベースの用意をします。今回はDev4Ddevs.com による PostgreSQL Operator でインストールするものとします。

OperatorHubから「PostgreSQL Operator」を「mendix-dev-workspace」 プロジェクトにインストールしましょう。

f:id:nmushino:20211112165607p:plain

インストールをクリックします。
Operatorのインストール画面が表示されますが、すべてデフォルトのままインストールしましょう。 Operatorのインストールが完了すれば次はデータベースインスタンスの作成を行います。 表示されているDatabaseのインスタンス作成をクリックし、ここでもすべてデフォルトのまま作成を行います。

ここでトポロジーを見てみましょう。
下記のようになっていれば問題ありません。

f:id:nmushino:20211112170715p:plain

3.11.ストレージの準備

次はストレージを用意します。 今回はAWS S3とします。

S3ストレージの用意方法についてはここでは詳細を示しませんが、Mendix CLIで設定するため「Access Key」と「Secret Key」が必要です。 また設定・実行時にはS3のバケット作成、削除権限、およびIAMのユーザ権限等が必要となります。これについてはMendixのマニュアルにS3のカスタムポリシーについての説明がありますので、これを参考に作成、Mendix CLIからアクセスできるように設定しましょう。

docs.mendix.com

これで準備は整いました。
それではMendix CLIに戻り各種設定します。

3.12.データベースの設定

まずはデータベースの設定を行います。下に並んだメニューから「[2] Database Plan」を選択します。 次に左側に表示されている「Plan Details」に下記の項目を入力します。

  • Name:mendix-database
  • Database Type:postgres

データベースタイプを Postgres に設定すると、Postgresの詳細設定画面が表示されます。
下記のように設定項目に入力していきます。

  • Host:database
  • Port:5432
  • Database Name:postgres
  • Username:postgres
  • Password:XXXXXXX(デフォルト設定したパスワードを指定します)

f:id:nmushino:20211112181550p:plain

これで一度「validate」および「Connection Validation」をクリックし設定の確認を行います。
valid、もしくは successfully tested! になっていれば問題ありません。

3.13.ストレージの設定

次にストレージの設定を行います。 データベースの設定同様、メニューから「[3] Storage Plan」を選択します。 左側に表示される「Plan Details」に下記の項目を入力します。

  • Name:mendix-storage
  • Database Type:amazon-s3

ストレージでもデータベース同様 amazon-s3 を選ぶと S3 の詳細設定画面が表示されます。
下記のように設定項目に入力していきます。

  • Bucket region:ap-northeast-1
  • Access Key:XXXXXXXXX(設定済みのAccess Keyを指定します)
  • Secret Key:XXXXXXXXX(設定済みのSecret Keyを指定します)

f:id:nmushino:20211112183224p:plain

その他の項目はデフォルトのままとします。 入力後「validate」および「Connection Validation」をクリックし設定の確認を行います。 ここでも valid、もしくは successfully tested! になっていれば問題ありません。

3.14.リポジトリの設定

最後にリポジトリの設定となります。メニューから「[5] Registry」を選択します。 左側に表示される「Registry Details」に下記項目を入力します。

  • Registry Type:openshift4

f:id:nmushino:20211112183709p:plain

openshift4 では特に設定項目はありませんので、これで完了です。

3.15.ネームスペース設定の有効化

それではこれまで設定してきた設定項目を有効にします。「[8] Review and Apply」を選択します。
レビュー画面が表示されるので「Evaluate Configuration」をクリックします。

StatusValid になっていれば問題ありません。

f:id:nmushino:20211112184229p:plain

これを「Write YAML」 でローカルPCに保存します。 その後「Apply Configuration」をクリックすることで設定が反映されます。

f:id:nmushino:20211112184641p:plain

これでMendix CLI を使った設定は完了です。

3.16.クラスタマネージャのステータス確認

Mendixクラスタマネージャ画面 に戻ります。
ネームスペースの設定・有効化を行ったことで、クラスタ設定の下に設定したネームスペースが見つけられると思います。 この「Details」をクリックして現在のステータスを確認してみましょう。 ステータスが Connected で表示されていれば接続できていることを示しています。

f:id:nmushino:20211112185236p:plain

ネームスペースの下にいくつかのメニューがあります。このPlansを確認してみましょう。
下記のように先程 Mendix CLI で設定したデータベースやストレージの設定が見えるはずです。

f:id:nmushino:20211112185717p:plain

Plans が Deactive と表示されていますがこれで問題ありません。 ここで active にするとアプリ側の環境設定でデータベース等の設定項目が見えなくなるため、このままにしておきましょう。

これでクラスタの設定は完了しました。

次回以降

いかがでしたでしょうか?
Mendixのプライベートクラウドクラスタの設定方法について、具体的にイメージすることができたのではないでしょうか? それでは次回は最後回になります。Mendixサンプルアプリの環境設定にクラスタ設定を反映させ、OpenShift上でMendixアプリが動作することを確認してみたいと思います。

本文中に登場した OpenShift に関わる用語については、下記マニュアルを参考いただけたらと思います。
* 第1章 Web コンソールへのアクセス OpenShift Container Platform 4.8 | Red Hat Customer Portal
* 第1章 OpenShift CLI (oc) OpenShift Container Platform 4.4 | Red Hat Customer Portal
* Operator OpenShift Container Platform 4.8 | Red Hat Customer Portal
* 2.4. Topology ビューを使用したアプリケーション構成の表示 OpenShift Container Platform 4.6 | Red Hat Customer Portal

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。