Harbor域名切换解决方案

环境如下
都要安装好Harbor,安装不会的:

安装的时候,关于那个Harbor配置文件,如果没有特殊(例如主机有很多提供服务的网卡),harbor.conf 里面,hostname 项写自己主机IP就行,亲测可行

harbor双主模式 harbor双主复制_Rancher

主机名

角色

IP

master

master

192168.1.11

ord_slave

slave

192.168.1.12

new_slave

slave

192.168.1.13

前言

公司采用主从方案,ord_slave,存储不够了,需要切换new_slave为slave,为什么不用两个slave呢,因为这个slave是另一个机房的master,所以只能替换

但是总maste(192.168.1.11) 推送时候slave域名对应的IP是ord_slave的,需要切换域名映射的IP为new_slave的IP

这里去测试,域名切换new_slave(新)的IP,正常么,再测试回退域名到老IP否正常

1)先把域名映射到老仓库

这个Habror的容器不太一样,一般容器启动会把本宿主机/etc/resolv.conf(dns),挂进去,这样在容器启动之前,修改宿主机/etc/resolv.conf就可以,但是Harbor相关容器不会,所以修改所有Harbor容器hosts实现,当然改resolv.conf也可以

下面操作在master主机执行
vim hosts.sh
#!/bin/bash
a=$(docker ps | grep harbor | awk '{print $1}')
for i in $a
do
        docker exec -i  $i  /bin/bash << EOF
        cat /etc/hosts  | grep -v www > /etc/hosts
        echo "192.168.1.12 www.ajbn.net" >> /etc/hosts
EOF
done
sh hosts.sh

2)访问创建项目,测试并推送到域名(老仓库)

1.创建项目

如何上传和创建项目,我这篇博客下面有,这里不阐述

访问 http://192.168.1.11

创建一个ord_slave项目

harbor双主模式 harbor双主复制_harbor双主模式_02


上传镜像,master主机操作

docker tag goharbor/chartmuseum-photon:v0.8.1-v1.7.5  192.168.1.11/ord_slave/test1:v1
docker push 192.168.1.11/ord_slave/test1:v1

harbor双主模式 harbor双主复制_k8s_03

2.添加域名(对应ord_slaveIP)

master上操作

harbor双主模式 harbor双主复制_docker_04

3.推送到老仓库

master操作

harbor双主模式 harbor双主复制_docker_05

4.查看

http://192.168.1.12

harbor双主模式 harbor双主复制_IP_06

3)切换域名到新仓库

master主机上操作

注意域名对应IP,我改成new_slave的了

vim hosts.sh
#!/bin/bash
a=$(docker ps | grep harbor | awk '{print $1}')
for i in $a
do
        docker exec -i  $i  /bin/bash << EOF
        cat /etc/hosts  | grep -v www > /etc/hosts
        echo "192.168.1.13 www.ajbn.net" >> /etc/hosts
EOF
done
sh hosts.sh

4)推送镜像到新仓库

为了还原真实环境,我们不进行创建新的项目,还用上面创建的项目

http://192.168.1.13

可以看到不会自动推送,需要我们手动去推送

harbor双主模式 harbor双主复制_Rancher_07

回到 http://192.168.1.11 中,手动推送

harbor双主模式 harbor双主复制_Rancher_08

到http://192.168.1.13 查看 ,成功

harbor双主模式 harbor双主复制_k8s_09

5)测试回滚到ord_slave

master主机上操作,IP切换
vim hosts.sh
#!/bin/bash
a=$(docker ps | grep harbor | awk '{print $1}')
for i in $a
do
        docker exec -i  $i  /bin/bash << EOF
        cat /etc/hosts  | grep -v www > /etc/hosts
        echo "192.168.1.12 www.ajbn.net" >> /etc/hosts
EOF
done
sh hosts.sh
因为原来的项目已经有了,创建一个新的来测试

http://192.168.1.11

harbor双主模式 harbor双主复制_k8s_10

master主机上操作, 上传镜像
docker tag goharbor/registry-photon:v2.6.2-v1.7.5 192.168.1.11/ord_slave_2/test1:re
docker push 192.168.1.11/ord_slave_2/test1:re
master添加复制规则

harbor双主模式 harbor双主复制_docker_11

6)查验结果

http://192.168.1.12

harbor双主模式 harbor双主复制_harbor双主模式_12