Harbor最新版部署Harbor最新版部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Harbor最新版部署Harbor最新版部署相关的知识,希望对你有一定的参考价值。

安全搭建一套企业级的Harbor服务,


1 Harbor简介



2 Harbor几种安装方式

Harbor提供以下几种安装方式,以适应不同的安装环境。

  • 在线安装:适合初学者快速搭建一个Harbor仓库,简单快速,安装过程需要从官方拉取镜像,资源包带online

  • 离线安装:适合公司内网环境,离线安装包装载了安装过程需要的镜像(自动导入),资源包带offline

  • 源码安装:适合开发者对Harbor进行开发和测试,通过编译源码到本地进行安装,安装条件较苛刻,需要了解Harbor底层原理和实现方式的,可选择源码安装的方式

  • Heml Chart:通过Heml安装Harbor到kubernetes集群;

  • Operater安装Harbor Operator提供了可深度定制的能力,用户通过配置顶级CRD HarborCluster,根据实际需要定义和配置自己的 Harbor 组件。


3 部署环境

  • 操作系统:CentOS-7.5\\
  • Harbor版本:2.6.1\\
  • 主机配置:2C、4G内存\\
  • 主机IP:192.168.2.22\\
  • 安装软件:docker-ce-19.03.8、docker-compose-2.2.3、cfssl、cfssl-json

4 Harbor主机初始化

Harbor部署需要主机有一定的环境,主要有以下几个点对主机进行初始化操作。

4.1 安装docker-ce

Harbor不论是以哪一种方式安装,每个组件都是以容器的方式运行的,所以需要安装docker-ce来启动容器。 本处安装的是Harbor v2.6.1,对应的docker版本是17.06.0-ce+都可以,本处安装19.03.8的。
1)配置repo源

$ wget  https://download.docker.com/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum clean alll && yum makecache

2)安装docker

$ yum  install -y docker-ce-19.03.8

3)启动docker并设置为开机自启

$ systemctl start docker.service 
$ systemctl enable  docker.service

4)添加docker配置文件

$ cat <<EOF > /etc/docker/daemon.json 

   "registry-mirrors": ["https://xcg41ct3.mirror.aliyuncs.com"],
   "exec-opts": ["native.cgroupdriver=systemd"],     # 驱动器
   "insecure-registries": ["192.168.2.22:443"],   #Harbor服务的URL
   "registry-mirrors": ["https://3hjcmqfe.mirror.aliyuncs.com"],   # 镜像加速
   "log-driver": "json-file",
   "log-opts": 
            "max-size": "500m",   #定义log最大500m
            "max-file": "2"     #log最多保留数量
        ,
    "live-restore": true      #重启docker不重启容器,多用于k8s上

EOF

5)重启docker服务

$ systemctl start docker.service 

4.2 安装docker-compose

docker-compose的版本在1.18.0+

$ mv docker-compose-linux-x86_64   /usr/local/bin/docker-compose
$ chmod +x   /usr/local/bin/docker-compose
$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c

4.3 配置内核参数

$ modprobe br_netfilter     //加载内核模块(临时)
$ cat > /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF 
$ sysctl -p

net.ipv4.ip_forward=1 :开启路由转发
不配置该参数,当主机重启后,服务状态正常,却无法访问到服务器。


4.4 下载并解压安装包

$ mkdir  /app
$ wget https://github.com/goharbor/harbor/releases/download/v2.6.1/harbor-offline-installer-v2.6.1.tgz
$ tar zxvf harbor-offline-installer-v2.6.1.tgz -C  /app
$ ls  /app/harbor
harbor.v2.6.1.tar.gz  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare


4.5 创建Harbor工作目录

$ mkdir -p /app/harbor/ssl/    #存放harbor证书
$ mkdir -p /app/data/   # 创建harbor数据目录(配置文件中指定该目录)

4.6 下载并安装cfssl证书制作工具

在线安装,离线安装到官网下载安装包即可。

$ wget https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl_1.6.0_linux_amd64 \\
 -O   /usr/local/bin/cfssl
$ wget https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssljson_1.6.0_linux_amd64 \\
 -O  /usr/local/bin/cfssljson
$ wget https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl-certinfo_1.6.0_linux_amd64   \\
 -O  /usr/local/bin/cfssl-certinfo 
$ chmod +x  /usr/local/bin/cfssl*      #给这几个工具执行权限

cfssljson: 将从cfssl和multirootca等获得的json格式的输出转化为证书格式的文件(证书,密钥,CSR和bundle)进行存储;
cfssl-certinfo:可显示CSR或证书文件的详细信息;可用于证书校验。


5 制作Harbor安全证书

使用刚才安装好的cfssl工具为harbor制作颁发证书。

5.1 生成证书颁发机构证书(CA)

(1)生成并修改CA默认配置文件

$ cfssl print-defaults  config > ca-config.json            #生成默认配置文件
$ vim ca-config.json

    "signing": 
        "default": 
            "expiry": "87600h"  
        ,
        "profiles": 
            "harbor": 
                "expiry": "87600h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            
        
    

(2)生成并修改默认csr请求文件

$ cfssl  print-defaults csr  > ca-csr.json
$ vim ca-csr.json

    "CN": "harbor",
    "hosts": [
    ],
    "key": 
        "algo": "rsa",
        "size": 2048
    ,
    "names": [
        
            "C": "CN",
            "ST": "Beijing",
            "L": "Beijing"
        
    ]

(3)初始化CA

