- Harbor部署
- 预备知识
- 仓库设置
- 添加choerodon chart仓库并同步
- 部署Harbor
- 验证部署
- 证书配置
- 有公网域名时使用kube-lego申请证书
- 没有公网域名时使用自签名证书
Harbor部署
预备知识
如果你不知道Harbor是做什么的,那么请参考下面链接(包括但不限于)进行学习:
- Harbor
仓库设置
添加choerodon chart仓库并同步
helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
helm repo update
部署Harbor
helm install c7n/harbor \
--set expose.ingress.hosts.core=registry.example.choerodon.io \
--set externalURL=https://registry.example.choerodon.io \
--set persistence.persistentVolumeClaim.registry.storageClass=nfs-provisioner \
--set persistence.persistentVolumeClaim.jobservice.storageClass=nfs-provisioner \
--set persistence.persistentVolumeClaim.database.storageClass=nfs-provisioner \
--set persistence.persistentVolumeClaim.redis.storageClass=nfs-provisioner \
--set chartmuseum.enabled=false \
--set clair.enabled=false \
--set notary.enabled=false \
--set harborAdminPassword=Harbor12345 \
--version 1.0.1 \
--name harbor \
--namespace c7n-system
- 更多参数及含义请参考Harbor Chart
验证部署
Harbor启动速度较慢请等待所有Pod都为Running后进行界面查看。
- 访问设置的域名出现以下界面即部署成功
证书配置
有公网域名时使用kube-lego申请证书
以下讲解为通过kube-lego创建证书,kube-lego会自动申请证书。通过本站Kubernetes部署教程部署的集群默认是安装kube-lego的。若集群中未安装kube-lego请忽略以下本节操作。
- 检测是否安装有kube-lego:
# 执行命令后有返回结果则说明已部署
kubectl get deployment --all-namespaces | grep kube-lego
- 删除自签名证书secret
kubectl delete secret -n c7n-system harbor-harbor-ingress
- 编辑harbor的ingress对象
kubectl edit ingress -n c7n-system harbor-harbor-ingress
- 为ingress添加注解
kubernetes.io/tls-acme: "true"
metadata:
annotations:
kubernetes.io/tls-acme: "true"
- 编辑 harbor-core 的 deployment 对象
kubectl edit deployment -n c7n-system harbor-harbor-core
- 删除下面注释的内容
......
volumeMounts:
# - name: ca-download
# mountPath: /etc/core/ca/ca.crt
# subPath: ca.crt
......
volumes:
# - name: ca-download
# secret:
# secretName: "harbor-harbor-ingress"
# items:
# - key: ca.crt
# path: ca.crt
......
没有公网域名时使用自签名证书
没有公网域名是无法申请证书的,故只能配置本地Docker信任Harbor自签名证书,此方法需将会使用到该Harbor的主机都进行自签名证书信任配置。
- 访问 Harbor ,进入 library 项目,点击
注册证书
下载ca证书
分发
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
目录下即可)
- 将得到的