-
在本地搭建一个harbor镜像仓库,分别介绍无证书和有证书的两种配置方法,也可以存储helm的chart。
-
0、关闭防火墙和selinux
-
0.1 设置静态IP
-
- 输入
vim /etc/sysconfig/network-scripts/ifcfg-ens33查看网卡信息
- 输入
-
BOOTPROTO=dhcp表示每次关闭linux系统在重新启动之后都会重新获得新的ip地址。
所以需要将dhcp修改为static,修改后为
BOOTPROTO=static。 同时将获取ip地址的方式改为静态获取之后,需要在下面配置 IP地址,网关,子网掩码。IPADDR=192.168.139.139 GATEWAY=192.168.139.2 NETMASK=255.255.255.0 DNS1=8.8.8.8配置之后如下图:
接下来切换到命令行模式:保存退出esc,:wq。
3.返回到根目录 输入
service network restart命令重启网卡4.关上linux在启动你的ip地址就不会发生变化了。
-
0.2 关闭防火墙和selinux
-
关闭防火墙
systemctl stop firewalld systemctl disable firewalld iptables -F -
关闭selinux
修改
vi /etc/selinux/config将其中的SELINUX=enforcing改为SELINUX=disabled -
0.3 服务器命名
-
hostnamectl set-hostname hub.ruan.com -
1、安装docker
-
yum install wget -y wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum install docker-ce docker-ce-cli -y mkdir /etc/docker/ cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://gqs7xcfd.mirror.aliyuncs.com","https://hub-mirror.c.163.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF systemctl daemon-reload && systemctl enable docker && systemctl start docker -
2、安装Docker Compose
-
# 下载docker-compose插件 curl -L "https://github.com/docker/compose/releases/download/1.18.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 移动到命令目录 chmod +x /usr/local/bin/docker-compose # 测试 docker-compose version -
3、安装harbor
-
3.1 下载harbor
-
# 使用wget直接下载 yum install wget # Harbor下载地址参考 https://github.com/goharbor/harbor/releases wget https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-offline-installer-v2.3.2.tgz -
3.2 解压软件包
-
tar -zxvf harbor-offline-installer-v2.3.2.tgz -
3.3 修改配置文件(无证书)
-
cd harbor cp harbor.yml.tmpl harbor.yml vi harbor.yml # hostname:目标的主机名或者完全限定域名 hostname: hub.ruan.com 如果禁用http协议,以下内容全部注释 # certificate:SSL证书的路径,仅当协议设置为https时才应用 # certificate: /data/cert/hub.ruan.com.cert # prite_key:SSL密钥的路径,仅当协议设置为https时才应用 # private_key: /data/cert/hub.ruan.com.key # harbor_admin_password:admin用户的登录密码 harbor_admin_password: Harbor12345 # 依旧注释 # external_url: https://hub.ruan.com:8433 # 安装流程:检查环境 -> 导入镜像 -> 准备环境 -> 准备配置(含移除旧版本)-> 开始启动 ./prepare ./install.sh -
4、登录
-
4.1 添加docker信任列表
-
vim /etc/docker/daemon.json 加上"insecure-registries":["https://hub.ruan.com"] -
注意:别忘了加逗号
-
systemctl daemon-reload && systemctl restart docker -
4.2 docker登录
-
docker login hub.ruan.com -
4.3 登录网页管理界面
-
直接输入ip或者域名即可
-
5、创建https证书
-
若要配置HTTPS,必须创建SSL证书,可以使用受信任的第三方CA签名的证书,也可以使用自签名的证书。使用OpenSSL创建CA,并使用CA对服务器证书和客户端证书进行签名。
-
5.1 生成证书颁发目录
-
mkdir -p /data/cert && chmod -R 777 /data/cert && cd /data/cert -
1.生成CA证书私钥
-
openssl genrsa -out ca.key 4096 -
2.生成CA证书
-
openssl req -x509 -new -nodes -sha512 -days 36500 -subj "/CN=hub.ruan.com" -key ca.key -out ca.crt -
5.2 生成服务器证书
-
1.生成私钥
-
openssl genrsa -out hub.ruan.com.key 4096 -
2.生成证书签名请求(CSR)
-
openssl req -sha512 -new -subj "/CN=hub.ruan.com" -key hub.ruan.com.key -out hub.ruan.com.csr -
3.生成x509 v3扩展文件
-
cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=hub.ruan.com EOF -
openssl x509 -req -sha512 -days 36500 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in hub.ruan.com.csr -out hub.ruan.com.crt -
注意:如果这一步没有生成28个,CA报错,则重新生成CA证书
-
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 36500 -out ca.crt -subj "/C=CN/L=zhejiang/O=lisea/CN=harbor-registry" openssl req -newkey rsa:4096 -nodes -sha256 -keyout hub.ruan.com.key -out ca.csr -subj "/C=CN/L=zhejiang/O=lisea/CN=hub.ruan.com" openssl x509 -req -days 365 -in ca.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out hub.ruan.com.crt -
转换
hub.ruan.com.crt为hub.ruan.com.cert,供Docker使用 -
openssl x509 -inform PEM -in hub.ruan.com.crt -out hub.ruan.com.cert -
6、添加证书到Docker
-
6.1 将以下三个证书复制到 /etc/docker/certs.d/hub.ruan.com/ 文件夹下
-
cp ca.crt /etc/docker/certs.d/hub.ruan.com/ cp hub.ruan.com.cert /etc/docker/certs.d/hub.ruan.com/ cp hub.ruan.com.key /etc/docker/certs.d/hub.ruan.com/ -
如果需要在另一台电脑上登录,可以使用 ssh 传输
-
6.2 域名解析
-
在
/etc/hosts文件里添加域名解析 -
192.168.139.139 hub.ruan.com -
7、修改 harbor.yml 配置文件里证书路径以及IP地址
-
7.1 停止harbor
-
# 切换到harbor.yml所在目录 cd harbor docker-compose down -
7.2 修改配置文件(有证书)
-
cd harbor cp harbor.yml.tmpl harbor.yml vi harbor.yml # hostname:目标的主机名或者完全限定域名 hostname: hub.ruan.com 如果禁用http协议,以下内容全部注释 # certificate:SSL证书的路径,仅当协议设置为https时才应用 certificate: /data/cert/hub.ruan.com.cert # prite_key:SSL密钥的路径,仅当协议设置为https时才应用 private_key: /data/cert/hub.ruan.com.key # harbor_admin_password:admin用户的登录密码 harbor_admin_password: Harbor12345 # 依旧注释 # external_url: https://hub.ruan.com:8433 # 安装流程:检查环境 -> 导入镜像 -> 准备环境 -> 准备配置(含移除旧版本)-> 开始启动 ./prepare ./install.sh 或者直接 docker-compose up -d -
访问的话可以直接访问IP地址即可,也可以在host文件中加入域名映射到host文件中,使用域名进行访问。
-
如果其他服务器的Docker需要登录Harbor里的东西,需要下面两个步骤
-
直接复制上面的三个证书到那个服务器即可
执行命令(地址是Harbor服务器IP地址):echo “192.168.139.139 hub.ruan.com” >> /etc/hosts\
-
8、helm
-
如果使用Helm,添加仓库的时候需要加入证书
-
helm repo add --ca-file /data/cert/ca.crt --cert-file /data/cert/hub.ruan.com.cert --key-file /data/cert/hub.ruan.com.key myrepo https://hub.ruan.com/chartrepo/myrepo -
推送目录,app是目录
-
helm push --ca-file /data/cert/ca.crt --cert-file /data/cert/hub.ruan.com.cert --key-file /data/cert/hub.ruan.com.key --username=admin --password=h12345 app myrepo -
推送tgz文件,redis.tgz是chart应用文件
-
helm push --ca-file /data/cert/ca.crt --cert-file /data/cert/hub.ruan.com.cert --key-file /data/cert/hub.ruan.com.key --username=admin --password=h12345 app myrepo