准备证书和域名
首先准备域名,我这里准备好了一个域名:harbor.wenjie98.cn
然后可以去阿里云申请免费的ssl证书,我这里已经申请好了一个证书:
点击下载,下载nginx的证书:
下载好之后,zip包中有两个文件(key和pem):
我这里把两个文件名字修改成harbor.wenjie98.cn.key
和harbor.wenjie98.cn.pem
并上传到linux服务器中。
根据证书文件创建secret:
kubectl create ns devops
kubectl create secret tls harbor.wenjie98.cn --key harbor.wenjie98.cn.key --cert harbor.wenjie98.cn.pem -n devops
部署
我们使用helm部署harbor将会非常简单:
helm repo add harbor https://helm.goharbor.io
helm pull harbor/harbor
tar -xvf harbor-1.9.3.tgz
cd harbor
ll
创建override文件,用于重写values.yaml文件:
这里pvc的大小和使用的sc根据自己搭建的k8s情况而定
vi override.yaml
expose: #web浏览器访问用的证书
type: ingress
tls:
certSource: "secret"
secret:
secretName: "harbor.wenjie98.cn"
notarySecretName: "harbor.wenjie98.cn"
ingress:
hosts:
core: harbor.wenjie98.cn
notary: notary-harbor.wenjie98.cn
externalURL: https://harbor.wenjie98.cn
internalTLS: #harbor内部组件用的证书
enabled: true
certSource: "auto"
persistence:
enabled: true
resourcePolicy: "keep"
persistentVolumeClaim:
registry: # 存镜像的
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 50Gi
chartmuseum: #存helm的chart
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 5Gi
jobservice: #
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 1Gi
database: #数据库 pgsql
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 1Gi
redis: #
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 1Gi
trivy: # 漏洞扫描
storageClass: "rook-ceph-block"
accessMode: ReadWriteOnce
size: 5Gi
metrics:
enabled: true
安装harbor:
helm install harbor ./ -f values.yaml -f override.yaml -n devops
等待一阵后,可用如下命令确保harbor运行成功:
watch -n 1 kubectl get pod -ndevops
默认情况下,核心pod都是只有一个的
如果有高可用的需要,可参考https://goharbor.io/docs/2.4.0/install-config/harbor-ha-helm/,修改replicas的数目即可。
安装完成后,访问https://harbor.wenjie98.cn,能访问到:
默认账号密码为:admin/Harbor12345,我这里已经修改过了。
使用
docker登录harbor,输入账号和密码:
docker login harbor.wenjie98.cn
harbor的代理缓存
代理缓存实现了代理并缓存来自公共或私有仓库的镜像的功能
系统管理员可以通过创建代理缓存类型的项目来配置代理缓存 (该项目使用配置的目标 registry 的 endpoint 进行连接)
这种代理缓存类型的项目的工作方式与普通的Harbor项目类似,区别在于无法推送镜像到其中
官方文档:https://goharbor.io/docs/2.4.0/administration/configure-proxy-cache/#create-proxy-cache-project
先创建一个仓库:
配置harbor的代理缓存:
测试代理缓存:
docker pull harbor.wenjie98.cn/proxy-cache/goharbor/harbor-core:dev
测试推送、拉取镜像
创建一个普通的项目,名称为wj
测试:
docker pull busybox
docker tag busybox:latest harbor.wenjie98.cn/wj/busybox:latest
docker push harbor.wenjie98.cn/wj/busybox:latest
测试拉取:
docker rmi harbor.wenjie98.cn/wj/busybox:latest
docker rmi busybox:latest
docker pull harbor.wenjie98.cn/wj/busybox:latest