在 KubeSphere 中部署 Harbor

Harbor 是一个开源仓库,通过各种策略和基于角色的访问控制来保护制品,确保镜像经过扫描且没有漏洞,并对镜像签名使其受信。

本教程演示如何从 KubeSphere 应用商店部署 Harbor

准备工作

  • 请确保已启用 OpenPitrix 系统
  • 您需要创建一个企业空间、一个项目和一个用户帐户 (project-regular) 供本教程操作使用。该帐户需要是平台普通用户,并邀请至项目中赋予 operator 角色作为项目操作员。本教程中,请以 project-regular 身份登录控制台,在企业空间 demo-workspace 中的 demo-project 项目中进行操作。有关更多信息,请参见创建企业空间、项目、帐户和角色

动手实验

步骤 1:从应用商店中部署 Harbor

  1. demo-project 项目的概览页面,点击左上角的应用商店

    应用商店

  2. 找到 Harbor,点击应用信息页面上的部署

    寻找 Harbor

    点击部署

  3. 设置名称并选择应用版本。请确保将 Harbor 部署在 demo-project 中,点击下一步

    部署 Harbor

  4. 应用配置页面,编辑 Harbor 的配置文件,请注意以下字段。

    type:访问 Harbor 服务的方式。本示例使用 nodePort

    tls:指定是否启用 HTTPS。多数情况下设置为 false

    externalURL:暴露给租户的 URL。

    配置 Harbor

    备注

    • 请指定 externalURL,如果您访问 Harbor 有问题,该字段会对解决问题非常有用。

    • 请确保在本教程中使用 HTTP 协议和其对应的 nodePort。有关更多信息,请参见常见问题中的示例配置

    配置编辑完成后,点击部署继续。

  5. 稍等片刻待 Harbor 启动并运行。

    创建 Harbor

步骤 2:访问 Harbor

  1. 基于配置文件中 expose.type 字段的设置,访问方式可能会不同。本示例使用 nodePort 访问 Harbor,按照先前步骤中的设置,访问 http://nodeIP:30002

    登录 Harbor

    备注

    取决于您的 Kubernetes 集群的部署位置,您可能需要在安全组中放行端口并配置相关的端口转发规则。

  2. 使用默认帐户和密码 (admin/Harbor12345) 登录 Harbor。密码由配置文件中的 harborAdminPassword 字段定义。

    Harbor 仪表板

常见问题

  1. 如何启用 HTTP 登录?

    在步骤 1 中将 tls.enabled 设置为 falseexternalURL 的协议必须和 expose.type.ports 相同。

    如果您使用 Docker 登录,请在 daemon.json 中将 externalURL 设置为 insecure-registries 其中之一,然后重新加载 Docker。

    下面是示例配置文件,供您参考。请注意阅读注解。

    1. ## NOTICE 192.168.0.9 is the example IP address and you must use your own.
    2. expose:
    3. type: nodePort
    4. tls:
    5. enabled: false
    6. secretName: ""
    7. notarySecretName: ""
    8. commonName: "192.168.0.9" # Change commonName to your own.
    9. nodePort:
    10. # The name of NodePort service
    11. name: harbor
    12. ports:
    13. http:
    14. # The service port Harbor listens on when serving with HTTP
    15. port: 80
    16. # The node port Harbor listens on when serving with HTTP
    17. nodePort: 30002
    18. https:
    19. # The service port Harbor listens on when serving with HTTPS
    20. port: 443
    21. # The node port Harbor listens on when serving with HTTPS
    22. nodePort: 30003
    23. # Only needed when notary.enabled is set to true
    24. notary:
    25. # The service port Notary listens on
    26. port: 4443
    27. # The node port Notary listens on
    28. nodePort: 30004
    29. externalURL: http://192.168.0.9:30002 # Use your own IP address.
    30. # The initial password of Harbor admin. Change it from portal after launching Harbor
    31. harborAdminPassword: "Harbor12345"
    32. # The secret key used for encryption. Must be a string of 16 chars.
    33. secretKey: "not-a-secure-key"
  2. 如何启用 HTTPS 登录?

    a. 使用自签名证书。

    • 在步骤 1 中将配置文件中的 tls.enabled 设置为 true,并对应编辑 externalURL
    • 将 Pod harbor-core/etc/core/ca 中存储的自签名证书复制到您的主机。
    • 先在您的主机中信任该自签名证书,然后重启 Docker。

    b. 使用公共 SSL。

    • 将证书添加为密钥 (Secret)。
    • 在步骤 1 中将配置文件中的 tls.enabled 设置为 true,并对应编辑 externalURL
    • 编辑 tls.secretName

有关更多信息,请参见 Harbor 文档