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.csr
、ca-key.pem
、ca.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
脚本检查docker
、docker-compose
、golang
的版本号、是否安装等是否符合安装环境; - (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最新版部署的主要内容,如果未能解决你的问题,请参考以下文章