KubeSphere 与 Harbor HTTPS 集成全攻略

引言

在 Kubernetes 生态中,KubeSphere 作为一款开源的容器管理平台,提供了强大的应用管理和编排能力。而 Harbor 则是 CNCF 孵化的开源镜像仓库,支持镜像的存储、签名、扫描等功能。将 Harbor 通过 HTTPS 协议集成到 KubeSphere 中,不仅能够提升镜像传输的安全性,还能满足企业级应用对数据加密和合规性的要求。本文将详细阐述如何实现这一集成过程。

一、前置条件与准备工作

1.1 环境要求

  • KubeSphere 版本:确保 KubeSphere 已正确安装并运行,建议使用最新稳定版本。
  • Harbor 版本:Harbor 同样需要安装最新稳定版,并已配置好 HTTPS 服务。
  • Kubernetes 集群:拥有一个可用的 Kubernetes 集群,KubeSphere 运行其上。
  • 证书文件:Harbor 的 HTTPS 证书(包括 CA 证书、服务器证书和私钥),通常为 .crt.key 文件。

1.2 证书准备

  • 获取证书:从 Harbor 服务器上获取 HTTPS 证书文件。如果是自签名证书,需确保所有访问 Harbor 的节点都信任该 CA。
  • 证书转换(如需):如果证书格式不是 PEM 格式,需要使用 OpenSSL 等工具转换为 PEM 格式。
    1. # 示例:将 PFX 格式证书转换为 PEM 格式
    2. openssl pkcs12 -in cert.pfx -out cert.pem -nodes

二、配置 KubeSphere 以使用 HTTPS 集成 Harbor

2.1 上传证书到 KubeSphere

  1. 登录 KubeSphere 控制台:使用管理员账号登录。
  2. 进入系统设置:在左侧导航栏中选择“平台管理”->“系统设置”。
  3. 上传证书:在“证书管理”部分,上传 Harbor 的 CA 证书、服务器证书和私钥。确保命名清晰,便于后续识别。

2.2 配置 Docker 信任 Harbor 证书

KubeSphere 节点上的 Docker 必须信任 Harbor 的 CA 证书,以便能够通过 HTTPS 访问 Harbor。

  1. 将 CA 证书复制到 Docker 信任目录

    1. # 假设 CA 证书名为 ca.crt,复制到 Docker 的信任目录
    2. sudo mkdir -p /etc/docker/certs.d/<harbor-domain-or-ip>
    3. sudo cp ca.crt /etc/docker/certs.d/<harbor-domain-or-ip>/ca.crt

    替换 <harbor-domain-or-ip> 为 Harbor 的域名或 IP 地址。

  2. 重启 Docker 服务

    1. sudo systemctl restart docker

2.3 在 KubeSphere 中配置镜像仓库

  1. 进入项目设置:在 KubeSphere 控制台中,选择需要集成 Harbor 的项目。
  2. 配置镜像仓库

    • 在项目设置中找到“镜像仓库”选项。
    • 点击“添加镜像仓库”,填写 Harbor 的 URL(如 https://<harbor-domain-or-ip>)、用户名和密码(如果 Harbor 启用了认证)。
    • 在“证书”部分,选择之前上传的证书(如果 KubeSphere 提供了直接选择证书的选项)。
  3. 测试连接:点击“测试连接”按钮,验证 KubeSphere 是否能成功连接到 Harbor。

三、验证集成效果

3.1 推送镜像到 Harbor

  1. 在开发机上登录 Harbor

    1. docker login <harbor-domain-or-ip>

    输入 Harbor 的用户名和密码。

  2. 标记并推送镜像

    1. docker tag <local-image>:<tag> <harbor-domain-or-ip>/<project>/<image>:<tag>
    2. docker push <harbor-domain-or-ip>/<project>/<image>:<tag>

3.2 在 KubeSphere 中使用 Harbor 镜像

  1. 创建工作负载:在 KubeSphere 项目中创建一个新的工作负载(如 Deployment)。
  2. 选择镜像:在镜像配置部分,选择之前推送到 Harbor 的镜像。
  3. 部署并验证:部署工作负载,并验证其是否正常运行。

四、常见问题与解决方案

4.1 证书不被信任

  • 问题描述:Docker 报错“x509: certificate signed by unknown authority”。
  • 解决方案:确保 Docker 的信任目录中包含 Harbor 的 CA 证书,并已正确配置。

4.2 连接超时

  • 问题描述:KubeSphere 无法连接到 Harbor,报错“connection timed out”。
  • 解决方案:检查网络连接,确保防火墙规则允许 KubeSphere 节点访问 Harbor 的 HTTPS 端口(通常为 443)。

4.3 认证失败

  • 问题描述:登录 Harbor 时提示“Unauthorized”。
  • 解决方案:确认用户名和密码正确,且 Harbor 的认证服务正常运行。

五、总结与展望

通过 HTTPS 协议将 Harbor 集成到 KubeSphere 中,不仅提升了镜像传输的安全性,还为企业级应用提供了更加可靠的镜像管理解决方案。未来,随着 Kubernetes 和容器技术的不断发展,KubeSphere 与 Harbor 的集成将更加紧密,为企业数字化转型提供有力支持。

通过本文的详细步骤和常见问题解答,相信读者已经能够顺利完成 KubeSphere 与 Harbor 的 HTTPS 集成。在实际操作过程中,如遇特殊问题,建议查阅官方文档或社区论坛,获取更多帮助和支持。