架构师系列-Docker(六)-镜像仓库Harbor支持Https(扩展)
harbor
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
项目地址:https://gitcode.com/gh_mirrors/ha/harbor
免费下载资源
·
Harbor支持Https(扩展)
为了支持微服务推送我们需要将
HarBor
设置为https,可以让HarBor
在任何地方使用以及推送
前面说了怎么搭建harbor仓库,这里讲一讲harbor实现https访问,因为只需要内网访问,没必要去申请一个ssl证书,所以我就用openssl
颁发自签名证书,实现https访问。
生成证书颁发机构证书
在生产环境中,您应该从CA获得证书,在测试或开发环境中,您可以生成自己的CA,要生成CA证书,请运行以下命令
创建证书目录
mkdir -p /tmp/data/cert && cd /tmp/data/cert && ll
生成CA证书私钥
openssl genrsa -out ca.key 4096
生成CA证书
调整-subj选项中的值以反映您的组织,如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN)属性
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=itcast/OU=Personal/CN=itcast.harbor.com" \
-key ca.key \
-out ca.crt
这里subj是主题的意思含义如下
C=国家,S=省(市),L=区(县、市),O=组织机构,OU=组织单位,CN=通用名称
生成服务器证书
证书通常包含一个
.crt
文件和一个.key
文件,例如yourdomain.com.crt
和yourdomain.com.key
生成私钥
openssl genrsa -out itcast.harbor.com.key 4096
生成证书签名请求(CSR)
调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN)属性,并在密钥和CSR文件名中使用它
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=itcast/OU=Personal/CN=itcast.harbor.com" \
-key itcast.harbor.com.key \
-out itcast.harbor.com.csr
生成一个x509 v3扩展文件
无论您使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件,以便可以为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3的证书扩展要求,替换DNS条目以反映您的域。
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=itcast.harbor.com
DNS.2=itcast.harbor
DNS.3=harbor
EOF
生产主机证书
使用该v3.ext文件为您的Harbor主机生成证书,注意将yourdomain.comCRS和CRT文件名中的替换为Harbor主机名。
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in itcast.harbor.com.csr \
-out itcast.harbor.com.crt
配置harbor.yml
然后进入harbor安装目录修改
harbor.yml
,修改下面几个选项
- hostname,使用IP或域名,不要用回环地址,localhost等
- certificate,yourdomain.com.crt的路径
/tmp/data/cert/test.harbor.com.crt
- private_key,yourdomainr.com.key的路径
/tmp/data/cert/test.harbor.com.key
重新安装harbor服务
停止harbor
停止运行中的服务
docker-compose down
运行目录harbor下的prepare完成https的配置
./prepare
重新安装
在harbor目录下运行安装命令
./install.sh
修改Docker推送配置
我们需要将推送的IP改成域名
vi /etc/docker/daemon.json
上文中我们对registry已经操作了,这里需要改用harbor,需要重新配置
#因为默认端口号是80 所以不需要加端口号
{ "insecure-registries": ["仓库IP或域名"] }
完整的配置如下
{
"insecure-registries": ["test.harbor.com"],
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
执行以下命令重启重新加载配置并生效
systemctl daemon-reload
service docker restart
修改本地host文件
为了让本机能够正常访问到harbor的web环境需要配置本地的hosts文件增加如下配置
192.168.64.153 test.harbor.com
windows环境下host路径在
C:\Windows\System32\drivers\etc
域名访问harbor
通过域名访问harbor,域名就是我们刚才配置的
testharbor.com
域名访
因为我们的证书是自签的,不是第三方认证的,素以有安全性提示,点击继续就可以访问
到这里登录后就可以访问了
GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:3 个月前 )
bccfd5fb
Signed-off-by: stonezdj <stone.zhang@broadcom.com> 6 天前
d39d9797
Signed-off-by: yminer <miner.yang@broadcom.com>
Co-authored-by: yminer <miner.yang@broadcom.com> 7 天前
更多推荐
已为社区贡献1条内容
所有评论(0)