前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Harbor 2.0 快速部署经验分享

Harbor 2.0 快速部署经验分享

作者头像
Henry Zhang
发布2020-06-19 11:51:54
3.4K0
发布2020-06-19 11:51:54
举报
文章被收录于专栏:亨利笔记亨利笔记

题图摄于旧金山渔人码头

本文系Harbor社区用户经验分享文章,首发于公众号:运维及时雨,授权转发。

作者简介:杜秋,云计算运维工程师,目前主要从事Kubernetes技术栈的CI/CD运维,多年一线运维工作,参与平台搭建、平台迁移、企业从自建IDC到上云、自动化建设等运维核心项目。

说明:本文离线安装,后端挂载阿里云的OSS作为images存储,以后再也不怕磁盘爆满了。

Harbor 离线版本:harbor-offline-installer-v2.0.0.tgz

Harbor 2.0版本相比之前的1.x更新的不少功能:

  • 启用Trivy作为默认漏洞扫描器,简化了Trivy扫描器的配置。
  • 启用了Harbor组件之间的TLS,使组件内的流量更安全。
  • Webhook的增强功能,包括支持与Slack的交互、可选择的事件列表、多终端、新事件等。
  • 增强机器人账户,允许用户为每个机器人设置单独的过期时间。
  • 重构错误处理框架,以便更好地排除故障。
  • 在用户界面中查看未标记的镜像,并将其从GC和标记保留工作中包含/排除。
  • 选择性地从镜像中删除标签,而不删除镜像摘要或其他相关标签。
  • 默认是https,因为notary必须在https协议下,如果不需要配置notary可以设置http。

操作系统版本:

代码语言:javascript
复制
[root@192-168-0-110 ~]# cat /etc/system-release
CentOS Linux release 7.7.1908 (Core)
[root@192-168-0-110 ~]# uname  -a
Linux 192-168-0-110 3.10.0-1062.18.1.el7.x86_64 #1 SMP Tue Mar 17 23:49:17 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

安装个纯净的操作系统并初始化,可以参考下我之前的文章CentOS8 初探之安装CentOS8 初探之初始化,这里直接把防火墙、selinux和postfix等禁用。

代码语言:javascript
复制
[root@192-168-0-110 ~]#systemctl  disable firewalld.service;systemctl  disable postfix.service
[root@192-168-0-110 ~]#sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

因为Harbor默认是用docker-compose部署的当然也可以部署到Kubernetes中,本文安装在docker-compose上,所有需要安装docker和docker-compose

代码语言:javascript
复制
#安装docker
[root@192-168-0-110 ~]#yum install yum-utils
 [root@192-168-0-110 ~]#yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 [root@192-168-0-110 ~]#yum install docker-ce docker-ce-cli -y
[root@192-168-0-110 ~]# docker -v
Docker version 19.03.9, build 9d988398e7
[root@192-168-0-110 ~]#systemctl  start docker;systemctl  enable docker
代码语言:javascript
复制
#安装docker-compose
[root@192-168-0-110 ~]#curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@192-168-0-110 ~]# docker-compose  version
docker-compose version 1.25.5, build 8a1c60f6
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
[root@192-168-0-110 ~]#chmod +x /usr/local/bin/docker-compose

接下来下载本文的主角Harbor 2.0离线包

Harbor github 地址:https://github.com/goharbor/harbor/releases

代码语言:javascript
复制
[root@192-168-0-110 ~]#wget https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-offline-installer-v2.0.0.tgz

编辑相关配置文件,启动Harbor:

代码语言:javascript
复制
 [root@192-168-0-110 ~]#tar xf harbor-offline-installer-v2.0.0.tgz 
 [root@192-168-0-110 ~]#cd harbor
 [root@192-168-0-110 harbor]#cp harbor.yml.tmpl  harbor.yml

修改harbor.yml 里hostname、certificate、private_key参数即可,其他的看需求,证书可以自建也可以找目前公司正在使用(通配符证书和域名证书均可)的,我的是自建的,自建证书教程后续更新.

代码语言:javascript
复制
vim harbor.yml

再把私有镜像服务器的地址添加到docker-daemon中,格式为json,然后重启或者reload docker 服务

代码语言:javascript
复制
[root@192-168-0-110 harbor]# cat /etc/docker/daemon.json 
{
    "insecure-registries": ["harbor.duqiu.com"]
}
 [root@192-168-0-110 ~]#systemctl  reload docker

配置docker-compose.yml文件和安装相关插件,本文只安装的clair和trivy插件

代码语言:javascript
复制
 [root@192-168-0-110 harbor]#./prepare --with-clair --with-trivy 
#--with-clair  镜像安全扫描插件
#--with_notary 内容信任插件 
#--with-trivy   镜像漏洞检测插件
#--with-chartmuseum Chart仓库服务
代码语言:javascript
复制
#更改镜像存储位置,本地的话不用配置直接用,本例子中我使用了阿里云的oss作为后端存储(如果harbor部署在非阿里云上建议使用外网访问域名),写入对应的value。
#官方文档 https://docs.docker.com/registry/storage-drivers/
#官方文档 https://docs.docker.com/registry/configuration/#storage
[root@192-168-0-110 harbor]#vim  common/config/registry/config.yml
oss:
     accesskeyid: 填写你的具有阿里云oss权限账户的RAM的AccessKey ID
     accesskeysecret: 填写你的具有阿里云oss权限账户的RAM的AccessKey Secret
     region: 地域节点(EndPoint)
     endpoint: Bucket 域名
     internal: true
     bucket: Bucket 名称
代码语言:javascript
复制
[root@192-168-0-110 harbor]#vim  docker-compose.yml #注释掉本地存储
 registry:
    image: goharbor/registry-photon:v2.0.0
    container_name: registry
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
#      - /data/registry:/storage:z

启动Harbor:

代码语言:javascript
复制
[root@192-168-0-110 harbor]# docker-compose  up -d 
Starting harbor-log ... done
Starting redis         ... done
Recreating registry    ... done
Starting harbor-portal ... done
Starting harbor-db     ... done
Recreating registryctl ... done
Creating trivy-adapter ... done
Recreating clair       ... done
Recreating harbor-core   ... done
Recreating clair-adapter ... done
Recreating harbor-jobservice ... done
Recreating nginx             ... done

访问资源的PC绑定hosts后访问页面:

代码语言:javascript
复制
duqiudeMacBook-Pro:~ duqiu$ sudo vim /etc/hosts
192.168.0.110 harbor.duqiu.com

启动浏览器开始验证:

创建项目名称nbtest

创建用户user1,权限为开发人员

把刚刚创建的nbtest权限分配给user1

在需要push 镜像和pull镜像的服务器登录私有镜像

代码语言:javascript
复制
[root@192-168-0-110 ~]# docker login harbor.duqiu.com  #输入刚才创建的用户名和密码登录
Username: user1
Password: 
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

本地写个测试images验证一下到刚刚创建的私有镜像仓库,是否正常上传下载和是否传到阿里oss里:

通过Dockerfile 生成本地image,打tag后开始推送

上传

代码语言:javascript
复制
 [root@192-168-0-110 ~]#docker push harbor.duqiu.com/nbtest/plm:nbtest202006011515

此时在阿里oss里即可看见刚刚上传的项目和images

返回Harbor仓库界面可以选择你刚刚上传的镜像开始镜像安全扫描,这是clair提供的功能

扫描完成后,如果image有问题会在没有漏洞处出现提示

安装过程中出现的仓库只读模式,可以在此处更改:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亨利笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档