Red Hat OpenShift 集成

Red Hat OpenShift 是一个混合云平台,可提供增强的安全功能并更好地控制 Kubernetes 群集。此外,OpenShift 还提供了 OperatorHub,它是一个满足 OpenShift 要求的操作器编录。

有关 OpenShift 平台的全面说明,请参阅 Red Hat OpenShift 官方文档

具有安全上下文约束的增强安全性

OpenShift 要求每个部署都使用安全上下文约束 (SCC) 来实施增强的安全措施。SCC 使管理员可以控制群集中 pod 的权限。例如,您可以在多用户环境中限制特定用户的命名空间访问权限。

默认 SCC

OpenShift 提供默认 SCC,无需手动配置即可提供一系列安全功能。基于 Kubernetes 的 Vertica 支持privileged SCC,这是最严格的默认 SCC。privileged SCC 允许 Vertica 将用户和组 ID 分配给群集中的 Kubernetes 对象。此外,privileged SCC 具有下列可用于在 pod 之间启用内部 SSH 通信的 Linux 功能:

  • SYS_CHROOT

  • AUDIT_WRITE

anyuid-extra 自定义 SCC

Vertica 提供了一个名为 anyuid-extra 的自定义 SCC,您可以通过创建该自定义 SCC 来扩展 anyuid SCC。如果您希望 Vertica 的运行环境比privileged SSC 允许的环境宽松,请使用 anyuid-extra SCC。例如,如果您无权授予privileged SCC,则可以创建 anyuid-extra SCC 并将其添加到您的 Vertica 工作负载服务帐户。

有关安装的详细信息,请参阅使用 anyuid-extra 创建自定义 SCC

安装操作器

VerticaDB 操作器是由 Vertica 维护的社区操作器。OperatorHub 中可用的每个操作器都必须遵守 Operator Lifecycle Manager (OLM) 定义的要求。为了满足这些要求,供应商必须为每个操作器提供群集服务版本 (CSV) 清单。Vertica 为 OpenShift OperatorHub 中可用的每个 VerticaDB 操作器版本提供一个 CSV。

VerticaDB 操作器支持 OpenShift 4.8 及更高版本。

您必须拥有 OpenShift 帐户的群集管理员权限才能安装 VerticaDB 操作器。有关详细的安装说明,请参阅 OpenShift 文档

在多个 OpenShift 命名空间中安装操作器

默认情况下,OpenShift 用户界面 (UI) 将 VerticaDB 操作器安装在单个 OpenShift 命名空间中。在某些情况下,您可能需要操作器跨多个 OpenShift 命名空间监视和管理资源对象。

先决条件

以下步骤将 VerticaDB 操作器添加到其他命名空间:

  1. 创建 YAML 格式的 OperatorGroup 对象文件。以下示例创建了名为 operatorgroup.yaml 的文件:

    apiVersion: operators.coreos.com/v1alpha2
    kind: OperatorGroup
    metadata:
      name: vertica-operatorgroup
      namespace: $NAMESPACE
    spec:
      targetNamespaces:
      - $NAMESPACE
    

    在前面的命令中,$NAMESPACE 是您要安装操作器的命名空间。

  2. 创建 OperatorGroup 对象:

    $ oc apply -f operatorgroup.yaml
    
  3. 创建 YAML 格式的 Subscription 对象文件,以订阅操作器命名空间。以下示例创建了名为 sub.yaml 的文件:

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: verticadb-operator
      namespace: $NAMESPACE
    spec:
      channel: stable
      name: verticadb-operator
      source: community-operators
      sourceNamespace: openshift-marketplace
    
  4. 创建 Subscription 对象:

    $ oc apply -f sub.yaml
    

    创建 Subscription 对象后,OLM 能够识别该操作器。

  5. 使用 kubectl get 在单独的 shell 中查看安装进度:

    $ kubectl get -n $NAMESPACE clusterserviceversion -w --selector operators.coreos.com/verticadb-operator.$NAMESPACE
    

安装完成后,您可以从 UI 管理操作器。

使用 anyuid-extra 创建自定义 SCC

在创建操作器之前,您必须创建 anyuid-extra SCC 并将其添加到您的 Vertica 工作负载服务帐户。Vertica anyuid-extra SCC 清单可在 Vertica GitHub 存储库中获得。

  1. 使用 anyuid-extra YAML 格式的清单创建自定义 SCC:

    $ kubectl apply -f https://github.com/vertica/vertica-kubernetes/releases/download/v1.4.0/custom-scc.yaml
    

    有关详细信息,请参考 OpenShift 文档

  2. 执行以下命令将自定义 SCC 添加到您的 Vertica 工作负载服务帐户:

    $ oc adm policy add-scc-to-user -n $NAMESPACE -z verticadb-operator-controller-manager anyuid-extra
    

    在前面的命令中,$NAMESPACE 是安装了操作器的命名空间。

默认情况下,anyuid-extra 的优先级设置为 10,因此会自动选择该 SCC(而非择默认的privileged SCC)。有关优先级设置的更多详细信息,请参阅 OpenShift 文档

在 OpenShift 上部署 Vertica

安装 VerticaDB 操作器并将受支持的 SCC 添加到您的 Vertica 工作负载服务帐户后,您可以在 OpenShift 上部署 Vertica。

有关在受支持的环境中安装 OpenShift 的详细信息,请参阅 OpenShift 容器平台安装概述

在 OpenShift 上部署 Vertica 之前,请创建所需的 Secret 以存储敏感信息。有关 Secret 和 OpenShift 的详细信息,请参阅 OpenShift 文档。有关部署 Vertica 自定义资源的指导,请参阅创建自定义资源