PodmanでDataStage-aaS Anywhereを導入してみた
投稿者:岡本
こんにちは!
NI+C DataStage担当の岡本です。
今回はPodmanを利用したDataStage-aaS Anywhere(以降 DataStage Anywhere)の導入についてご紹介します。
以前Dockerを利用してDataStageを導入したブログを紹介しましたが、何故今回はPodmanで建てるのか?
それは2021年9月より料金体系が変わりほとんどの企業で有料となってしまったからです。
(2024/11/13現在 参考:https://www.docker.com/ja-jp/pricing)
DataStage Anywhereのアーキテクチャは、DataStage(コントロールプレーン)とpx-runtime(実行エンジン)の2つのコンポーネントに分割されていて実行エンジンはDockerまたはPodmanを使用してデプロイすることができるので、今後はPodmanを利用するお客様が増えるであろうと見込んで検証することにしました。
Podmanとは?
それではあらためて、Podmanについて簡単にご説明します。
PodmanはRedhatが開発したコンテナを開発、管理、実行するためのオープンソースツールで
Docker互換を目指しています。
DockerとPodmanの違いとしては、下記のような点が挙げられます。
・Dockerはデーモンが常にバックグラウンドで実行されコンテナの管理を行うのに対して、Podmanはデーモンレスで各コンテナは独自のプロセスとして実行される。
・標準構成の違いとしてはDockerは基本的に管理者権限で実行されますが、PodmanはデフォルトでRootlessモードで実装される。
Rootless構成の方がセキュリティの観点ではよい等ありますが、Dockerでも構成する事ができるようですし、DataStageを動かすという観点では大きな違いはなさそうですね。
px-runtime導入前の準備
今回は、弊社が社内環境として使用しているアマゾン ウェブ サービス(以下AWS )上にpx-runtimeを導入していきたいと思います。ということで、AWS上でのEC2の作成、前提となるソフトウェアのインストール、IBM Cloud側での準備を実施していきます。
■EC2インスタンスの作成
px-runtimeを導入するインスタンスをAWSのEC2で作成します。
今回作成するインスタンスの環境設定は以下の通りとなります。
OS:Red Hat Enterprise Linux 9.4
マシンタイプ:r7a.medium
ディスクサイズ:100GB
参考までに下記が最小スペックとなります。
ディスクサイズ:/var配下にフリーなスペースが50GB(200GB程度用意する事が推奨)
コア数;2コア(4コア以上が推奨)
メモリ:4GB(8GB以上が推奨)
■必要なソフトウェア(Podman・jq・git)のインストール
px-runtimeの導入の前提条件としてPodman・jq・gitをインストールする必要があります。
今回、px-runtime用にしたOSはREHL9.4であり、パッケージ管理システムであるyumコマンドを用いてインストール・アップデートを行っています。 必要ソフトウェアの導入手順は以下となります。
♦Podmanのインストール
1.Podmanをインストール
$ yum install podman
♦jqのインストール
$ yum install jq
♦gitのインストール
$ yum install git
■IBM Cloud側での準備
IBM Cloud側での準備を実施します。Dockerにインストールする場合もPodmanに導入する場合も変わらない為手順紹介は割愛します。
詳細はこちらをご参照ください。
px-runtimeの導入手順
実際にインスタンス上にpx-runtimeを導入していきたいと思います。
導入の手順は以下の通りです。
1.事前準備で作成したインスタンスを立ち上げSSH接続します。
2.Podmanを有効化して起動します。
$ systemctl enable podman
$ systemctl start podman
3.gitコマンドを実行しgit hubにあるDataStageのリポジトリをクローンします。
$ git clone https://github.com/IBM/DataStage.git
4.opensslコマンドを実行し、Encryption KeyとIVを生成します。
生成されたEncryption KeyとIVをメモします。
$ sudo openssl enc -aes-256-cbc -k secret -P -md sha1
salt= 暗号化に使用するランダムな値
key= Encryption Key
iv = Encryption IV
5.クローンしたリポジトリ内にあるdsengine.shスクリプトを以下のコマンドで実行します。
このスクリプトを実行する際に、実行エンジンの名前を任意の名前に定める必要があります。
今回は「px-runtime」と定めました。
加えて、ここまでの手順でメモしてきた値をコマンドに入力する必要があります。
・$IBMCLOUD_APIKEY:事前準備でメモしたIBM Cloud APIKey
・$ENCRYPTION_KEY:手順4で作成したEncryption Key
・$ENCRYPTION_IV:手順4で作成したEncrypition IV
・$IBMCLOUD_CONTAINER_REGISTRY_APIKEY:事前準備でメモしたIBM Cloud Container Registry APIKey
・$PROJECT_ID:事前準備でメモしたプロジェクトID
$ ./dsengine.sh start -n "px-runtime"
-a "$IBMCLOUD_APIKEY"
-e "$ENCRYPTION_KEY"
-i "$ENCRYPTION_IV"
-p "$IBMCLOUD_CONTAINER_REGISTRY_APIKEY"
--project-id "$PROJECT_ID"
”Remote Engine setup is complete”が表示されたらインストール成功です。
6.Podmanのpsコマンドでコンテナが上がっていることを確認します。
$ podman ps
それでは次にIBM Cloud Pak for Dataのコンソールで連携されているかを確認していきましょう。
px-runtimeの登録確認
「DataStage-aaS Anywhere」プロジェクトを開き、管理画面の環境をクリックします。
1行目に今回導入したpx-runtimeが登録されていることが確認できました。
簡単なジョブを作成して実行確認もしてみます。
ジョブを作成し、ランタイムの設定で今回作成したエンジンを紐づけます。
いざ実行。
正常終了しましたね!
まとめ
今回はDataStage Anywhereの実行エンジンであるpx-runtimeをAWS上にPodmanを利用して導入してみました。
■導入時の気付き
DockerをPodmanに置き換えたことによって、プロセス確認のコマンドがDockerコマンドからPodmanコマンドになるなどの違いはありますが、Podmanを利用しても基本的な導入手順については変わらずクイックに導入できることが確認出来ました。
今回はシングル構成での導入の為、大きな違いはなく導入が出来ましたが、冗長構成等を組む場合はDockerとPodmanでそれぞれに適したアーキテクチャで対応する事になるかと思いますので、そこで手間の違いは出てきそうですね(例えば冗長構成ではPodmanではk8sが検討される事が多いかと思いますが、Dockerはk8sとの組み合わせが非推奨の為Docker Swarmを利用する等)。
冗長構成については今後社内検証をする機会がありましたら改めてブログでご報告していきたいと思います。
本ブログを読んでいただき、ありがとうございました。