第 16 章 使用 TLS 证书用于应用程序来访问 RGW
大多数 S3 应用程序都需要 TLS 证书,如 Deployment 配置文件中包含的选项、作为请求中的文件传递,或者存储在 /etc/pki 路径中。
RADOS 对象网关 (RGW) 的 TLS 证书被存储为 Kubernetes 的 secret,您需要从 secret 中获取详细信息。
先决条件
正在运行的 OpenShift Data Foundation 集群。
流程
对于内部 RGW 服务器
从 kubernetes secret 获取 TLS 证书和密钥:
$ oc get secrets/<secret_name> -o jsonpath='{.data..tls\.crt}' | base64 -d $ oc get secrets/<secret_name> -o jsonpath='{.data..tls\.key}' | base64 -d- <secret_name>
-
默认 kubernetes secret 的名称为
<objectstore_name>-cos-ceph-rgw-tls-cert。指定对象存储的名称。
对于外部 RGW 服务器
从 kubernetes secret 获取 TLS 证书:
$ oc get secrets/<secret_name> -o jsonpath='{.data.cert}' | base64 -d- <secret_name>
-
默认 kubernetes secret 的名称为
ceph-rgw-tls-cert,它是一个不透明类型的 secret。用于存储 TLS 证书的键值是cert。
16.1. 在 OpenShift Data Foundation 中访问外部 RGW 服务器 复制链接链接已复制到粘贴板!
使用对象 Bucket 声明访问外部 RGW 服务器
S3 凭证(如 AccessKey 或 Secret Key )存储在创建 Object Bucket Claim (OBC)生成的 secret 中,您可以使用以下命令获取相同的凭证:
# oc get secret <object bucket claim name> -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 --decode
# oc get secret <object bucket claim name> -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 --decode
同样,您可以从 OBC 的 configmap 获取端点详情:
# oc get cm <object bucket claim name> -o jsonpath='{.data.BUCKET_HOST}'
# oc get cm <object bucket claim name> -o jsonpath='{.data.BUCKET_PORT}'
# oc get cm <object bucket claim name> -o jsonpath='{.data.BUCKET_NAME}'
使用 Ceph 对象存储用户 CR 访问外部 RGW 服务器
您可以从作为 Ceph Object Store User CR 一部分生成的 secret 获取 S3 Credentials 和 endpoint 详情:
# oc get secret rook-ceph-object-user-<object-store-cr-name>-<object-user-cr-name> -o jsonpath='{.data.AccessKey}' | base64 --decode
# oc get secret rook-ceph-object-user-<object-store-cr-name>-<object-user-cr-name> -o jsonpath='{.data.SecretKey}' | base64 --decode
# oc get secret rook-ceph-object-user-<object-store-cr-name>-<object-user-cr-name> -o jsonpath='{.data.Endpoint}' | base64 --decode
对于这两个访问机制,您可以从管理员请求新证书,或者重复使用 Kubernetes secret ceph-rgw-tls-cert 的证书。