一. docker安装
阿里云源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装前关闭selinux和防火墙:
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/sysconfig/selinux && setenforce 0
systemctl stop firewalld
systemctl disable firewalld
2.移除旧的docker版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安装管理工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
配置国内docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
查看支持的列表
yum list docker-ce --showduplicates | sort -r
#复制想要安装的版本执行以下命令安装
yum install docker-ce-
yum install docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io
3.docker-compose安装
wget https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Linux-x86_64
chmod +x docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
docker-compose -v
4.命令自动补全
yum install -y bash-completion
二.自签证书生成篇
harbor访问分ip和域名
1.harbor自签名证书,创建证书存放目录:
mkdir -p /opt/harbordata/ca && cd /opt/harbordata/ca
2. 创建自签名根证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt
CN ZJ HZ IT YW harbor.abc.com [email protected]
3. 生成harbor证书文件
假如使用类似于harbor.abc.com的FQDN(Fully Qualified Domain Name)方式来连接registry主机,
则必须使用harbor.abc.com来作为CN(Common Name)否则访问会有问题,假如使用IP地址来连接registry主机的话
,CN可以指定为任何值
openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.abc.com.key -out harbor.abc.com.csr ##使用域名
CN ZJ HZ IT YW harbor.abc.com [email protected]
openssl req -newkey rsa:4096 -nodes -sha256 -keyout server.key -out server.csr ###ip
CN ZJ HZ IT YW YW [email protected]
openssl x509 -req -days 3650 -in harbor.abc.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.abc.com.crt ##使用域名
假如你是使用ip的话, 比如使用192.168.1.101来连接registry主机的话,你需要使用如下命令:
echo subjectAltName = IP:192.168.1.101 > extfile.cnf ###ip
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out server.crt ##ip
x509 签发X.509格式证书命令。
-req 表示证书输入请求。
-days 表示有效天数
-extensions 表示按OpenSSL配置文件v3_req项添加扩展。
-CA 表示CA证书,这里为ca.crt
-CAkey 表示CA证书密钥,这里为ca.key
-CAcreateserial表示创建CA证书序列号
-extfile 指定文件
4. 客户端docker证书
如果如下目录不存在,请创建,如果有域名请按此格式依次创建
mkdir -p /etc/docker/certs.d/192.168.1.101
mkdir -p /etc/docker/certs.d/harbor.abc.com
# 如果端口为443,则不需要指定。如果为自定义端口,请指定端口
/etc/docker/certs.d/harbor.abc.com:port
# 将ca根证书依次复制到上述创建的目录中
scp ca.crt /etc/docker/certs.d/192.168.1.101/ ##使用IP用此
scp ca.crt /etc/docker/certs.d/harbor.abc.com/ ###使用域名用此
5. 自签证书需要在客户端机器根信任证书
cp ca.pem /etc/pki/ca-trust/source/anchors/harbor-ca.crt ###目标机器centos
cp ca.pem /usr/share/ca-certificates/harbor-ca.crt ##目标机器Ubuntu
echo 'harbor-ca.crt' >> /etc/ca-certificates.conf ##目标机器Ubuntu
执行信任证书更新
update-ca-trust ###cenots
update-ca-certificates ##ubuntu
6.(4,5)步骤可以使用ansible-playbook完成client_cert_copy.yml
- hosts: clientnode
vars:
- harbor_host: ip或者域名
tasks:
- block:
- name: 创建访问harbor证书目录
file: name=/etc/docker/certs.d/{{ harbor_host }} state=directory
- name: 安装证书到客户端/etc/docker/certs.d/{{ harbor_host }}目录
copy: src=/opt/ca/ca.crt dest=/etc/docker/certs.d/{{ harbor_host }}/ca.crt
- block:
- name: 安装证书到ubuntu客户端信任证书目录
copy: src=/opt/ca/ca.crt dest=/usr/share/ca-certificates/harbor-ca.crt
- name: 更新信任证书列表
lineinfile:
dest: /etc/ca-certificates.conf
state: present
regexp: 'harbor-ca'
line: 'harbor-ca.crt'
- name: 执行证书更新命令
shell: 'update-ca-certificates'
when:
- 'ansible_distribution == "Ubuntu"'
- block:
- name: 安装证书到centos客户端信任证书目录
copy: src=/opt/ca/ca.crt dest=/etc/pki/ca-trust/source/anchors/harbor-ca.crt
- name: 更新信任证书列表
shell: 'update-ca-trust'
when:
- 'ansible_distribution in ["CentOS","RedHat"]'
#批量执行
ansible-playbook client_cert_copy.yml
二.全新安装V1.9
1.备份原/opt/harbor /opt/harbordata (假设安装目录/opt/harbor,数据目录/opt/harbordata)
cd /opt/harbor && docker-compose stop
cp -rf /opt/harbor /opt/harbor_old
cp -rf /opt/harbordata /opt/harbordata_old
2.下载最新harbor离线包
cd /opt && wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.0.tgz
3.拉下harbor-migrator工具镜像
docker pull goharbor/harbor-migrator:[tag] tag为要升级的版本如v1.9.0 ##如果是从1.7+升级则需要
因为之前的配置文件名为harbor.cfg需要合并升级成harbor.yml
docker pull goharbor/harbor-migrator:v1.9.0
4.解压
tar xf harbor-offline-installer-v1.9.0.tgz && cd /opt/harbor
###harbor.yml配置以供参考v.1.9.0版本
hostname: harbor.abc.com ##可以为域名也可以ip
http:
port: 80
https:
port: 443
certificate: /opt/ca/harbor.abc.com.crt
private_key: /opt/ca/harbor.abc.com.key
harbor_admin_password: XXXXXX123
database:
password: XXXXXXX123
max_idle_conns: 50
max_open_conns: 100
data_volume: /opt/harbordata
clair:
updaters_interval: 12
jobservice:
max_job_workers: 10
notification:
webhook_job_max_retry: 10
chart:
absolute_url: enabled
log:
level: info
local:
rotate_count: 3
rotate_size: 200M
location: /var/log/harbor
_version: 1.9.0
proxy:
http_proxy:
https_proxy:
no_proxy: 127.0.0.1,localhost,.local,.internal,log,db,redis,nginx,core,portal,postgresql,jobservice,registry,registryctl,clair
components:
- core
- jobservice
- clair
#执行命令生成docker-compose.yml文件
./prepare --with-clair --with-chartmuseum ##如果不想保存helm的chart仓库就不要带这2个参数
5.更新配置
cd /opt/harbor
docker-compose stop
docker run -it --rm -v /opt/harbor/harbor.yml:/harbor-migration/harbor-cfg/harbor.cfg -v /opt/harbor/harbor.yml:/harbor-migration/harbor-cfg-out/harbor.yml goharbor/harbor-migrator:v1.9.0 --cfg up
6. 安装新版本harbor
./install.sh --with-clair --with-chartmuseum ##如果不想保存helm的chart仓库就不要带这2个参数
使用docker-compose ps查看容器启动状态,如果全部Up则正常
7.访问配置中设置的域名即可