$ cfssl gencert -initca ca-csr.json | cfssljson -bare ca 
2022/15/05 17:45:13 [INFO] generating a new CA key and certificate from CSR
2022/15/05 17:45:13 [INFO] generate received request
2022/15/05 17:45:13 [INFO] received CSR
2022/15/05 17:45:13 [INFO] generating key: rsa-2048
2022/15/05 17:45:13 [INFO] encoded CSR
2022/15/05 17:45:13 [INFO] signed certificate with serial number 569300079190788296339255431042064535929535986620
$ ls 
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem

可以看到,当前目录下新生成了ca.csrca-key.pemca.pem这3个文件。 ca-key.pem、ca.pem这两个是CA相关的证书,通过这个CA来签署服务端证书。


5.2 CA给Harbor颁发证书文件

(1)创建并修改Harbor证书请求文件

$ cfssl  print-defaults csr >  harbor-csr.json 
$ vim  harbor-csr.json

    "CN": "harbor",  
    "hosts": [
     127.0.0.1,
     192.168.2.22       #Harbor主机IP
    ], 
    "key": 
        "algo": "rsa",
        "size": 2048
    ,
    "names": [
        
            "C": "CN",
            "ST": "Beijing",
            "L": "Beijing"
        
    ]

(2)使用请求文件根据CA配置颁发证书

$ cfssl gencert -ca=ca.pem -ca-key=ca-key.pem \\
-config=ca-config.json \\
-profile=harbor  harbor-csr.json | cfssljson -bare  harbor 
$ ls
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem  harbor.csr  harbor-csr.json  harbor-key.pem  harbor.pem
$ cp harbor.pem harbor-key.pem  /app/harbor/ssl/

-config:指定CA证书机构的配置文件;
-profile:指定使用CA配置文件中的哪个模块(此处harbor对应配置文件中的harbor);
harbor.pem:harbor服务的数字证书;
harbor-key.pem:harbor服务的私钥;


六、离线部署Harbor

6.1 创建并修改配置文件

需要将根据配置文件模板手动生成配置文件。

$ cd /app/harbor     #进入到Harbor安装目录
$ cp harbor.yml.tmpl  harbor.yml   

修改配置文件(重要)

$ vim /app/harbor/harbor.yml
hostname: 192.168.2.22   #本机IP或域名
http:
  port: 80
https:       #启用https安全访问
  port: 443    #Https安全端口(默认443)
  certificate: /app/harbor/ssl/harbor.pem    #Harbor的证书
  private_key: /app/harbor/ssl/harbor-key.pem  #Harbor的证书私钥
data_volume: /app/data     #Harbor的数据存储目录
metric:    #Metrics组件:收集Harbor服务的一些指标信息,可以通过Prometheus等实现对Harbor的监控;
  enabled: True   #启用Metrics组件
  port: 9090
  path: /metrics

6.2 执行./prepare

$ ./prepare 

6.3 运行install.sh安装脚本

1)查看install.sh的参数

$ ./install.sh  -h
Note: Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
Please set --with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.yml bacause notary must run under https. 
Please set --with-trivy if needs enable Trivy in Harbor
Please set --with-chartmuseum if needs enable Chartmuseum in Harbor

2)执行 ./install.sh安装harbor

$ ./install.sh  --with-notary --with-trivy  --with-chartmuseum 

在install.sh执行会经过以下过程:

  • (1)调用common.sh脚本检查dockerdocker-composegolang的版本号、是否安装等是否符合安装环境;
  • (2)导入/拉取镜像;
  • (3)根据镜像,使用docker运行每个组件的容器;
  • (4)启动Harbor中的每个组件(服务);

6.4 查看服务状态

查看Harbor每个组件的服务状态是否正常!

$ docker-compose ps


七、Harbor的简单应用

7.1 命令行登录Harbor

如果客户端想要使用Harbor服务,则需要有docker环境且在docker的配置文件中指定harbor的地址。
1) 通过insecure-registries参数指定Harbor地址!

$ vim  /etc/docker/daemon.json 


   "registry-mirrors": ["https://xcg41ct3.mirror.aliyuncs.com"],
   "exec-opts": ["native.cgroupdriver=systemd"],
   "insecure-registries": ["192.168.2.22:443","lidabai.harbor.com:443"],
   "registry-mirrors": ["https://192.168.2.22:443"],
   "log-driver": "json-file",
   "log-opts": 
            "max-size": "500m"
        

2)命令行登录Harbor

$ docker login https://192.168.2.22:443  -u admin  -p Harbor12345

-u 指定Harbor的用户名(admin为超级管理员);
-p 指定用户的密码;

浏览器登录Harbor UI管理界面

在浏览器输入harbor的主机名和端口号,再输入用户名(刚安装使用admin超级管理员用户)和密码(默认为Harbor12345)


总结

本篇详细分享了基于离线安装包,在企业环境中部署安全的Harbor服务器。从操作到原理进行了详细的阐述,如果你对Harbor的备份、升级、监控、镜像迁移、高可用方案等感兴趣,可到公众号【Harbor进阶实战】进行阅读,如果在操作过程遇到问题,请留言!

以上是关于Harbor最新版部署Harbor最新版部署的主要内容,如果未能解决你的问题,请参考以下文章

基于https的harbor部署与升级

基于https的harbor部署与升级

使用docker-compose部署最新版Harbor v2.3.2

Harbor部署流程

镜像仓库Harbor v2.6.1基础部署方法

11.部署 harbor 私有仓库