背景:在使用VMware Tanzu的環境中,因為vCenter7.0上的DataCenter自帶的Harbor沒有集成chart包功能,所以需要自行搭建一個Harbor服務器,通過VMware TCA Controller對接,然后給Tanzu K8s 集群使用
VMware大環境版本:
| ESXi | 7.0.2 |
| vCenter | 7.0.2 |
| NSX-T | 3.1.1 |
| TCA | 1.9.5 |
| Tanzu_k8s | v1.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

②配置主機名、DNS、域名
說明:這里的dyk01.com是我本地搭建的域名服務器的域名,172.32.73.206是我域名服務器的IP,因為VMware vCenter7.0版本開始要求使用域名服務器,

③安裝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

二、生成證書檔案
?執行以下七個命令生成證書檔案
具體這七個證書檔案是干啥的可以看文末的官方解釋說明
#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
?結果如下:

?復制下面兩個檔案到docker目錄下

三、安裝Harbor
①更改組態檔
#cd /opt/harbor/harbor
#cp harbor.yml.tmpl harbor.yml
#vi harbor.yml
更改如下標紅部分

以及啟用chart包功能,在這個組態檔的105行附近

②準備

③安裝
#./install.sh --with-chartmuseum

這里完成之后就可以使用瀏覽器就行登錄訪問了,域名或者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服務端配置的方式)

五、添加docker對私有倉庫的支持
①在docker server啟動的時候,增加啟動引數
#vi /usr/lib/systemd/system/docker.service
--insecure-registry linux03.dyk01.com

②更改docker配置
#vi /etc/docker/daemon.json

{
"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://github.com/goharbor/harbor/releases
openSUSE鏡像官網:The makers' choice for sysadmins, developers and desktop users.
https://www.opensuse.org/
CSDN老哥:他的Linux和我的Linux不一樣,遇到的問題和處理方法也不一樣
獨釣寒江jlshu
https://blog.csdn.net/weixin_41765879
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/348533.html
標籤:其他
