總結:整理不易,如果對你有幫助,可否點贊關注一下?
更多詳細內容請參考:企業級K8s集群運維實戰
一、環境信息
K8S版本 | 操作系統 | CPU架構 | 服務版本 |
---|---|---|---|
1.26.15 | Kylin Linux Advanced Server V10 | ARM64 | harbor v2.4.0 |
二、部署操作
2.1、資源包下載
說明:如果你從別處找來的鏡像,redis提示報錯ignore-warnings ARM64-COW-BUG,可以重新編譯redis鏡像。當前資源已經是重新編譯過了,可以正常使用的鏡像。
2.2、生成https證書
1、配置hosts
192.168.1.188 server.harbor.com
2、生成CA證書私鑰和CA證書
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=server.harbor.com" \-key ca.key \-out ca.crt
說明:通過 ca.key 文件生成一個 crt 文件,CA 證書后面用來簽署服務器證書。
3、生成服務器證書私鑰
openssl genrsa -out server.harbor.com.key 4096
4、生成簽名請求文件
openssl req -sha512 -new \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=server.harbor.com" \-key server.harbor.com.key \-out server.harbor.com.csr
說明:通過 server.harbor.com生成簽名請求文件 CSR。
5、生成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=server.harbor.com
DNS.2=192.168.1.188
EOF
6、生成服務器證書
openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in server.harbor.com.csr \-out server.harbor.com.crt
2.3、配置Docker證書
說明:配置Docker客戶端以便它能夠安全地與使用了自簽名證書的Harbor倉庫進行通信。默認情況下,Docker客戶端在嘗試與倉庫通信時,會檢查倉庫的SSL證書是否由一個受信任的證書頒發機構(CA)簽發。如果證書是自簽名的(如Harbor的默認設置),Docker客戶端將拒絕連接,因為它不信任該證書。
1、將server.harbor.com.crt轉換為server.harbor.com.cert,供 Docker 使用
說明:Docker守護程序將 .crt 文件解釋為CA證書,并將 .cert 文件解釋為客戶端證書。
openssl x509 -inform PEM -in server.harbor.com.crt -out server.harbor.com.cert
2、復制證書到指定位置
說明:將服務器證書、服務器私鑰和CA文件復制到Harbor主機上的Docker證書文件夾中。必須首先創建適當的文件夾。
# 創建目錄
mkdir -p /etc/docker/certs.d/server.harbor.com
# 如果不是使用443端口,則需要在后面指定使用的具體端口,例如8001
mkdir -p /etc/docker/certs.d/server.harbor.com:9443cp server.harbor.com.cert /etc/docker/certs.d/server.harbor.com:9443/
cp server.harbor.com.key /etc/docker/certs.d/server.harbor.com:9443
cp ca.crt /etc/docker/certs.d/server.harbor.com:9443
如下圖所示:
3、重啟docker
systemctl restart docker
2.4、部署harbor
1、解壓harbor安裝包
tar axf harbor-offline-installer-v2.4.0-arm64.tgz
cd harbor
2、導入鏡像
docker load -i harbor.v2.4.0.tar.gz
3、編輯harbor.yml文件
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
如下所示:
hostname: server.harbor.com
http:port: 9800
https:port: 9443certificate: /data/pkgs/harbor/server.harbor.com.crtprivate_key: /data/pkgs/harbor/server.harbor.com.key
harbor_admin_password: Harbor12345
database:password: n714aSP3RT
data_volume: /data/basic-data/harbor/harbor-data
log:local:location:/data/basic-data/harbor/harbor-log
4、執行安裝腳本
./install.sh
執行完成后,如下所示:
瀏覽器登陸https://192.168.1.188:9443,如下所示:
2.5、containerd接入harbor
說明:以下操作在所有containerd主機上執行。
1、配置hosts
192.168.1.188 server.harbor.com
2、編輯配置文件/etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry]config_path = ""[plugins."io.containerd.grpc.v1.cri".registry.auths][plugins."io.containerd.grpc.v1.cri".registry.configs][plugins."io.containerd.grpc.v1.cri".registry.configs."server.harbor.com:9443".tls]insecure_skip_verify = true[plugins."io.containerd.grpc.v1.cri".registry.configs."server.harbor.com:9443".auth]username = "admin"password = "Harbor12345"[plugins."io.containerd.grpc.v1.cri".registry.headers][plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."server.harbor.com:9443"]endpoint = ["https://server.harbor.com:9443"][plugins."io.containerd.grpc.v1.cri".x509_key_pair_streaming]tls_cert_file = ""tls_key_file = ""
如下圖所示:
3、重啟containerd服務
systemctl daemon-reload && systemctl restart containerd.service
2.6、推送和拉取私有鏡像
2.6.1、推送私有鏡像
1、使用docker login命令進行登錄
echo Harbor12345 | docker login -u admin --password-stdin https://server.harbor.com:9443
docker login會在當前用戶家目錄下生成~/.docker/config.json,可以根據該文件制作鏡像拉取憑證如下所示:
[root@arm-2 ~]# cat ~/.docker/config.json
{"auths": {"server.harbor.com:9443": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}
2、使用docker服務的doker push命令上傳鏡像
docker pull docker.io/library/nginx:1.25.4
docker tag docker.io/library/nginx:1.25.4 server.harbor.com:9443/library/nginx:1.25.4
docker push server.harbor.com:9443/library/nginx:1.25.4
如下圖所示,則表示push成功
2.6.2、拉取私有鏡像
ctr image pull --user "admin:Harbor12345" --skip-verify server.harbor.com:9443/library/nginx:1.25.4
如下圖所示:
總結:整理不易,如果對你有幫助,可否點贊關注一下?
更多詳細內容請參考:企業級K8s集群運維實戰