1.使用Helm安装Harbor
创建Harbor的Namespace。
kubectl create namespace harbor
添加Harbor的Helm仓库
helm repo add harbor https://helm.goharbor.io
helm repo update
生成Helm的harbor的配置文件values.yaml
helm show values harbor/harbor > values.yaml
编辑values.yaml,主要考虑修改的一下几个部分:
- 1.Ingress,域名和ssl证书的secret。
- certSource: secret
- tls.secretName: "harbor-wanna1314y-top-ssl"
- 2.StorageClass(很多个地方)
- 3.镜像仓库secret
- 4.副本数。
- 5.ingress的className(ingress.className)配置为nginx。
- 6.如果通过了反向代理访问harbor,那么需要配置externalURL设置为域名。
下面是修改之后的Harbor的Chart配置文件:harbor-values-ukxd.yaml
需要注意的是:如果配置了externalURL
属性,那么必须和expose.ingress.host.core
保持一致。不然登录时会提示账号密码错误,控制台报错403,提示{"errors":[{"code":"FORBIDDEN","message":"CSRF token invalid"}]}
执行Harbor配置文件,创建Harbor资源。
helm install harbor harbor/harbor -n harbor -f values.yaml
如果后续需要更新配置的话,可以使用如下的命令执行。
helm upgrade harbor harbor/harbor -n harbor -f values.yaml
可以通过如下的命令,查看,都需要用到哪些镜像文件。
cat values.yaml | grep -C 2 repository
可以使用如下的命令,去删除Harbor相关资源
# 卸载harbor
helm uninstall harbor -n harbor
# 删掉PVC
kubectl delete pvc --all -n harbor
可以把这些镜像pull到本地,并上传到私有的镜像仓库。
docker pull goharbor/nginx-photon:v2.12.0
docker pull goharbor/harbor-portal:v2.12.0
docker pull goharbor/harbor-core:v2.12.0
docker pull goharbor/harbor-jobservice:v2.12.0
docker pull goharbor/registry-photon:v2.12.0
docker pull goharbor/harbor-registryctl:v2.12.0
docker pull goharbor/trivy-adapter-photon:v2.12.0
docker pull goharbor/harbor-db:v2.12.0
docker pull goharbor/redis-photon:v2.12.0
docker pull goharbor/harbor-exporter:v2.12.0
docker tag goharbor/nginx-photon:v2.12.0 127.0.0.1:84/goharbor/nginx-photon:v2.12.0
docker tag goharbor/harbor-portal:v2.12.0 127.0.0.1:84/goharbor/harbor-portal:v2.12.0
docker tag goharbor/harbor-core:v2.12.0 127.0.0.1:84/goharbor/harbor-core:v2.12.0
docker tag goharbor/harbor-jobservice:v2.12.0 127.0.0.1:84/goharbor/harbor-jobservice:v2.12.0
docker tag goharbor/registry-photon:v2.12.0 127.0.0.1:84/goharbor/registry-photon:v2.12.0
docker tag goharbor/harbor-registryctl:v2.12.0 127.0.0.1:84/goharbor/harbor-registryctl:v2.12.0
docker tag goharbor/trivy-adapter-photon:v2.12.0 127.0.0.1:84/goharbor/trivy-adapter-photon:v2.12.0
docker tag goharbor/harbor-db:v2.12.0 127.0.0.1:84/goharbor/harbor-db:v2.12.0
docker tag goharbor/redis-photon:v2.12.0 127.0.0.1:84/goharbor/redis-photon:v2.12.0
docker tag goharbor/harbor-exporter:v2.12.0 127.0.0.1:84/goharbor/harbor-exporter:v2.12.0
docker push 127.0.0.1:84/goharbor/nginx-photon:v2.12.0
docker push 127.0.0.1:84/goharbor/harbor-portal:v2.12.0
docker push 127.0.0.1:84/goharbor/harbor-core:v2.12.0
docker push 127.0.0.1:84/goharbor/harbor-jobservice:v2.12.0
docker push 127.0.0.1:84/goharbor/registry-photon:v2.12.0
docker push 127.0.0.1:84/goharbor/harbor-registryctl:v2.12.0
docker push 127.0.0.1:84/goharbor/trivy-adapter-photon:v2.12.0
docker push 127.0.0.1:84/goharbor/harbor-db:v2.12.0
docker push 127.0.0.1:84/goharbor/redis-photon:v2.12.0
docker push 127.0.0.1:84/goharbor/harbor-exporter:v2.12.0
需要注意的是:harbor-jobservice依赖harbor-core服务,harbor-core依赖db服务,因此可能会启动失败,得在db启动好之后kill掉重启。
如果db启动不成功,原因是database "postgres" does not exist
的话,可以手动进入pg,去创建db。
psql -U postgres -d template1
# 创建db
CREATE DATABASE postgres;
接着,使用域名去打开Harbor,进入到如下的页面。
使用账号admin,密码Harbor12345去登录Harbor,登录Harbor后记得修改密码。
登录之后,可以进入到下面的页面。
2. Harbor自动同步其他镜像仓库
Harbor可以配置自动同步其他的Habor(或者其他)仓库的镜像,可以进行仓库的迁移等工作。(同步期间很耗费CPU和内存资源)
需要在"仓库管理"处新增仓库地址,并填写对应的账号密码。
接着,需要在"复制管理"中"新建规则"。
选择触发模式,我们这里直接选择手动的方式,接着就可以选择对应的复制任务,并点击复制按钮。
如果遇到同步期间,出现PGSQL数据库挂掉的情况,原因在于机器的CPU和内存压力可能都会很大,导致PG的响应比较慢,导致探针也认为PG已经挂掉了,但是实际上只是PG很慢,并没有挂掉,可以将K8S当中配置的PG的探针去掉,别让K8S将PG去杀掉,不然同步一直不会成功。