侧边栏壁纸
博主头像
云原生生态圈博主等级

让人迷茫的原因只有一个,那就是本该拼命的年纪,却想的太多,做得太少。

  • 累计撰写 51 篇文章
  • 累计创建 61 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

Harbor 2.0 带HTTPS的安装部署实践

云原生生态圈
2020-07-07 / 0 评论 / 0 点赞 / 84 阅读 / 4,460 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Harbor是一个开源的管理 Docker 镜像以及 helm 图表的项目,该项目包括了权限管理、LDAP 认证集成、日志事件审计、管理界面 portal、多 Harbor 实例之间数据同步的公布功能,同时今年 Harbor 也从 CNCF 中毕业了,提供了更合规、性能更好、操作体验更佳的 2.0 版本,帮助您在跨 kubernetes 和 Docker 等云原生计算平台持续高效的管理制品。

Harbor 环境需求

SoftwareVersionDescription
Docker engine17.06.0-ce 及以上安装参考: Docker Docs
Docker Compose1.18.0 版本及以上即可安装参考: Docker-Compose Docs
Openssl为避免安全漏洞,建议升级到最新可以选择自签证书: Config HTTPS也可以申请个人免费版证书

Harbor 离线安装

考虑到网络和测试的需求,我们通过迅雷在 GITHUB 上下载离线安装的 harbor 安装包,其中包含了 Harbor 所需要的基础镜像,离线安装时通过离线安装包内的脚本将导出的镜像文件通过docker load -i导入到服务器内,然后通过编排软件docker-compose运行,相当方便。使用到的基础镜像如下:

goharbor/chartmuseum-photon          v2.0.0              4db8d6aa63e9        8 weeks ago         127MB
goharbor/redis-photon                v2.0.0              c89ea2e53cc0        8 weeks ago         72.2MB
goharbor/trivy-adapter-photon        v2.0.0              6122c52b7e48        8 weeks ago         103MB
goharbor/clair-adapter-photon        v2.0.0              dd2210cb7f53        8 weeks ago         62MB
goharbor/clair-photon        2        v2.0.0              f7c7fcc52278        8 weeks ago         171MB
goharbor/notary-server-photon        v2.0.0              983ac10ed8be        8 weeks ago         143MB
goharbor/notary-signer-photon        v2.0.0              bee1b6d75e0d        8 weeks ago         140MB
goharbor/harbor-registryctl          v2.0.0              c53c32d58d04        8 weeks ago         102MB
goharbor/registry-photon             v2.0.0              afdc1b7ada36        8 weeks ago         84.5MB
goharbor/nginx-photon                v2.0.0              17892f03e56c        8 weeks ago         43.6MB
goharbor/harbor-log                  v2.0.0              5f8ff08e795c        8 weeks ago         82MB
goharbor/harbor-jobservice           v2.0.0              c68a2495bf55        8 weeks ago         116MB
goharbor/harbor-core                 v2.0.0              3aa3af64baf8        8 weeks ago         138MB
goharbor/harbor-portal               v2.0.0              e0b1d3c894c4        8 weeks ago         52.4MB
goharbor/harbor-db                   v2.0.0              5c76f0296cec        8 weeks ago         154MB
goharbor/prepare                     v2.0.0              7266d49995ed        8 weeks ago         158MB

在安装之前,我们需要修改一下 Harbor 的配置文件,比如修改 harbor 使用的域名、HTTPS 证书的位置等,下面我们简单的说明:

☸️ scp harbor-offline-installer-v2.0.0.tgz root@192.168.99.128:/root/
# 在192.168.99.128上进行Harbor的安装配置
root@master:~# tar xf harbor-offline-installer-v2.0.0.tgz
root@master:~/harbor# mv harbor.yml.tmpl harbor.yml

我们重新命名配置文件 harbor.yml 后,编辑该文件

hostname: harbor.devopsman.cn # 配置自己的harbor访问域名

如果你需要配置 HTTPS 来访问 harbor,那么需要申请证书或者自己生成的自签证书,这里我们直接在 DNSPOD 上申请一个免费的一年可用的证书

