我刚刚使用 cephadm 部署了一个三节点 Ceph 集群。由于我们有 SSL 检查防火墙/代理,我看到了与 SSL 相关的错误。
CA 已添加到所有主机,以便它们能够成功获取 docker 映像,但每当容器尝试访问互联网时,它们都会收到 SSL 错误。
有没有办法全局配置 Ceph 不验证 SSL 证书或添加 CA?手动将 CA 注入每个 docker 容器并不是一个可行的解决方案。
这不是一个完整的答案,但评论相当有限。第一个问题是,Ceph 容器真的需要互联网访问吗?如果仅需要拉取映像,我建议部署您自己的容器注册表。这也将允许更好地控制容器版本。 要将证书自动部署到容器中,您可以使用
extra_container_args
。这是我的 RGW 规范的示例:
service_type: rgw
service_id: myid
service_name: rgw.myid
placement:
count: 2
extra_container_args:
- -v=/var/lib/ca-certificates/:/var/lib/ca-certificates/:ro
- -v=/var/lib/ca-certificates/ca-bundle.pem:/etc/pki/tls/certs/ca-bundle.crt:ro
spec:
rgw_frontend_port: 443
rgw_realm: default
rgw_zone: default
ssl: true
这会将整个目录
/var/lib/ca-certificates/
映射到 RGW 容器中。此外,ca-bundle.pem
映射到 ca-bundle.crt
。就我而言,主机运行的操作系统 (openSUSE) 与容器 (CentOS) 不同。
这应该适用于您在容器内需要的任何类型的证书。
更改服务规范后(看来您可能在所有守护进程中都需要它),您可以重新部署服务。但要小心并首先测试您的更改,仅重新部署一个守护程序并在继续之前进行检查:
ceph orch daemon redeploy rgw.{some_daemon}
如果您认为所做的更改有效,您还可以重新部署整个服务:
ceph orch redeploy rgw.myid