OpenShift初学者です。まだ画面をポチポチし始めたところで全く理解できていないのですが、とりあえず、慣れ親しんだJava EEアプリケーション・サーバーであるOpen Liberty用のOperatorを見つけたので、試してみることにしました。
Open Liberty Operatorでできることは以下の3つです。
- Configuration - Open Liberty Imageとして作成されたアプリケーション・イメージを、Kubernetesクラスターにデプロイする
- Day-2 Operations:Request server dump - 1.でデプロイして稼働中のPodでダンプを収集する
- Day-2 Operations:Request server traces - 1.でデプロイして稼働中のPodでトレースを収集する
Red Hat OpenShift on IBM Cloud v4.3上で試しました。
ユーザーガイド通りに実施しただけですが、まずは、Web コンソール上の操作で全て行いました。
Operator installation
まずは、Open Liberty OperatorをOpenShift Cluster上にインストールします。Red Hat OpenShift on IBM CloudのOperatorHubにはOpen Liberty Operator v0.6.1が登録されていたので、Web コンソールで選んでインストールするだけです。
-
OpenSift container Platform Web コンソールの「Administratorパースペクティブ」で、「OperatorHub」を開きます。
-
「Installed Operators」をみると、Open Liberty Operatorがインストールされたのがわかります。
Configuration
Open Libertyのアプリケーション・イメージをデプロイします。今回は、インストールするイメージとしてRedHatのコンテナーレジストリーにあるサンプルを使用します。
-
「Open Liberty Operator」の「Provided APIs」から、「Open Liberty Application」をクリックします。
-
「Create OpenLibertyApplication」をクリックしてcustom resource (CR)を作成します。
-
Custom Resource Definition (CRD)のサンプルが入力済みのYAMLエディターが表示されます。このまま「Create」するとRedHatのサードパーティー製品コンテナーレジストリーにあるOpen Liberty Samplesアプリケーション・イメージが
demo-app
という名前でデプロイされます。今回は、後ほどOperatorを使用してDay-2 Operationsを実施するつもりなので、そのために必要な設定を4.でCRDに追加します。
-
Storage for serviceabilityをCRDに追加します。OpenLibertyApplicationの全てのpodで共有する永続ストレージを用意して、そこにダンプやトレースを出力するためです。
ここで、
serviceability.size
を指定するとPersistent Volume Claim(PVC)が自動で作成されるのですが、試したところ、More that one accessmode is not supported.
というエラーとなりPersistent Volumeが作成されません。
Open Liberty OperatorのガイドにはThe operator will automatically create a PersistentVolumeClaim with the specified size and access modes ReadWriteMany and ReadWriteOnce.
のようにアクセス・モードを2つ設定すると記載されていますが、Red Hat OpenShift on IBM Cloudのクラシック IBM Cloud File StorageのガイドではaccessMode 次のオプションのいずれかを指定してください。
のようにいずれか1つしか設定できないように記載されているので、スペックに齟齬があるようです。
とりあえずここではPVCを自分で用意することにします。先にPersistent Volume Claimの作成を実施し、作成したPVC(ここではmy-pvc
)をCRDに指定します。CRDapiVersion: openliberty.io/v1beta1 kind: OpenLibertyApplication metadata: name: demo-app namespace: iue spec: replicas: 1 applicationImage: 'registry.connect.redhat.com/ibm/open-liberty-samples:springPetClinic' expose: true serviceability: volumeClaimName: my-pvc
-
「Create」をクリックすると、アプリケーションがデプロイされ、Podが開始しました。CRDで
expose: true
と指定したのでRouteも作成されてアプリケーションが公開されています。
Persistent Volume Claimの作成
Storage for serviceabilityのためのPersistent Volume Claim(PVC)を作成します。
-
「Storage Class」には、ブロックストレージは複数のPodでシェアできないのでファイルストレージ、Open Liberty OperatorのPodは非rootユーザーで稼働するのでgid storage classを選択(ここでは
ibmc-file-bronze-gid
)します。「Access Mode」はShared Access(RWX)
を選択し、「Create」します。
参考)gid storage classを選択する理由:ファイル・ストレージ: 永続ストレージに対する非 root ユーザー・アクセスの追加が失敗する
Day-2 Operations
Open Liberty Operatorで提供される運用・保守機能を試してみます。
Request server dump
-
「Open Liberty Operator」の「Provided APIs」から、「Open Liberty Dump」をクリックします。
-
Custom Resource Definition (CRD)のサンプルが入力済みのYAMLエディターが表示されます。
PodにマウントされたPersistent Volume上に、ダンプファイルが収集されました。
Request server traces
-
「Open Liberty Operator」の「Provided APIs」から、「Open Liberty Trace」をクリックします。
-
Custom Resource Definition (CRD)のサンプルが入力済みのYAMLエディターが表示されます。
-
/serviceability/NAMESPACE/POD_NAME/
にmessages.logとtrace.logが出力されています。
(下図はPodのTerminalでマウントされたPersistent Volumeを確認しているところ)
-
CRの「YAMLタブ」で、
spec.disable=true
としてSaveすると、トレースが停止します。
もしくは、CRを削除することでもトレースが停止します。
まとめ
以上、Open Liberty Operatorの3つの機能を試して、動作することを確認しました。
今回はWeb コンソールからGUI操作で試しましたが、同じことがoc
コマンドで実施できるはずですので、次回はそれを試してみたいと思います。