第19章 Data Grid へのカスタムコードのデプロイ
スクリプトやイベントリスナーなどのカスタムコードを Data Grid クラスターに追加します。
カスタムコードを Data Grid クラスターにデプロイする前に、これを利用可能にする必要があります。これを行うには、永続ボリューム (PV) からアーティファクトをコピーするか、HTTP または FTP サーバーからアーティファクトをダウンロードします。あるいは、両方の方法を使用することができます。
19.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 ノードにスケジュールされます。
手順
Data Grid クラスターの namespace に変更します。
oc project rhdg-namespace
以下のように、カスタムコードアーティファクトの PVC を作成します。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: datagrid-libs spec: accessModes: - ReadWriteMany resources: requests: storage: 100Mi
PVC を適用します。
oc apply -f datagrid-libs.yaml
以下のように、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.4 volumeMounts: - mountPath: /tmp/libs name: lib-pv-storage
Pod を Data Grid namespace に追加し、準備ができるまで待機します。
oc apply -f datagrid-libs-pod.yaml oc wait --for=condition=ready --timeout=2m pod/datagrid-libs-pod
コードのアーティファクトを Pod にコピーし、それらが PVC に読み込まれるようにします。
たとえば、ローカルの
locallibs
ディレクトリーからコードアーティファクトをコピーするには、以下を実行します。oc cp --no-preserve=true libs datagrid-libs-pod:/tmp/
Pod を削除します。
oc delete pod datagrid-libs-pod
永続ボリュームを
Infinispan
CR のspec.dependencies.volumeClaimName
で指定してから、変更を適用します。apiVersion: infinispan.org/v1 kind: Infinispan metadata: name: infinispan spec: replicas: 2 dependencies: volumeClaimName: datagrid-libs service: type: DataGrid
永続ボリュームでカスタムコードを更新する場合は、変更を読み込むことができるように、Data Grid クラスターを再起動する必要があります。