当前位置: 首页 > news >正文

《Kubernetes部署篇:基于麒麟V10+ARM64架构部署harbor v2.4.0镜像仓库》

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级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集群运维实战

http://www.lryc.cn/news/358931.html

相关文章:

  • 远程工作/线上兼职网站整理(数字游民友好)
  • elasticsearch7.15实现用户输入自动补全
  • 掌握正则表达式的力量:全方位解析PCRE的基础与进阶技能
  • FastFM库,一款强大神奇的Python系统分析预测的工具
  • R语言绘图 --- 饼状图(Biorplot 开发日志 --- 2)
  • 用于日常任务的实用 Python 脚本
  • 7-Zip是什么呢
  • Satellite Stereo Pipeline学习
  • linux-gpio
  • C# 代码配置的艺术
  • 268 基于matlab的模拟双滑块连杆机构运动
  • 进口铝合金电动隔膜泵
  • G4 - 可控手势生成 CGAN
  • 使用 DuckDuckGo API 实现多种搜索功能
  • 【DrissionPage爬虫库 1】两种模式分别爬取Gitee开源项目
  • leetcode 115.不同的子序列
  • 二叉树的顺序实现-堆
  • 【Maven】Maven主要知识点目录整理
  • Coolmuster Android Assistant: 手机数据管理的全能助手
  • 03-树3 Tree Traversals Again(浙大数据结构PTA习题)
  • Java项目对接redis,客户端是选Redisson、Lettuce还是Jedis?
  • AngularJS Web前端框架:深入探索与应用实践
  • SQL 入门:使用 MySQL 进行数据库操作
  • window安装ffmpeg播放本地摄像头视频
  • 【嵌入式DIY实例】-OLED显示网络时钟
  • 【线程相关知识】
  • 鸿蒙ArkTS声明式开发:跨平台支持列表【透明度设置】 通用属性
  • 【SQL学习进阶】从入门到高级应用(九)
  • Web前端三大主流框架技术分享
  • dockers安装mysql