配置公共存储
基于 Kubernetes 的 Vertica 支持各种公共存储提供程序来满足您的存储需求。配置每个存储提供程序需要您创建一个 Secret 或 ConfigMap 来存储敏感信息,以便您可以在自定义资源 (CR) 中声明这些信息而不暴露任何字面量值。
注意
如果 Kubernetes 群集位于云中或托管服务上,则每个 Vertica 节点必须在同一可用性区域中运行。Amazon Web Services (AWS) S3 或兼容 S3 的存储
基于 Kubernetes 的 Vertica 支持 AWS 公共存储位置和私有云 S3 存储,例如 MinIO。
要连接到与 S3 兼容的存储位置,请创建一个 Secret 来存储您的公共访问权限和密钥凭证。然后,将 Secret、路径和 S3 端点添加到 CR 规范。
-
以下命令将 S3 兼容的公共访问权限和密钥凭证存储在名为
s3-creds
的秘密中:$ kubectl create secret generic s3-creds --from-literal=accesskey=accesskey --from-literal=secretkey=secretkey
-
将 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 模式的先决条件。
-
以下命令将您的 HMAC 访问权限和密钥存储在名为
gcs-creds
的 Secret 中:$ kubectl create secret generic gcs-creds --from-literal=accesskey=accessKey --from-literal=secretkey=secretkey
-
将 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 值进行身份验证。
重要
Vertica 官方不支持将 Azure 存储仿真器作为公共存储位置。-
以下命令将 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
-
将 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) 捆绑包。
-
以下命令将 PEM 编码的 CA 捆绑包存储在名为
hadoop-cert
的密钥中:$ kubectl create secret generic hadoop-cert --from-file=ca-bundle.pem
-
HDFS 配置文件位于
/etc/hadoop
目录中。以下命令创建一个名为hadoop-conf
的 ConfigMap:$ kubectl create configmap hadoop-conf --from-file=/etc/hadoop
-
将配置值添加到规范的
communal
和certSecrets
部分: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 身份验证中所述。
-
以下命令将
krb5.conf
和krb5.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.conf
和krb5.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
-
-
将 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.conf
和krb5.keytab
文件的 Secret。
有关前面每个值的完整定义,请参阅自定义资源定义参数。