harbor:搭建本地仓库
在本地搭建一个harbor镜像仓库,分别介绍无证书和有证书的两种配置方法,也可以存储helm的chart。
0、关闭防火墙和selinux
0.1 设置静态IP
1.输入 vim /etc/sysconfig/network-scripts/ifcfg-ens33
查看网卡信息
2.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里的东西,需要下面两个步骤:
1、直接复制上面的三个证书到那个服务器即可
2、执行命令(地址是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