5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Open Liberty Operatorを試してみる

Last updated at Posted at 2020-08-01

OpenShift初学者です。まだ画面をポチポチし始めたところで全く理解できていないのですが、とりあえず、慣れ親しんだJava EEアプリケーション・サーバーであるOpen Liberty用のOperatorを見つけたので、試してみることにしました。

Open Liberty Operatorでできることは以下の3つです。

  1. Configuration - Open Liberty Imageとして作成されたアプリケーション・イメージを、Kubernetesクラスターにデプロイする
  2. Day-2 Operations:Request server dump - 1.でデプロイして稼働中のPodでダンプを収集する
  3. 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 コンソールで選んでインストールするだけです。

  1. OpenSift container Platform Web コンソールの「Administratorパースペクティブ」で、「OperatorHub」を開きます。
    image.png

  2. Liberyで検索するとOpen Liberty Operatorが見つかります。
    image.png

  3. Open Liberty Operatorをインストールします。
    image.png

  4. 「Installed Operators」をみると、Open Liberty Operatorがインストールされたのがわかります。
    image.png
    image.png

Configuration

Open Libertyのアプリケーション・イメージをデプロイします。今回は、インストールするイメージとしてRedHatのコンテナーレジストリーにあるサンプルを使用します。

  1. 「Open Liberty Operator」の「Provided APIs」から、「Open Liberty Application」をクリックします。
    image.png

  2. 「Create OpenLibertyApplication」をクリックしてcustom resource (CR)を作成します。
    image.png

  3. Custom Resource Definition (CRD)のサンプルが入力済みのYAMLエディターが表示されます。このまま「Create」するとRedHatのサードパーティー製品コンテナーレジストリーにあるOpen Liberty Samplesアプリケーション・イメージがdemo-appという名前でデプロイされます。今回は、後ほどOperatorを使用してDay-2 Operationsを実施するつもりなので、そのために必要な設定を4.でCRDに追加します。
    image.png

  4. Storage for serviceabilityをCRDに追加します。OpenLibertyApplicationの全てのpodで共有する永続ストレージを用意して、そこにダンプやトレースを出力するためです。

    ここで、serviceability.sizeを指定するとPersistent Volume Claim(PVC)が自動で作成されるのですが、試したところ、More that one accessmode is not supported.というエラーとなりPersistent Volumeが作成されません。
    image.png
    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に指定します。

    CRD
    apiVersion: 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
    
  5. 「Create」をクリックすると、アプリケーションがデプロイされ、Podが開始しました。CRDでexpose: trueと指定したのでRouteも作成されてアプリケーションが公開されています。

    • Operators / Installed Operators / Open Liberty Operator / Open Liberty Application
      image.png
    • Workloads / Pods
      image.png
    • Workloads / Deployments
      image.png
    • Workloads / Replica Sets
      image.png
    • Networking / Services
      image.png
    • Networking / Routes
      image.png
  6. Routeの「Location」に記載のURIからアプリケーションにアクセス出来ました。
    image.png

Persistent Volume Claimの作成

Storage for serviceabilityのためのPersistent Volume Claim(PVC)を作成します。

  1. 「Administratorパースペクティブ」で、「Persistent Volume Claims」を開きます。
    image.png

  2. 「Create Persistent Volume Claim」をクリックします。
    image.png

  3. 「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 ユーザー・アクセスの追加が失敗する
    image.png

  4. Status=Boundになりました。
    image.png

Day-2 Operations

Open Liberty Operatorで提供される運用・保守機能を試してみます。

Request server dump

  1. 「Open Liberty Operator」の「Provided APIs」から、「Open Liberty Dump」をクリックします。
    image.png

  2. 「Create OpenLibertyDump」をクリックしてcustom resource (CR)を作成します。
    image.png

  3. Custom Resource Definition (CRD)のサンプルが入力済みのYAMLエディターが表示されます。
    image.png

  4. spec.podNameにダンプを取得したいPodの名前を入れます。
    image.png

  5. 「Create」します。
    image.png

  6. 作成したCRを選択し、「Overviewタブ」をみると、「Conditions」で処理状況を確認できます。
    image.png

  7. 「YAMLタブ」をみると、status.dumpFileで収集されたダンプファイル名を確認できます。
    image.png

PodにマウントされたPersistent Volume上に、ダンプファイルが収集されました。

Request server traces

  1. 「Open Liberty Operator」の「Provided APIs」から、「Open Liberty Trace」をクリックします。
    image.png

  2. 「Create OpenLibertyTrace」をクリックしてcustom resource (CR)を作成します。
    image.png

  3. Custom Resource Definition (CRD)のサンプルが入力済みのYAMLエディターが表示されます。
    image.png

  4. spec.podNameにトレースを取得したいPodの名前を入れます。
    image.png

  5. 「Create」します。
    image.png

  6. 作成したCRを選択し、「Overviewタブ」をみると、「Conditions」で状態を確認できます。
    image.png

  7. /serviceability/NAMESPACE/POD_NAME/にmessages.logとtrace.logが出力されています。
    (下図はPodのTerminalでマウントされたPersistent Volumeを確認しているところ)
    image.png

  8. CRの「YAMLタブ」で、spec.disable=trueとしてSaveすると、トレースが停止します。
    image.png
    image.png
    もしくは、CRを削除することでもトレースが停止します。

まとめ

以上、Open Liberty Operatorの3つの機能を試して、動作することを確認しました。
今回はWeb コンソールからGUI操作で試しましたが、同じことがocコマンドで実施できるはずですので、次回はそれを試してみたいと思います。

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?