LoginSignup
6
0

IBM i MerlinをOpenShift 3ノードクラスターに導入してみる

Last updated at Posted at 2023-06-07

本記事ではIBM iアプリケーションの開発とモダナイゼーションの環境であるIBM i Merlin をオンプレのOpenShift 3ノードクラスターに導入したときの手順を紹介します。

OpenShift 3ノードクラスターの導入は以下の記事を参考にしてください。
https://qiita.com/mmitsugiw/items/9c82bff35a24a1654d39

IBM i Merlin Operatorの導入

まずOpenShift上にIBM i MerlinのOperatorを導入します。
導入のためにはライセンスキーとなるentitlement keyが必要になりますので事前に取得しておきます。

IBM i Merlinのためのプロジェクトを作成します。今回はOpenShift Webコンソールから作成します。
ホーム -> プロジェクト -> プロジェクトの作成
から作成できます。
image.png
entitlement keyをOpenShiftに登録します。こちらはOpenShift CLIにてbastionノードなどから作業していきます。下記にbastionノードで作業する場合の例を示します。
登録はentitlement keyをOpenShiftのglobal pullsecretに追加することで行います。
現在のglobal pullsecretを取得します。

# export KUBECONFIG=/root/config/auth/kubeconfig
# oc extract secret/pull-secret -n openshift-config --to=.

entitlement keyをbase64にてエンコードします。出力を控えておきます。

# printf “cp:<entitlementkey>” | base64

控えた出力を.dockerconfigjsonに以下の内容で追加します。

"cp.icr.io": {
"auth": "控えたentitlement keyのbase64エンコード",
"email": "IBM IDに登録されているメールアドレス"
}

編集した.dockerconfigjsonをOpenShiftに反映させます。

# oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson

この後、OpenShiftの各ノードが自動でrestartします。oc get nodesなどでrestartが完了したことを確認します。

次にOperatorを導入するためのカタログソースを追加します。OpenShift Webコンソールから
管理 -> カスタムリソース定義 -> CatalogSource -> インスタンスタブ -> CatalogSourceの作成
で作成します。

  • カタログソース名: ibm-operator-catalog
  • イメージURL: icr.io/cpopen/ibm-operator-catalog:latest
  • 高可用性: クラスタースコープのカタログソース
    image.png

最後にOperatorHubからOperatorを導入します。OpenShift Webコンソールから
Operator -> OperatorHub -> "merlin"と入力して検索を行い、
IBM i Modernization Engine For Lifecycle Integration
を選択し、Installボタンをクリックすると以下のような画面となりますのでnamespaceに先ほど作成してプロジェクトを選択してインストールを実行してください。
image.png
無事インストールが終了すると以下の画面となります。
image.png

IBM i Merlinインスタンスの作成

OpenShift WebコンソールからIBM i Merlinインスタンスを作成します。
プロジェクトとして作成したプロジェクトを選択した状態で
Operator -> インストール済みOperator
に行き、
IBM i Modernization Engine For Lifecycle Integration
クリックします。Merlinタブを選択し、Merlinの作成をクリックします。
以下の画面でインスタンス名を入力、ライセンスの確認を行った後に作成をクリックします。
image.png
再度Merlinタブを確認し、ステータスが以下のようにCondition:Reconciledとなっていれば作成完了となります。
image.png
作成したインスタンスをクリックすると、以下のようにIBM i MerlinのURLが表示されるのでアクセスしてみます。
image.png
管理者のユーザー名 (デフォルトはadmin)とパスワードはOpenShift Webコンソールの
ワークロード -> シークレット -> merlin-credential-secret
のADMIN_USERNAMEとADMIN_PASSWORDで確認できます。

IBM i Merlinを使用するための証明書のセットアップ

IBM i MerlinをWebブラウザにて使用するためには使用しているブラウザに応じて証明書の設定が必要となります。使用しているブラウザに応じて、下記のARCAD Softwareの動画を参照して設定してください。
https://www.youtube.com/playlist?list=PLPELYviDwCnY6L5r5ZnmCneqhakLcB7ko

IBM i Merlinの初期設定

無事Merlinにログインできたら、Merlinの初期設定を行なっていきます。

初期設定は、@koga39chan さんと @meo_kawa さんの下記記事を参照して設定してください。
https://qiita.com/koga39chan/items/90638f30f65c62177967

ポイントは以下となるかと思います。

  • 初期設定で行うVaultのセットアップのシークレットとトークンは必ず控えておく
    (OpenShiftの再起動等の後に入力を求められる場合があります)
  • IBM i Developerは使用するユーザーごとにインストールを行う
  • IBM i CI/CDのインストールは使用するJenkinsの単位で行うので、管理者のみインストールを行う
  • IBM i Merlinのユーザー管理はLDAP連携も可能 (未検証)
  • IBM i の接続およびtemplate実行にはIBM i側にsshおよびyumの設定が必要

IBM i Developerのセットアップ

