第15章 Data Grid へのカスタムコードのデプロイ

スクリプトやイベントリスナーなどのカスタムコードを Data Grid クラスターに追加します。

カスタムコードを Data Grid クラスターにデプロイする前に、これを利用可能にする必要があります。これを行うには、永続ボリューム (PV) からアーティファクトをコピーするか、HTTP または FTP サーバーからアーティファクトをダウンロードします。あるいは、両方の方法を使用することができます。

15.1. Data Grid クラスターへのコードアーティファクトのコピー

アーティファクトを永続ボリューム (PV) に追加してから、これらを Data Grid Pod にコピーします。

この手順では、以下を実行する永続ボリューム要求 (PVC) をマウントする一時的な Pod を使用する方法について説明します。

  • コードのアーティファクトを PV に追加できます (書き込み操作を実行します)。
  • Data Grid Pod が PV からコードアーティファクトをロードできるようにします (読み取り操作を実行します)。

これらの読み取りおよび書き込み操作を実行するには、特定の PV アクセスモードが必要です。ただし、さまざまな PVC アクセスモードのサポートはプラットフォームに依存します。

さまざまなプラットフォームで PVC を作成する方法については、本書では扱いません。分かりやすくするため、以下の手順では ReadWriteMany アクセスモードの PVC を示しています。

場合によっては、ReadOnlyMany または ReadWriteOnce アクセスモードのみを使用できます。同じ spec.volumeName の PVC を回収し、再利用することで、これらのアクセスモードの組み合わせを使用できます。

注記

ReadWriteOnce アクセスモードを使用すると、クラスター内のすべての Data Grid Pod が同じ OpenShift ノードにスケジュールされます。

手順

  1. Data Grid クラスターの namespace に変更します。

    $ oc project rhdg-namespace
  2. 以下のように、カスタムコードアーティファクトの PVC を作成します。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: datagrid-libs
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 100Mi
  3. PVC を適用します。

    $ oc apply -f datagrid-libs.yaml
  4. 以下のように、PVC をマウントする Pod を作成します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: datagrid-libs-pod
    spec:
      securityContext:
        fsGroup: 2000
      volumes:
        - name: lib-pv-storage
          persistentVolumeClaim:
            claimName: datagrid-libs
      containers:
        - name: lib-pv-container
          image: registry.redhat.io/datagrid/datagrid-8-rhel8:8.2
          volumeMounts:
            - mountPath: /tmp/libs
              name: lib-pv-storage
  5. Pod を Data Grid namespace に追加し、準備ができるまで待機します。

    $ oc apply -f datagrid-libs-pod.yaml
    $ oc wait --for=condition=ready --timeout=2m pod/datagrid-libs-pod
  6. コードのアーティファクトを Pod にコピーし、それらが PVC に読み込まれるようにします。

    たとえば、ローカルの locallibs ディレクトリーからコードアーティファクトをコピーするには、以下を実行します。

    $ oc cp --no-preserve=true libs datagrid-libs-pod:/tmp/
  7. Pod を削除します。

    $ oc delete pod datagrid-libs-pod

    永続ボリュームを Infinispan CR の spec.dependencies.volumeClaimName で指定してから、変更を適用します。

    apiVersion: infinispan.org/v1
    kind: Infinispan
    metadata:
      name: example-infinispan
    spec:
      replicas: 2
      dependencies:
        volumeClaimName: datagrid-libs
      service:
        type: DataGrid
注記

永続ボリュームでカスタムコードを更新する場合は、変更を読み込むことができるように、Data Grid クラスターを再起動する必要があります。