部署基于Https的Harbor并使用docker login方式成功登录

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了部署基于Https的Harbor并使用docker login方式成功登录脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

背景:在使用VMware Tanzu的环境中,因为vcenter7.0上的DataCenter自带的Harbor没有集成chart包功能,所以需要自行搭建一个Harbor服务器,通过VMware TCA Controller对接,然后给Tanzu K8s 集群使用

VMware大环境版本:

ESXi7.0.2
vCenter7.0.2
NSX-t3.1.1
TCA1.9.5
Tanzu_k8sv1.19.1
TKG_k8s

v1.20.2

一、基础环境准备

操作系统版本: Linux (oPEn SUSE 15.2)

Harbor版本: v2.3.2

①上传并解压软件包

#cd /opt;mkdir harbor

#cd harbor

#tar -zxf harbor-offline-installer-v2.3.2.tgz

#ll

部署基于Https的Harbor并使用docker login方式成功登录

 

②配置主机名、DNS、域名

说明:这里的dyk01.COM是我本地搭建的域名服务器的域名,172.32.73.206是我域名服务器的IP。因为VMware vCenter7.0版本开始要求使用域名服务器。

部署基于Https的Harbor并使用docker login方式成功登录

 

③安装docker/docker-compose/openssl

说明:需要先配置公网zypper(SUSE linux使用zypper管理软件源,类似于yum管理配置软件源)

#zypper install docker

#zypper install docker-compose

#zypper install openssl

④提前更改NTP和openssl配置,止x509报错 

 

说明:这里我第一次部署Harbor之后,发现docker login方式登录不了,报错x509证书错误。实际原因是我客户端的时间早于Harbor服务器的时间,客户端登录时间早于证书发布时间,这里需要把环境上的所有时间保持一致。202.112.10.36是我环境的NTP服务器

NTP

#zypper install ntp

#ntpdate 202.112.10.36

还有下面这个报错,需要更改openssl配置

x509: cannot validate certificate because of not containing any IP SANs

在openssl.cnf配置文件里的v3_ca下添加subjectAltName属性,ip为本机地址

subjectAltName = IP:172.32.73.203

部署基于Https的Harbor并使用docker login方式成功登录

 

二、生成证书文件

❶执行以下七个命令生成证书文件

具体这七个证书文件是干啥的可以看文末的官方解释说明

#cd /opt/harbor/harbor;mkdir certs

#cd certs

#openssl genrsa -out ca.key 4096

#openssl req -x509 -new -nodes -sha512 -days 3650

 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=linux03.dyk01.com"

 -key ca.key

 -out ca.crt

#openssl genrsa -out linux03.dyk01.com.key 4096

#openssl req -sha512 -new

   -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=linux03.dyk01.com"

   -key linux03.dyk01.com.key

   -out linux03.dyk01.com.csr

#cat > v3.ext <<-EOF

authorITyKeyIdentifier=keyid,issuer

basicConstraints=CA:FALSE

keyusage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

extendedKeyUsage = serverAuth

subjectAltName = @alt_names

[alt_names]

DNS.1=linux03.dyk01.com

DNS.2=linux03.dyk01

DNS.3=linux03

EOF

#openssl x509 -req -sha512 -days 3650

    -extfile v3.ext

    -CA ca.crt -CAkey ca.key -CAcreateserial

    -in linux03.dyk01.com.csr

    -out linux03.dyk01.com.crt

#openssl x509 -inform PEM -in linux03.dyk01.com.crt -out linux03.dyk01.com.cert

❷结果如下:

部署基于Https的Harbor并使用docker login方式成功登录

 

❸复制下面两个文件到docker目录下

部署基于Https的Harbor并使用docker login方式成功登录

 

三、安装Harbor

①更改配置文件

#cd /opt/harbor/harbor

#cp harbor.yML.tmpl harbor.yml

#vi harbor.yml                                      

更改如下标红部分

部署基于Https的Harbor并使用docker login方式成功登录

 

以及启用chart包功能,在这个配置文件的105行附近

部署基于Https的Harbor并使用docker login方式成功登录

 

②准备

部署基于Https的Harbor并使用docker login方式成功登录

 

③安装

#./install.sh --with-chartmuseum

部署基于Https的Harbor并使用docker login方式成功登录

这里完成之后就可以使用浏览器就行登录访问了,域名或者IP都可以,一般搞到这里就可以了

https://computer01.dyk01.com

https://172.32.73.200

!!!但是TCA的Taznu集群使用Harbor是需要使用docker LOGin方式登录才行!!!

使用docker login登录刚开始会出现很多报错,在步骤四解决后才可以正常使用docker login登录了

 

四、docker login报错处理

①报错Error response From daemon: Get "https://172.32.73.200/v2/": x509: cannot validate certificate for 172.32.73.200 because it doesn't contain any IP SANs

步骤一第④步中解决,更改openssl配置文件

②报错Error response from daemon: Get "https://linux03.dyk01.com/v2/": x509: certificate signed by unknown authority

步骤一第④步中解决,保持环境中设备时间一致

③使用docker login命令登录报错连接拒绝

Error reponse from daemon: Get "htttps://computer01.dyk01.com/v2/": dial tcp 172.32.73.200:443: connect: connection refuesd

在步骤五解决(后来发现通过拷贝证书的方式也能解决,但是Vmware Tanzu集群里那么多集群,不知道考给谁,所以还是通过更改Harbor服务端配置的方式)

部署基于Https的Harbor并使用docker login方式成功登录

 

五、添加docker对私有仓库的支持

①在docker server启动的时候,增加启动参数

#vi /usr/lib/systemd/System/docker.service

--insecure-registry linux03.dyk01.com

部署基于Https的Harbor并使用docker login方式成功登录

 

②更改docker配置

#vi /etc/docker/daemon.json

部署基于Https的Harbor并使用docker login方式成功登录

 

   "insecure-registries":["linux03.dyk01.com"]

}

③重启docker 服务

#systemctl daemon-reload

#systemctl restart docker

#docker restart $(docker ps -aq)

至此:docker login就可以登录成功了,通过TCA controller对接后,Tanzu k8s集群就可以使用这个这个Harbor上的镜像和chart包了!

参考:

Harbor官方文档:Harbor docs | configure HTTPS Access to Harbor

Harbor软件包下载地址:https://github.com/goharbor/harbor/releases

部署基于Https的Harbor并使用docker login方式成功登录

https://github.com/goharbor/harbor/releases

openSUSE镜像官网:The makers' choice for sysadmins, developers and desktop users.

部署基于Https的Harbor并使用docker login方式成功登录

https://www.opensuse.org/

CSDN老哥:他的Linux和我的Linux不一样,遇到的问题和处理方法也不一样

独钓寒江jlshu

部署基于Https的Harbor并使用docker login方式成功登录

https://blog.csdn.net/weixin_41765879

脚本宝典总结

以上是脚本宝典为你收集整理的部署基于Https的Harbor并使用docker login方式成功登录全部内容,希望文章能够帮你解决部署基于Https的Harbor并使用docker login方式成功登录所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。