实际上 https 的证书是配置给 harbor 的反向代理 nginx 的,我们一般访问 harbor 其实是访问 nginx 然后将请求转发给 harbor,在我们安装完成 harbor 之后,可以运行以下命令查看到 Nginx 相关的反向代理的配置:

root@master:~/harbor# docker exec -it nginx cat /etc/nginx/nginx.conf

接下来,我们需要配置一下 HTTPS 可信证书,首先在 DNSPOD 上下载申请审批成功后的证书

然后解压,将解压后的 Nginx 目录下的两个文件重命名放在/data/cert/目录下

root@master:~/harbor/Nginx# ls -alh
total 32K
drwxr-xr-x   2 root root 4.0K Jul  7  2020 .
drwxr-xr-x 100 root root  20K Jul  7 01:37 ..
-rw-r--r--   1 root root 3.7K Jul  7  2020 1_harbor.devopsman.cn_bundle.crt
-rw-r--r--   1 root root 1.7K Jul  7  2020 2_harbor.devopsman.cn.key
# 重命名之后放在/data/cert目录下,如果没有这个目录,需要提前创建
mkdir -pv /data/cert
root@master:~/harbor/Nginx# cp 1_harbor.devopsman.cn_bundle.crt /data/cert/harbor.devopsman.cn.crt
root@master:~/harbor/Nginx# cp 2_harbor.devopsman.cn.key /data/cert/harbor.devopsman.cn.key

然后在 harbor.yml 下配置证书的位置即可:

# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /data/cert/harbor.devopsman.cn.crt
  private_key: /data/cert/harbor.devopsman.cn.key

配置完证书,使用 prepare 进行配置 nginx 的 https 证书

cd /root/harbor # harbor离线版解压后的文件目录
root@master:~/harbor# ./prepare
prepare base dir is set to /root/harbor
...
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir

无果没有报错,然后我们就可以直接使用 docker-compose 运行 harbor 的容器了

root@master:~/harbor# docker-compose up -d
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-portal ... done
Creating registry      ... done
Creating registryctl   ... done
Creating harbor-db     ... done
Creating redis         ... done
Creating harbor-core   ... done
Creating nginx             ... done
Creating harbor-jobservice ... done

安装检测

然后我们可以直接通过 docker login 测试一下

root@master:~/harbor# docker login harbor.devopsman.cn
Username: admin
Password:                  # 默认的密码在harbor.yml文件中,可以自行修改
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

通过浏览器查看是否能登录以及证书的有效期

此时我们可以通过推送一个测试的镜像,检查是够正常,我们先在浏览器中访问 harbor.devopsman.cn,然后找到推送命令,查看推送的格式,下面我们测试一下看看结果:

我们选择一个 k8s 集群服务基础组件kube-proxy的镜像,重新打个镜像的 tag,然后推送到我们的devopsman仓库内:

root@master:~/harbor# docker tag k8s.gcr.io/kube-proxy:v1.18.0 harbor.devopsman.cn/devopsman/kube-proxy:v1.18.0
root@master:~/harbor# docker push harbor.devopsman.cn/devopsman/kube-proxy:v1.18.0
The push refers to repository [harbor.devopsman.cn/devopsman/kube-proxy]
46b37415a80a: Pushed
0d8d54147a3a: Pushed
597151d24476: Pushed
ad9fb2411669: Pushed
2dc2f2423ad1: Pushed
682fbb19de80: Pushed
fc4976bd934b: Pushed
v1.18.0: digest: sha256:b832454a96a848ad5c51ad8a499ef2173b627ded2c225e3a6be5aad9446cb211 size: 1786

通过查看,确实成功的完成了镜像的上传:

这样就完成了 harbor 环境的基础搭建,接下来就好好的体验 Harbor 带来的新功能吧,通过图上看到 harbor2.0 目前支持Dark主题,helm 推送等,开始动手吧,体验 Harbor 的新功能和特性,本章节就完成了 harbor 的基础探索。

0

评论区