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

配置之后如下图:

image

接下来切换到命令行模式:保存退出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.crthub.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/ 文件夹下

image.png

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
posted @ 2022-09-23 21:57  E·r  阅读(132)  评论(0编辑  收藏  举报