まずIBM i Developerを使用したいユーザーにアクセス権限を追加します。
許可 -> 許可の管理
にてIBM i Developerのインストール時に指定したプロジェクトに各ユーザーのEDITアクセス権限
を追加します。
image.png
その後IBM i Developerを使用したいユーザーでMerlinにログインし直すと、
ログイン後の画面に以下のようにIBM i Developerへの起動リンクが表示されます。
image.png
IBM i Develoerを起動する前に、IBM iへの接続を上記と同じ手順で各ユーザー側でも作成しておきます。
接続 -> 在庫
でIBM iのホスト名(もしくはIPアドレス)を定義
接続 -> Credentials
でアクセス情報
接続 -> テンプレート
で両者の紐付けをしておきます。

この後、先ほどの起動リンクからIBM i Developerの起動をします。
Create Workspaceにてワークスペースを作成します。
Quick Addタブでサンプルを選ぶか、Git Repo URLを指定する
もしくはCustom Workspaceでワークスペースを作成します。
今回はGit Repo URLを指定したのですが、GitHub上のDevfileのraw URLを指定する必要がありました。
image.png
以下のようにIBM i Developerの画面が表示されます。
GitHubの認証情報等が必要な場合は認証のプロンプトが上部に表示されるため、認証情報を入力します。
image.png
下記のリンクのようにSSH KeyをGitHubに登録することも可能です。
https://ibm.github.io/merlin-docs/#/./guides/crw/main?id=connecting-to-git-repositories
Gitの操作はワークスペース上のSourceControlビューで行うか、画面右側のtheiaコンテナ上のNew terminalからコマンド操作で行うことが可能です。
image.png
使用するIBM iへの接続は以下のリンクの手順で行います。この際、先ほど作成したテンプレートを指定するようにします。
https://ibm.github.io/merlin-docs/#/./guides/crw/main?id=connecting-to-a-remote-system

プロジェクトのビルドは
View -> Find Command
でIBM i Developer: Build Projectにて実行できます。
image.png
各プログラムのデバッグも
IBM I PROJECT EXPLORER -> IBM i -> Object Libraries
などから指定のプログラムを選択し、Debug As Batchをクリックすることで実行できます。
image.png
BreakpointやWatchの設定も可能です。
image.png

IBM i CI/CDのセットアップ

IBM i CI/CDはビルドやデプロイの自動化を行い、CI/CDのフローを実現することが可能となります。
CI/CDのセットアップはadminにて行います。
MerlinのWeb画面のホームからIBMi CI/CDをクリックし起動します。

Jenkinsの構成 -> Jenkinsサーバー
にてCI/CDで使用するJenkinsのセットアップを行います。
Jenkinsサーバーは内部で自動生成させるか、外部のサーバーを参照するか選択できます。

今回は以下の手順でbastionノードにJenkinsサーバーを構築しました。
Jenkinsを以下のコマンドでインストールします。

# dnf -y install java-11-openjdk java-11-openjdk-devel
# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# dnf -y install jenkins

/usr/lib/systemd/system/jenkins.serviceを編集し以下の環境変数を追加します。

Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el8_7.ppc64le"
Environment="JENKINS_JAVA_CMD=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el8_7.ppc64le/bin/java"
Environment="JENKINS_PORT=8100"

Jenkinsサーバーを起動します。

# firewall-cmd --add-port=8100/tcp --zone=public --permanent
# firewall-cmd --reload
# systemctl enable jenkins
# systemctl start jenkins

http://(bastion IP):8100にアクセスしてJenkinsのセットアップを完了させます。

IBM i CI/CDのJenkinsの初期化処理に上記Jenkinsサーバーの情報を入力して、初期化を完了させます。
初期化が完了すると以下の画面となります。
image.png
上記に画面にあるとおり、外部Jenkinsサーバーを使用する場合はibmiplugin.jarをダウンロードして/home/merlin/resources以下に配置しておく必要があります。このjarにJekinsからアクセスできるように必要に応じてアクセス権限も変更しておきます。

次に必要なJenkinsのプラグインをインストールします。
Jenkinsの構成 -> Jenkinsプラグイン
にて欠落しているプラグインが表示されるので、これらのプラグインをJenkinsにインストールします。

これでCI/CDのタスクが実行できる準備ができたので、
タスク管理 -> 新規タスクの作成
にて自動化タスクを作成します。
例として以下のようなタスクを作成します。
image.png
ビルド部分はCLコマンドでの実行が可能です。
(今回はテストのCLコマンドを入れています)

タスク管理 -> タスク・ダッシュボード
でタスクを選択し、右クリック -> タスクの実行で実行を行います。
image.png
実行したタスクは
Jenkinsの構成 -> Jenkinsジョブの管理
にて一覧を見ることが可能です。
image.png
Jenkinsサーバー側で詳細のジョブの詳細を確認することも可能です。
image.png
作成したジョブはJenkins側で追加設定を行うことで定期実行やGitHubとの連携実行も可能となります。

6
0
0

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
6
0