Harbor部署

预备知识

如果你不知道Harbor是做什么的,那么请参考下面链接(包括但不限于)进行学习:

仓库设置

添加choerodon chart仓库并同步

  1. helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
  2. helm repo update

部署Harbor

  1. helm install c7n/harbor \
  2. --set expose.ingress.hosts.core=registry.example.choerodon.io \
  3. --set externalURL=https://registry.example.choerodon.io \
  4. --set persistence.persistentVolumeClaim.registry.storageClass=nfs-provisioner \
  5. --set persistence.persistentVolumeClaim.jobservice.storageClass=nfs-provisioner \
  6. --set persistence.persistentVolumeClaim.database.storageClass=nfs-provisioner \
  7. --set persistence.persistentVolumeClaim.redis.storageClass=nfs-provisioner \
  8. --set chartmuseum.enabled=false \
  9. --set clair.enabled=false \
  10. --set notary.enabled=false \
  11. --set harborAdminPassword=Harbor12345 \
  12. --version 1.2.3 \
  13. --name harbor \
  14. --namespace c7n-system

验证部署

Harbor启动速度较慢请等待所有Pod都为Running后进行界面查看。
  • 访问设置的域名出现以下界面即部署成功

Harbor部署 - 图1

证书配置

有公网域名

请到域名服务商处获取对应域名nginx类型证书后执行以下操作:

  • 删除自签名证书secret
  1. kubectl delete secret -n c7n-system harbor-harbor-ingress
  • 创建域名证书secret,请注意替换命令中${KEY_FILE}${CERT_FILE}为文件访问路径
  1. kubectl create secret tls harbor-harbor-ingress -n c7n-system --key ${KEY_FILE} --cert ${CERT_FILE}
  • 编辑 harbor-core 的 deployment 对象
  1. kubectl edit deployment -n c7n-system harbor-harbor-core
  • 删除下面注释的内容
  1. ......
  2. volumeMounts:
  3. # - name: ca-download
  4. # mountPath: /etc/core/ca/ca.crt
  5. # subPath: ca.crt
  6. ......
  7. volumes:
  8. # - name: ca-download
  9. # secret:
  10. # secretName: "harbor-harbor-ingress"
  11. # items:
  12. # - key: ca.crt
  13. # path: ca.crt
  14. ......

没有公网域名时使用自签名证书

没有公网域名是无法申请证书的,故只能配置本地Docker信任Harbor自签名证书,此方法需将会使用到该Harbor的主机都进行自签名证书信任配置。
  • 访问 Harbor ,进入 library 项目,点击 注册证书 下载ca证书

Harbor部署 - 图2

  • 分发ca.crt证书文件

    • 将得到的ca.crt证书文件拷贝至其他会使用到该Harbor的主机上
    • 证书放置于/etc/docker/certs.d/<Harbor域名>目录下(eg. 若Harbor域名为registry.example.choerodon.io,则将ca.crt证书文件放于/etc/docker/certs.d/registry.example.choerodon.io目录下即可)