配置公共存储

基于 Kubernetes 的 Vertica 支持各种公共存储提供程序来满足您的存储需求。配置每个存储提供程序需要您创建一个 SecretConfigMap 来存储敏感信息,以便您可以在自定义资源 (CR) 中声明这些信息而不暴露任何字面量值。

Amazon Web Services (AWS) S3 或兼容 S3 的存储

基于 Kubernetes 的 Vertica 支持 AWS 公共存储位置和私有云 S3 存储,例如 MinIO

要连接到与 S3 兼容的存储位置,请创建一个 Secret 来存储您的公共访问权限和密钥凭证。然后,将 Secret、路径和 S3 端点添加到 CR 规范。

  1. 以下命令将 S3 兼容的公共访问权限和密钥凭证存储在名为 s3-creds 的秘密中:

    $ kubectl create secret generic s3-creds --from-literal=accesskey=accesskey --from-literal=secretkey=secretkey
    
  2. 将 Secret 添加到 CR 规范的 communal 部分:

    spec:
      ...
      communal:
        credentialSecret: s3-creds
        endpoint: https://path/to/s3-endpoint
        path: s3://bucket-name/key-name
        ...
    

有关与 S3 兼容的存储实施的详细描述,请参阅创建自定义资源。有关 Vertica 和 AWS 的更多详细信息,请参阅 用于 Amazon Web Services 的 Vertica

Google Cloud Storage

向 Google Cloud Storage (GCS) 进行身份验证需要您的基于哈希的消息身份验证代码 (HMAC) 访问权限和密钥,以及 GCS 存储桶的路径。有关 HMAC 密钥的详细信息,请参阅GCP 上 Eon 模式的先决条件

  1. 以下命令将您的 HMAC 访问权限和密钥存储在名为 gcs-creds 的 Secret 中:

    $ kubectl create secret generic gcs-creds --from-literal=accesskey=accessKey --from-literal=secretkey=secretkey
    
  2. 将 Secret 和包含 Vertica 数据库的 GCS 存储桶的路径添加到 CR 规范的 communal 部分:

    spec:
      ...
      communal:
        credentialSecret: gcs-creds
        path: gs://bucket-name/path/to/database-name
        ...
    

有关 Vertica 和 GCS 的更多详细信息,请参阅用于 Google Cloud Platform 的 vertica

Azure Blob 存储

Micosoft Azure 提供了多种选项来向 Azure Blob 存储位置进行身份验证。根据您的环境,您可以使用以下组合之一将凭据存储在 Secret 中:

  • accountName 和 accountKey

  • accountName 和共享访问签名 (SAS)

如果在测试环境中使用诸如 Azurite 之类的 Azure 存储模拟器,则可以使用 accountName 和 blobStorage 值进行身份验证。

  1. 以下命令将 accountName 和 accountKey 存储在名为 azb-creds 的 Secret 中:

    $ kubectl create secret generic azb-creds --from-literal=accountKey=accessKey --from-literal=accountName=accountName
    

    或者,可以将您的 accountName 和 SAS 凭据存储在 azb-creds 中:

    $ kubectl create secret generic azb-creds --from-literal=sharedAccessSignature=sharedAccessSignature --from-literal=accountName=accountName
    
  2. 将 Secret 和包含 AZB 存储桶的路径添加到 CR 规范的 communal 部分:

    spec:
      ...
      communal:
        credentialSecret: azb-creds
        path: azb://accountName/bucket-name/database-name
        ...
    

有关 Vertica 和向 Microsoft Azure 进行身份验证的详细信息,请参阅Azure 上的 Eon 模式数据库

Hadoop 文件存储

使用标准 webhdfs 方案或用于线路加密的 swebhdfs 方案连接到 Hadoop 分布式文件系统 (HDFS) 公共存储。此外,您必须将 HDFS 配置文件添加到 ConfigMap 中,它是一个以键值对形式存储数据的 Kubernetes 对象。您可以选择配置 Kerberos 以验证与 HDFS 存储位置的连接。

以下示例使用 swebhdfs 线路加密方案,该方案需要 CR 规范中的证书颁发机构 (CA) 捆绑包。

  1. 以下命令将 PEM 编码的 CA 捆绑包存储在名为 hadoop-cert 的密钥中:

    $ kubectl create secret generic hadoop-cert --from-file=ca-bundle.pem
    
  2. HDFS 配置文件位于 /etc/hadoop 目录中。以下命令创建一个名为 hadoop-conf 的 ConfigMap:

    $ kubectl create configmap hadoop-conf --from-file=/etc/hadoop
    
  3. 将配置值添加到规范的 communalcertSecrets 部分:

    spec:
      ...
      communal:
        path: "swebhdfs://path/to/database"
        hadoopConfig: hadoop-conf
        caFile: /certs/hadoop-cert/ca-bundle.pem
      certSecrets:
        - name: hadoop-cert
      ...
    

    前面的示例定义了以下内容:

    • communal.path:使用线路加密方案的数据库路径。将路径括在双引号中。

    • communal.hadoopConfig:用于存储 /etc/hadoop 目录内容的 ConfigMap。

    • communal.caFile:包含用于创建 hadoop-cert Secret 的 CA 捆绑包的容器文件系统中的挂载路径。

    • certSecrets.name:包含 CA 捆绑包的 Secret。

有关 HDFS 和 Vertica 的更多详细信息,请参阅 Apache Hadoop 集成

Kerberos 身份验证(可选)

Vertica 使用 Kerberos 对与 HDFS 的连接进行身份验证。基于 Kubernetes 的 Vertica 之间的 Kerberos 配置与标准 Eon 模式数据库和 Kerberos 之间的配置相同,如 Kerberos 身份验证中所述。

  1. 以下命令将 krb5.confkrb5.keytab 文件存储在名为 krb5-creds 的 Secret 中:

    $ kubectl create secret generic krb5-creds --from-file=kerberos-conf=/etc/krb5.conf --from-file=kerberos-keytab=/etc/krb5.keytab
    

    在基于 Kubernetes 的 Vertica 中管理 krb5.confkrb5.keytab 文件时,请考虑以下事项:

    • 每个 pod 使用相同的 krb5.keytab 文件,因此您必须在开始任何扩展操作之前更新 krb5.keytab 文件。

    • 当您更新 krb5.keytab 文件的内容时,操作器会自动更新挂载的文件,这个过程不需要重新启动 pod。

    • krb5.conf 文件必须包含将 Kubernetes 群集域映射到 Kerberos 领域的 [domain_realm] 部分。以下示例将默认 .cluster.local 域映射到名为 EXAMPLE.COM 的 Kerberos 领域:

      [domain_realm]
        .cluster.local = EXAMPLE.COM
      
  2. 将 Secret 和其他 Kerberos 配置信息添加到 CR:

    spec:
      ...
      communal:
        path: "swebhdfs://path/to/database"
        hadoopConfig: hadoop-conf
        kerberosServiceName: verticadb
        kerberosRealm: EXAMPLE.COM
      kerberosSecret: krb5-creds
      ...
    

前面的示例定义了以下内容:

  • communal.path:使用线路加密方案的数据库路径。将路径括在双引号中。

  • communal.hadoopConfig:用于存储 /etc/hadoop 目录内容的 ConfigMap。

  • communal.kerberosServiceName:Vertica 主体的服务名称。

  • communal.kerberosRealm:主体的领域部分。

  • kerberosSecret:包含 krb5.confkrb5.keytab 文件的 Secret。

有关前面每个值的完整定义,请参阅自定义资源定义参数