2021年07月

06

第二回:【やってみた】WebSphere Hybrid Editionを導入してみた:WebSphere Liberty導入編

こんにちは。
てくさぽ BLOG メンバーの岡田です。

IBM WebSphere Hybrid Edition(以下、WSHE)の導入をAzure上で検証してみた3回シリーズの2回目になります。

本記事では前回実施したAzure上にインストールしたOpenShift4.5環境に、WebSphere Liberty Coreをインストールしていきます。

第一回:【やってみた】WebSphere Hybrid Editionを導入してみた:OpenShift導入編
第二回:【やってみた】WebSphere Hybrid Editionを導入してみた:WebSphere Liberty導入編 *本編
第三回:【やってみた】WebSphere Hybrid Editionを導入してみた:ツール編

1.WSHEというソフトウェアが無い?

そもそもWSHEとはどのようなソフトウェアなのでしょうか。
分かりづらいですが、WSHEライセンスを購入してもWSHEというソフトウェアが利用できるわけではありません。WSHEライセンスは以下のWebSphere ApplicationServer関連の主要な製品をまとめたものです。

WebSphere Application Serverは,従来型のWebSphere traditionalおよび,コンテナ環境にも対応したWebSphere Libertyの二種類のランタイムがあります。今回は、WebSphere Libertyランタイムをインストールしてみます。
                                        

2.作業用サーバーを用意する

今回、Azure上に構築したRHEL8サーバーに以下を導入します。*個々のインストール手順は省略

  • ocコマンド
  • podmanコマンド
  • helmコマンド

3.WebSphere Libertyのインストール

ここからは、Azure上のRHEL8サーバーにログインして行います。

(1)統合OCPレジストリーへのアクセス権を付与する

・OCPにログインします。

oc login -u kubeadmin -p  <パスワード> https://api.nicpwhecluster.xxx.com:6443

・oc get nodesでノードのホスト名を確認します。

$ oc get node
NAME STATUS ROLES AGE VERSION
nicpwhecluster-h8lq5-master-0 Ready master 4d23h v1.18.3+e574db2
nicpwhecluster-h8lq5-master-1 Ready master 4d23h v1.18.3+e574db2
nicpwhecluster-h8lq5-master-2 Ready master 4d23h v1.18.3+e574db2
nicpwhecluster-h8lq5-worker-japaneast-1 Ready worker 4d23h v1.18.3+e574db2
nicpwhecluster-h8lq5-worker-japaneast-2 Ready worker 4d23h v1.18.3+e574db2
nicpwhecluster-h8lq5-worker-japaneast-3 Ready worker 4d23h v1.18.3+e574db2

・今回はマスターノードの1つ「nicpwhecluster-h8lq5-master-0」で実行します。クラスタから内部経路を使ってレジストリにアクセスします。

$ oc debug nodes/nicpwhecluster-h8lq5-master-0
Starting pod/nicpwhecluster-h8lq5-master-0-debug …
To use host binaries, run `chroot /host`
Pod IP: 10.0.0.7
If you don’t see a command prompt, try pressing enter.
sh-4.2#

・ノード上でocやpodmanなどのツールにアクセスできるように次のコマンドを実行します。

sh-4.2# chroot /host
sh-4.4#

・アクセストークンを使用して、コンテナイメージ・レジストリにログインします。

sh-4.4# oc login -u kubeadmin -p <パスワード> https://api.nicpwhecluster.xxx.com:6443
The server uses a certificate signed by an unknown authority.
You can bypass the certificate check, but any data you send to the server could be intercepted by others.
Use insecure connections? (y/n): yLogin successful.You have access to 58 projects, the list has been suppressed. You can list all projects with ‘oc projects’Using project “default”.Welcome! See ‘oc help’ to get started.
sh-4.4#
sh-4.4# podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
WARNING! Using –password via the cli is insecure. Please consider using –password-stdin
Login Succeeded!
sh-4.4#

・動作確認します。レジストリdocker.ioからイメージをローカルに持ってきます。

sh-4.4# podman pull docker.io/hello-world
Trying to pull docker.io/hello-world…
Getting image source signatures
Copying blob 0e03bdcc26d7 done
Copying config bf756fb1ae done
Writing manifest to image destination
Storing signatures
bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
sh-4.4#

・取得できたか確認します。

sh-4.4# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/openshift-release-dev/ocp-v4.0-art-dev <none> e62c0ee30db5 3 weeks ago 505 MB
quay.io/openshift-release-dev/ocp-v4.0-art-dev <none> b920241dcb5e 3 weeks ago 331 MB
quay.io/openshift-release-dev/ocp-v4.0-art-dev <none> 14b9f9be4696 3 weeks ago 312 MB
(途中省略)
quay.io/openshift-release-dev/ocp-v4.0-art-dev <none> 088760d6a49a 3 weeks ago 912 MB
docker.io/library/hello-world latest bf756fb1ae65 13 months ago 20 kB
sh-4.4#

