OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
5.2.2. 使用 vaulttenantsa的先决条件
-
OpenShift 数据基础集群处于
Ready
状态。 在外部密钥管理系统 (KMS) 上,
- 确保策略存在,并且已启用 Vault 中的键值后端路径。如需更多信息,请参阅在 Vault 中启用键值和策略。
- 确保您在 Vault 服务器上使用签名的证书。
在租户命名空间中创建以下 serviceaccount,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必须配置 Kubernetes 身份验证方法,然后才能使用 OpenShift 数据基础进行身份验证并开始使用 Vault。以下说明创建并配置所需的
serviceAccount
、ClusterRole
和ClusterRoleBinding
,以允许 OpenShift Data Foundation 使用 Vault 进行身份验证。将以下 YAML 应用到您的 Openshift 集群:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别与上述创建的 serviceaccount(SA)关联的 secret 名称:
oc -n openshift-storage get sa rbd-csi-vault-token-review -o jsonpath="{.secrets[*]['name']}"
$ oc -n openshift-storage get sa rbd-csi-vault-token-review -o jsonpath="{.secrets[*]['name']}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 secret 获取令牌和 CA 证书:
oc get secret <secret associated with SA> -o jsonpath="{.data['token']}" | base64 --decode; echo oc get secret <secret associated with SA> -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echo
$ oc get secret <secret associated with SA> -o jsonpath="{.data['token']}" | base64 --decode; echo $ oc get secret <secret associated with SA> -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索 OCP 集群端点:
oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}"
$ oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上面步骤中收集的信息在 Vault 中设置 kubernetes 验证方法,如下所示:
vault auth enable kubernetes vault write auth/kubernetes/config token_reviewer_jwt=<SA token> kubernetes_host=<OCP cluster endpoint> kubernetes_ca_cert=<SA CA certificate>
$ vault auth enable kubernetes $ vault write auth/kubernetes/config token_reviewer_jwt=<SA token> kubernetes_host=<OCP cluster endpoint> kubernetes_ca_cert=<SA CA certificate>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Vault 中为租户命名空间创建一个角色:
vault write "auth/kubernetes/role/csi-kubernetes" bound_service_account_names="ceph-csi-vault-sa" bound_service_account_namespaces=<tenant_namespace> policies=<policy_name_in_vault>
$ vault write "auth/kubernetes/role/csi-kubernetes" bound_service_account_names="ceph-csi-vault-sa" bound_service_account_namespaces=<tenant_namespace> policies=<policy_name_in_vault>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow csi-kubernetes
是 OpenShift Data Foundation 在 Vault 中寻找的默认角色名称。Openshift Data Foundation 集群中租户命名空间中的默认服务帐户名称为ceph-csi-vault-sa
。这些默认值可以通过在租户命名空间中创建 ConfigMap 来覆盖。有关覆盖默认名称的更多信息,请参阅使用租户 ConfigMap 覆盖 Vault 连接详情。
要创建一个使用
vaulttenantsa
方法进行 PV 保护的存储类,您必须编辑现有的 ConfigMap 或创建名为csi-kms-connection-details
的配置映射,它将保存建立与 Vault 连接所需的所有信息。以下提供的 yaml 示例可用于更新或创建
csi-kms-connection-detail
ConfigMap:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
encryptionKMSType
:应设置为vaulttenantsa
,以使用服务帐户通过 vault 进行身份验证。 -
vaultAddress
: 使用端口号的 vault 服务器的主机名或 IP 地址。 -
vaultTLSServerName
:(可选) vault TLS 服务器名称 -
vaultAuthPath
:(可选)在 Vault 中启用 kubernetes auth 方法的路径。默认路径为kubernetes
。如果在kubernetes
之外的其他路径中启用了 auth 方法,则需要将此变量设置为"/v1/auth/<path>/login"。
-
vaultAuthNamespace
:(可选)启用了 kubernetes auth 方法的 Vault 命名空间。 -
vaultNamespace
:(可选)用于存储密钥的后端路径的 Vault 命名空间 -
vaultBackendPath
:存储加密密钥的 Vault 中的后端路径 -
vaultCAFromSecret
: 包含来自 Vault 的 CA 证书的 OpenShift Data Foundation 集群中的 secret -
vaultClientCertFromSecret
: OpenShift Data Foundation 集群中的 secret,其中包含来自 Vault 的客户端证书 -
vaultClientCertKeyFromSecret
: OpenShift Data Foundation 集群中的 secret,其中包含来自 Vault 的客户端私钥 -
tenantSAName
:(可选)租户命名空间中的服务帐户名称。默认值为ceph-csi-vault-sa
。如果要使用其他名称,则必须相应地设置此变量。
-
接下来,按照 第 5.2.3 节 “为 PV 加密创建存储类的步骤” 中的步骤操作。