先决条件
docker: docker version: 20.10.18
docker-compose: Docker Compose version v2.20.2
安装docker-compose
sudo curl -L “https://github.com/docker/compose/releases/latest/download/docker-compose-
(
u
n
a
m
e
−
s
)
−
(uname -s)-
(uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
------------------------------------------------docker-compose部署--------------------------------------------------------------
在git上下载离线安装包
https://github.com/goharbor/harbor/releases/tag/v2.7.0
harbor-offline-installer-v2.7.0.tgz
解压离线安装包:
tar -zxvf harbor-offline-installer-v2.7.0.tgz
sudo ./install.sh
如果安装成功,您可以打开浏览器以访问位于 的 Harbor 界面,更改为您在 中配置的主机名。如果未在 中更改它们,则默认管理员用户名和密码为 和 。
http://reg.yourdomain.com
admin Harbor12345
登录到管理门户并创建新项目,例如 .然后,您可以使用 Docker 命令登录到 Harbor,标记映像并将其推送到 Harbor。myproject
docker login reg.yourdomain.com
docker push reg.yourdomain.com/myproject/myrepo:mytag
重要:如果您的 Harbor 安装使用 HTTP 而不是 HTTPS,则必须将该选项添加到客户端的 Docker 守护程序中。缺省情况下,守护程序文件位于 。–insecure-registry/etc/docker/daemon.json
例如,将以下内容添加到您的文件中:daemon.json
{
“insecure-registries” : [“myregistrydomain.com:5000”, “0.0.0.0”]
}
更新后,您必须重新启动 Docker 引擎和 Harbor。daemon.json
重新启动 Docker 引擎。
systemctl restart docker
停止港口。
docker-compose down -v
重新启动港口。
docker-compose up -d
----------------------------------------------------helm部署----------------------------------------------------------
先决条件
镜像 (存在于离线部署包harbor-offline-installer-v2.7.0.tgz中镜像包 docker load -i harbor.v2.7.0.tar.gz)
goharbor/harbor-exporter v2.7.0 69796d5ea472 7 months ago 96.5MB
goharbor/chartmuseum-photon v2.7.0 3a1128c43ada 7 months ago 227MB
goharbor/redis-photon v2.7.0 cc91f43eb370 7 months ago 154MB
goharbor/trivy-adapter-photon v2.7.0 acf7683e6266 7 months ago 431MB
goharbor/notary-server-photon v2.7.0 cc32c079c5e8 7 months ago 113MB
goharbor/notary-signer-photon v2.7.0 1c7e9e9a0c92 7 months ago 110MB
goharbor/harbor-registryctl v2.7.0 6573a396157f 7 months ago 139MB
goharbor/registry-photon v2.7.0 4d015df21516 7 months ago 78.1MB
goharbor/nginx-photon v2.7.0 5f2878db2a82 7 months ago 154MB
goharbor/harbor-log v2.7.0 6b4a9a2855bb 7 months ago 161MB
goharbor/harbor-jobservice v2.7.0 cdde5030ac74 7 months ago 252MB
goharbor/harbor-core v2.7.0 f1aaf647100d 7 months ago 215MB
goharbor/harbor-portal v2.7.0 ea51148e87b6 7 months ago 162MB
goharbor/harbor-db v2.7.0 fff87d4d50e4 7 months ago 195MB
goharbor/prepare v2.7.0 f0f57240ce77 7 months ago 164MB
harbor-helm-1.11.0.zip (chart包-https://link.zhihu.com/?target=https%3A//codeload.github.com/goharbor/harbor-helm/zip/refs/tags/v1.11.0)
解压到/opt/harbor
进入/opt/harbor/harbor-helm-1.11.0修改配置
vim value.yaml
expose:
# Set how to expose the service. Set the type as "ingress", "clusterIP", "nodePort" or "loadBalancer"
# and fill the information in the corresponding section
type: nodePort #模式
tls:
enabled: false # 关闭tls安全加密认证(如果开启需要配置证书)
externalURL: http://xxx.xx.x.xx:30002 # 使用nodePort且关闭tls认证,则此处需要修改为http协议和expose.nodePort.ports.http.nodePort指定的端口号,IP即为kubernetes的节点IP地址
trivy:
skipUpdate: true #设置为 true 禁用从 GitHub 下载 Trivy 数据库的功能。
offlineScan: true #设置为 true 启用离线扫描模式,避免发送 API 请求以识别依赖关系。
安装
helm install harbor -f values.yaml . --namespace harbor
查看pods状态 harbor命名空间下
kubectl get pods -n harbor
kubectl get pods -n harbor -o wide
NAME READY STATUS RESTARTS AGE
harbor-chartmuseum-989b8b97d-wjg55 1/1 Running 0 15m
harbor-core-7b6cd7c968-xnqt5 1/1 Running 0 15m
harbor-database-0 1/1 Running 0 15m
harbor-jobservice-75b774cb84-dwrls 1/1 Running 3 (14m ago) 15m
harbor-nginx-fc68874d5-6cmkl 1/1 Running 0 15m
harbor-notary-server-65776b8c-wn6z2 1/1 Running 0 15m
harbor-notary-signer-7c8586cff7-f9gw7 1/1 Running 0 15m
harbor-portal-b7d5d9558-tj7s4 1/1 Running 0 15m
harbor-redis-0 1/1 Running 0 15m
harbor-registry-56cdbd54b5-g52sx 2/2 Running 0 15m
harbor-trivy-0 1/1 Running 0 15m
浏览器访问(当前部署的服务器)
xx.xxx.x.xx:30002
卸载
helm uninstall harbor --namespace harbor
自签证书(https://blog.51cto.com/wutengfei/5497399)
关于自签证书生成
说明:可以使用自动生成的证书不需要修改,如果后面需要更换证书,可直接将要更换的secret资源删除,然后再新创建即可,注意secret名字保持一致。
删除
$ kubectl delete secret tls-harbor -n harbor
创建并添加 在安装之前执行
$ kubectl create secret tls tls-harbor --cert=tls.crt --key=tls.key -n harbor