・レジストリに対してpodman pushを実行します。

sh-4.4# podman tag docker.io/hello-world image-registry.openshift-image-registry.svc:5000/openshift/hello-world
sh-4.4# podman push image-registry.openshift-image-registry.svc:5000/openshift/hello-world
Getting image source signatures
Copying blob 9c27e219663c done
Copying config bf756fb1ae done
Writing manifest to image destination
Storing signatures
sh-4.4#
(2)統合OCPレジストリーのエクスポーズ

・DefaultRoute を 「True」にします。

$ oc patch configs.imageregistry.operator.openshift.io/cluster –patch ‘{“spec”:{“defaultRoute”:true}}’ –type=merge
config.imageregistry.operator.openshift.io/cluster patched (no change)
$

・podmanでログインします。

$ HOST=$(oc get route default-route -n openshift-image-registry –template='{{ .spec.host }}’)
$ echo $HOST
default-route-openshift-image-registry.apps.nicpwhecluster.xxx.com
$
$ oc whoami -t
M3Dbj0zF2oK68yG21jf7WTV37XeWR8EKRagF62QJOL0
$
$ podman login -u kubeadmin -p <パスワード> –tls-verify=false $HOST
Login Succeeded!
(3)SecurityContextConstraints (SCC) の定義

https://github.com/IBM/charts/tree/master/stable/ibm-websphere-liberty内の記載から以下の赤枠箇所の内容を含んだyamlファイルを作成します。今回はibm-websphere-liberty-scc.yamlという名前で作成しました。

・oc applyコマンドでibm-websphere-liberty-scc を定義します。

$ oc apply -f ./ibm-websphere-liberty-scc.yaml
securitycontextconstraints.security.openshift.io/ibm-websphere-liberty-scc created
(4)プロジェクトwlp-sample作成

Websphere Liberty用にプロジェクトを作成します。今回は、Webコンソールから「wlp-sample」という名前で作成します。

(5)コンテナ・イメージのビルド

・server.xmlの用意
https://github.com/WASdev/ci.docker/blob/master/ga/latest/full/server.xml内の、36行あるserver.xmlの内容をコピーし、ファイルserver.xmlを作成します。

・以下の内容のDockerファイルを作成します。

FROM ibmcom/websphere-liberty:19.0.0.12-full-java8-ibmjava-ubi
COPY –chown=1001:0? server.xml /config/
RUN installUtility install –acceptLicense defaultServer

・コンテナ・イメージをビルドします。

$ podman build -f ./Dockerfile -t mylibertyapp:1.0
STEP 1: FROM ibmcom/websphere-liberty:19.0.0.12-full-java8-ibmjava-ubi
Getting image source signatures
Copying blob 58e1deb9693d done
Copying blob 78afc5364ad2 done
Copying blob 3325260754e7 done
Copying blob 4427719dd2c9 done
Copying blob c059e0bc6ac9 done
Copying blob 0169ad963667 done
Copying blob 6195cb089ab9 done
Copying blob 9f87c21e1265 done
Copying blob 725fc7f0231d done
Copying blob 0331a4de6fdc done
Copying blob bdab1c39af4a done
Copying blob f5b53ae0ca41 done
Copying config ce3acc7fda done
Writing manifest to image destination
Storing signatures
STEP 2: COPY –chown=1001:0 server.xml /config/
fbd6f3d9cba9a7a72ac7a0dc3e3011b6400fdb2fd3e21fa34959dfe1925af803
STEP 3: COPY –chown=1001:0 SampleWebApp.war /config/dropins/
d64e1ce4931688a84d354446fbd4fa9f4744ef65cdcb187f830a2c9ea114dff8
STEP 4: RUN installUtility install –acceptLicense defaultServer
Checking for missing features required by the server …
The server does not require any additional features. No features were installed.Start product validation…
Product validation completed successfully.
STEP 5: COMMIT mylibertyapp:1.0
515b092feddf7a2ebb165bbdab187bbfd54bf3bf09b55651b990b7da5b76f767
$

・作成されたイメージを確認します。

$ podman images | grep myliberty
localhost/mylibertyapp     1.0      515b092feddf      28 seconds ago     738 MB
$
(6)Buildしたコンテナイメージを統合OCPレジストリーにpush

・まず統合OCPレジストリーへログインします。

$ podman login default-route-openshift-image-registry.apps.nicpwhecluster.xxx.com -u kubeadmin -p 75tT5caixaa_Mm7K6HiVT6xvbyFWeoHf1Dp1soB-21Y –tls-verify=false
Login Succeeded!
$

・ビルドしたイメージに統合OCPレジストリーのホスト名とプロジェクトを示す名前を付与します。
実行したらpodman imagesコマンドで確認します。

$ podman tag mylibertyapp:1.0 default-route-openshift-image-registry.apps.nicpwhecluster.xxx.com/wlp-sample/mylibertyapp:1.0

$ podman images | grep myliberty
localhost/mylibertyapp 1.0 515b092feddf 5 minutes ago 738 MB
default-route-openshift-image-registry.apps.nicpwhecluster.xxx.com/wlp-sample/mylibertyapp 1.0 515b092feddf 5 minutes ago 738 MB
$

・統合OCPレジストリーへコンテナ・イメージを登録(push)します。

$ podman push default-route-openshift-image-registry.apps.nicpwhecluster.xxx.com/wlp-sample/mylibertyapp:1.0 –tls-verify=false
Getting image source signatures
Copying blob 995a5e8c59d9 done
Copying blob 9e4e9b467e1d done
Copying blob 18bd03b00625 done
Copying blob 33037ee11bc5 done
Copying blob 1d7ab3c032a8 done
Copying blob da31cc4e7dec done
Copying blob eeb6d8f926af done
Copying blob 1228a4ab5ec0 done
Copying blob 1235447b1b10 done
Copying blob 60d1e32eff28 done
Copying blob 6ab8cd79d784 done
Copying blob 86b23fed23f4 done
Copying blob 597be5f3fcff done
Copying blob 7dd002d4a36c done
Copying blob 6a5e24c477f6 done
Copying config 515b092fed done
Writing manifest to image destination
Copying config 515b092fed done
Writing manifest to image destination
Storing signatures
$

・コンテナ・イメージが統合OCPレジストリーにpushされたことを確認します。

$ oc get imagestream
NAME IMAGE REPOSITORY TAGS UPDATED
mylibertyapp default-route-openshift-image-registry.apps.nicpwhecluster.xxx.com/wlp-sample/mylibertyapp 1.0 55 seconds ago$ oc describe imagestream mylibertyapp
Name: mylibertyapp
Namespace: wlp-sample
Created: About a minute ago
Labels: <none>
Annotations: <none>
Image Repository: default-route-openshift-image-registry.apps.nicpwhecluster.xxx.com/wlp-sample/mylibertyapp
Image Lookup: local=false
Unique Images: 1
Tags: 11.0
no spec tag* image-registry.openshift-image-registry.svc:5000/wlp-sample/mylibertyapp@sha256:bc6bc8fac41fd59b42d37e02888a3348f057c5caa0d8b41fd74d9e9f4aabdab4
About a minute ago
$
(7)SCCをサービス・アカウントに付与(grant)

・(3)で作成したibm-websphere-liberty-sccをWebSphere Libertyが使用するサービス・アカウントに付与します。

$ oc project wlp-sample

$ oc adm policy add-scc-to-user ibm-websphere-liberty-scc -z mylibertyapp-ibm-websphe
clusterrole.rbac.authorization.k8s.io/system:openshift:scc:ibm-websphere-liberty-scc added: “mylibertyapp-ibm-websphe”
$

(8)WebSphere LibertyのPodをデプロイ

・Helm Chartから変数ファイルを抽出します。
*WebSphere Liberty用helm Chart(「ibm-websphere-liberty-1.10.0.tgz」)をhttps://github.com/IBM/charts/tree/master/repo/stable からダウンロードしておきます。

$ helm inspect values ./ibm-websphere-liberty-1.10.0.tgz > mylibertyapp.yaml

・抽出した変数ファイルをエディタで開いてパラメーターを修正します。今回は以下の2箇所を更新しました。

ー (変更前)license: “”  ⇒ (変更後)license: “accept”
ー (変更前)ssl: enabled: true ⇒ (変更後)ssl: enabled: false

・修正した変数ファイルを指定して「helm install」コマンドを実行し、デプロイします。

$ helm install mylibertyapp ./ibm-websphere-liberty-1.10.0.tgz -f ./mylibertyapp.yaml
NAME: mylibertyapp
LAST DEPLOYED: Mon Mar 1 08:26:17 2021
NAMESPACE: wlp-sample
STATUS: deployed
REVISION: 1
NOTES:
+ If you are running on IBM Cloud Kubernetes Service, get the application address by running these commands:
ibmcloud cs workers $(kubectl config current-context)
export NODE_IP=<Worker node public IP from the first command>
export NODE_PORT=$(kubectl get –namespace wlp-sample -o jsonpath=”{.spec.ports[0].nodePort}” services mylibertyapp-ibm-websphe)
echo Application Address: http://$NODE_IP:$NODE_PORTOtherwise, run the following commands:
export NODE_IP=$(kubectl get nodes -l proxy=true -o jsonpath=”{.items[0].status.addresses[?(@.type==\”Hostname\”)].address}”)
export NODE_PORT=$(kubectl get –namespace wlp-sample -o jsonpath=”{.spec.ports[0].nodePort}” services mylibertyapp-ibm-websphe)
echo Application Address: http://$NODE_IP:$NODE_PORT
$

・正常にデプロイできたか確認します。

$ helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mylibertyapp wlp-sample 1 2021-03-01 08:26:17.876891227 +0000 UTC deployed ibm-websphere-liberty-1.10.0 19.0.0.6
$

・作成された主要なOCPリソースの一覧と状況を確認します。

$ oc get all -l app=mylibertyapp-ibm-websphe
NAME READY STATUS RESTARTS AGE
pod/mylibertyapp-ibm-websphe-76478c8fcd-ngqpp 1/1 Running 0 82sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/mylibertyapp-ibm-websphe NodePort 172.30.179.226 <none> 9080:30797/TCP 82sNAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/mylibertyapp-ibm-websphe 1/1 1 1 82sNAME DESIRED CURRENT READY AGE
replicaset.apps/mylibertyapp-ibm-websphe-76478c8fcd 1 1 1 82s
$
(9)手作業でRouteを定義し、WebSphere Libertyにアクセスします

・作成されたServiceを確認します。

$ oc get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mylibertyapp-ibm-websphe NodePort 172.30.179.226 <none> 9080:30797/TCP 112s

・Routeを作成します。

$ oc expose service mylibertyapp-ibm-websphe
route.route.openshift.io/mylibertyapp-ibm-websphe exposed
$

・RouteのHOST名を確認します。

$ oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
mylibertyapp-ibm-websphe mylibertyapp-ibm-websphe-wlp-sample.apps.nicpwhecluster.xxx.com mylibertyapp-ibm-websphe http None
$

・最後に、Webページにアクセスしてみます。
ー コマンドの場合

$ curl -s http://mylibertyapp-ibm-websphe-wlp-sample.apps.nicpwhecluster.xxx.com
<!DOCTYPE html>
<html lang=”en” xml:lang=”en”>
<head>
<meta charset=”utf-8″ name=”viewport”
content=”width=device-width,initial-scale=1.0″>
<!–title data-externalizedString=”WELCOME_TITLE”></title–>
<title>WebSphere Liberty 19.0.0.12</title>
<style>
@font-face {
font-family: IBMPlexSans-Medium;
src: url(‘fonts/IBMPlexSans-Medium.woff’);
}
(以下、省略)

ー Webブラウザの場合

4.まとめ

いかがでしたでしょうか。
コンテナ版なのでインストールは簡単かな、と思っていたのですが実行するコマンドも多くて結構大変だった印象です。大まかには「コンテナイメージのビルド」⇒「OCPレジストリにプッシュ」⇒「Podのデプロイ」という流れなのですがそれぞれの工程ごとにいろいろなコマンドを打つ必要があるので、実際にやってみようと思われている方の参考になればと思います。

ここまでお読みいただきありがとうございました。
次回はWSHEで利用可能な各種ツール群をインストールしてみた内容をお伝えいたします。

 


この記事に関する、ご質問は下記までご連絡ください。

エヌアイシー・パートナーズ株式会社
技術支援本部
E-Mail:nicp_support@NIandC.co.jp

 

 

その他の記事

2022年06月24日

【早わかり】AIX と IBM i ライセンス情報

こんにちは。エヌアイシー・パートナーズ 村上です。 2022年度は新しい試みとして、 ・理解しているつもりだけど説明はできない ・時間があれば調べたいと思っていた ・当たり前な知識かもしれなくて質問しにくい という内容を取り上げた「早わかりシリーズ」を掲載していきます。 今回は、IBM Power のメインOS、AIX と IBM i のライセンス情報をご紹介します。 AIX とIBM i は、片方のライセンス情報しか知らないという方も意外と多いので、ぜひこの機会に比較しながら読んでみてくださいね。   セクション 1) 永続ライセンスのおさらい 2) マンスリーとサブスクリプションをご存じですか? 3) ライフサイクルとバージョンのポイント   1) 永続ライセンスのおさらい AIX とIBM i のスタンダードなライセンス「永続ライセンス」。 有効期限のない永続ライセンスは、SWMA (SoftWare MAintenance) と合わせて所有します。 永続ライセンス OSを利用できる権利。1年目に購入。 SWMA 「サブスクリプション(最新バージョンへのアップグレード)」と「テクニカルサポート(対象製品に対するQAサポート)」の権利。 1年~5年で選択し、継続するためには都度オーダーが必要。 更改などで新ハードウェアへ移行する場合、 AIX 永続ライセンスはIBM Power本体に紐づくので、新ハードウェアになるタイミングで永続ライセンスが買い直しになります IBM i 既存機のライセンスを新ハードウェア移管することが可能です(移行先の機械レベルが高くなる場合は追加料金が発生) IBM i には、移行中ライセンスとして安価なITL(IBM Temporary License)が提供されたり、DR機専用のライセンスがあったりもします。   2) マンスリーとサブスクリプションをご存じですか? さて、このセクションが今回のブログの本題です。 2022年6月現在、AIX とIBM i には「永続」「マンスリー」「サブスクリプション」と3種類のライセンスがあります。 以下は利用ケースのイメージです。 利用ケース 永続ライセンス ・長期間利用 マンスリーラインセンス ・移行時の短期利用 ・スパイク(最低限の環境をさっと作って概ねの方向性を確認する) サブスクリプションライセンス ・初期投資を抑えたい場合に利用 ・HWに依存せず臨機応変に利用(中長期間でAIXの場合) サブスクリプションライセンスは、AIX は2021年、IBM i は2022年に提供が開始されました。 (表が見えにくいのでクリックして拡大してご覧ください) サブスクリプションライセンスは、今後拡張が予定されています。 利用ケースにあったライセンスを選択できるようになってきたので、臨機応変な検討ができるようになりますね。   3) ライフサイクルとバージョンのポイント 2022年6月時点で、IBMは「AIX も IBM i も将来の投資を継続する」という発表をしています。 IBM Power ユーザとしては一安心です。 どちらのOSも、サポートライフサイクルは10年間となります。 下記にバージョンのポイントを纏めてみました。 <AIX > 購入できるバージョン v7.2 , v7.3 標準サポートがあるバージョン v7.1, v7.2, v7.3 どうやってもサポートが終わっているバージョン v5.3 実はまだ有償延長サポートがあるバージョン v6.1 TLが出るタイミング(※) 1回/年、成熟してくると1回/2年 サポートライフサイクル(10年) 標準(最短6年)+延長保守(3~5年) <IBM i > 購入できるバージョン v7.3 , v7.4, v7.5 標準サポートがあるバージョン v7.3, v7.4, v7.5 どうやってもサポートが終わっているバージョン v6.1 実はまだ有償延長サポートがあるバージョン v7.1, v7.2 TRが出るタイミング(※) 2回/年(最新バージョンと1世代前のバージョンに対して) サポートライフサイクル(10年) 標準(7年)+延長保守(3年) <※TLとTRの補足> TL:テクノロジー・レベル。AIXにおける問題の修正、新しいハードウェアのサポート、ソフトウェアの機能拡張が含まれたプログラム。 TR:テクノロジー・リフレッシュ。IBM i におけるオファリング、サービス、およびハードウェアの機能拡張を提供するプログラム。 かなり前のバージョンも、延長保守のサポートがあるため更改時も安心です。 ただ、延長保守サポートは、部品不足による急な保守終了や、新規の問い合わせに対応いただけない、という面があるので要注意です。 また、延長保守サポートには細かい前提が設けられており前提にも随時変更が入りますので、ご利用を検討される際はお問い合わせください。   さいごに つい先日(2022年6月)、IBM i の複数のソフトウェアラインセンスが無償化される発表(IBM PartnerWorld)がありました。 IBM i では更改の検討が始まると、実際に利用している有償ソフトウェアの見直しが入ったりして、見積もりに時間がかかることがありますよね。 有償ライセンスが減ったことで、見積もりが少しでも簡単になり助かります。 クラウドシフトが進む中で、ライセンス体系、課金、監査方法が複雑化しています。 弊社には毎日のようにパートナー様からライセンス関連の相談やお問い合わせが来ています。 OSのみではなく、あらゆるソフトウェアのライセンス情報収集に日々奮闘(?)しているSEが多数おりますので、お困りの際はお気軽にご連絡ください! ※ 本ブログの情報は時間経過とともに変更が入る可能性があります。   お問い合わせ この記事に関する、ご質問は下記までご連絡ください。 エヌアイシー・パートナーズ株式会社 E-Mail:voice_partners@niandc.co.jp  

back to top