第 5 章 在 Red Hat Quay 容器中添加额外的证书颁发机构
extra_ca_certs 目录是可以存储其他证书颁发机构(CA)的目录,以扩展可信证书集合。Red Hat Quay 使用这些证书来验证与外部服务的 SSL/TLS 连接。在部署 Red Hat Quay 时,您可以将所需的 CA 放在这个目录中,以确保到 LDAP、OIDC 和存储系统等服务的连接会被正确保护并验证。
对于独立 Red Hat Quay 部署,您必须创建这个目录,并将额外的 CA 证书复制到那个目录中。
先决条件
- 有用于所需服务的 CA。
流程
输入以下命令查看要添加到容器中的证书:
$ cat storage.crt输出示例
-----BEGIN CERTIFICATE----- MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV... -----END CERTIFICATE-----输入以下命令,在 Red Hat Quay 目录的
/config文件夹中创建extra_ca_certs:$ mkdir -p /path/to/quay_config_folder/extra_ca_certs将 CA 文件复制到
extra_ca_certs文件夹。例如:$ cp storage.crt /path/to/quay_config_folder/extra_ca_certs/输入以下命令,确保
storage.crt文件存在于extra_ca_certs文件夹中:$ tree /path/to/quay_config_folder/extra_ca_certs输出示例
/path/to/quay_config_folder/extra_ca_certs ├── storage.crt----输入以下命令来获取
Quay的CONTAINER ID:$ podman ps输出示例
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS 5a3e82c4a75f <registry>/<repo>/quay:{productminv} "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 443/tcp grave_keller输入以下命令重启容器
$ podman restart 5a3e82c4a75f运行以下命令确认证书已复制到容器命名空间中:
$ podman exec -it 5a3e82c4a75f cat /etc/ssl/certs/storage.pem输出示例
-----BEGIN CERTIFICATE----- MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV... -----END CERTIFICATE-----
5.1. 当在 Kubernetes 上部署 Red Hat Quay 时,添加自定义 SSL/TLS 证书 复制链接链接已复制到粘贴板!
在 Kubernetes 上部署时,Red Hat Quay 将 secret 中的挂载为卷来存储配置资产。目前,这会破坏超级用户面板的上传证书功能。
作为临时解决方案,在部署 Red Hat Quay 后,base64 编码证书可以添加到 secret 中。
当在 Kubernetes 上部署 Red Hat Quay 时,请使用以下步骤添加自定义 SSL/TLS 证书。
先决条件
- 已部署 Red Hat Quay。
-
您有一个自定义
ca.crt文件。
流程
输入以下命令对 SSL/TLS 证书的内容进行 Base64 编码:
$ cat ca.crt | base64 -w 0输出示例
...c1psWGpqeGlPQmNEWkJPMjJ5d0pDemVnR2QNCnRsbW9JdEF4YnFSdVd3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=输入以下
kubectl命令来编辑quay-enterprise-config-secret文件:$ kubectl --namespace quay-enterprise edit secret/quay-enterprise-config-secret为证书添加一个条目,并粘贴条目下的完整
base64编码字符串er。例如:custom-cert.crt: c1psWGpqeGlPQmNEWkJPMjJ5d0pDemVnR2QNCnRsbW9JdEF4YnFSdVd3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=使用
kubectl delete命令删除所有 Red Hat Quay pod。例如:$ kubectl delete pod quay-operator.v3.7.1-6f9d859bd-p5ftc quayregistry-clair-postgres-7487f5bd86-xnxpr quayregistry-quay-app-upgrade-xq2v6 quayregistry-quay-database-859d5445ff-cqthr quayregistry-quay-redis-84f888776f-hhgms之后,Red Hat Quay 部署会自动将 pod 替换为新证书数据。