第 15 章 将自定义代码部署到 Data Grid


将自定义代码(如脚本和事件监听程序)添加到您的 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。

在某些情况下,只有 ReadOnlyManyReadWriteOnce 访问模式可用。您可以通过回收并使用相同的 spec.volumeName 的 PVC 来结合使用这些访问模式。

注意

使用 ReadWriteOnce 访问模式会导致集群中的所有 Data Grid pod 调度到同一 OpenShift 节点上。

流程

  1. 切换到 Data Grid 集群的命名空间。

    $ 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 命名空间并等待它就绪。

    $ oc apply -f datagrid-libs-pod.yaml
    $ oc wait --for=condition=ready --timeout=2m pod/datagrid-libs-pod
  6. 将代码工件复制到 pod 中,以便它们加载到 PVC 中。

    例如,要从本地 libs 目录中复制代码工件,请执行以下操作:

    $ 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 集群,以便它可以加载更改。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.