❝作者:余生大大,大数据开发工程师,云原生爱好者,KubeSphere 社区用户。
虽然 KubeSphere 提供了运维友好的向导式操作界面,可以帮助我们快速构建一个强大和功能丰富的容器云平台,但是在实际应用上我们服务的镜像推送都需要在集群的所有节点上手动进行 docker build
,非常不方便。所以我们需要一个私有的镜像仓库。
在企业应用上肯定会选择私有仓库,这时候就需要在 registry
跟 Harbor
中选择一个了。
registry
是docker 官方
提供的私有镜像仓库,但是没有图形页面,没有权限控制,并且每次传输都会传输全量文件。Harbor
是VMware
的开源项目,提供了管理图形界面
,基于角色的访问控制(Role Based Access Control),镜像远程复制同步,AD/lDAP 集成,以及审计日志等企业用户需求的功能,同时还 原生支持中文。
Harbor
相对 registry
具有了许多在应用上的优点,所以 Harbor 是更多企业的选择,本篇就是要为 k8s 集群集成我们的私有 Harbor
仓库。
配置依赖
正常 Harbor
仓库应该选择一个独立的服务器进行安装部署,保证那边集群产生了问题也不会影响到私有镜像仓库,但是我们也是实验的场景,可以选择安装在 k8s
资源足够的集群上。
更新软件包:
$ yum -y install yum-utils device-mapper-persistent-data lvm2
安装 docker-compose
使用 docker compose
可以一键安装 Harbor,但是要做高可用的仓库还是手工部署。
下载 docker-compose
执行下载命令:
$ curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
添加可执行权限
$ chmod +x /usr/local/bin/docker-compose
查看 docker-compose 版本
$ docker-compose -version
这里的 docker-compose
版本是 1.27.4
。

安装 Harbor
下载 Harbor
$ wget https://github.com/goharbor/harbor/releases/download/v2.1.1/harbor-offline-installer-v2.1.1.tgz
上面下载地址特别慢的话使用下面的国内代理地址下载,官网地址:Harbor[1]。
$ wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz
下载速度还是很快的。

解压 Harbor
$ tar xvf harbor-offline-installer-v2.5.3.tgz -C /home/ && cd /home/harbor/
配置 Harbor
编辑 harbor.yml 文件:
$ vim harbor.yml
修改下图内容的配置,一个是配置 https 证书,一个是配置 data 数据目录。hostname 参数
修改成本机的 hostname 名称
。

创建配置的目录
创建配置文件中放置证书跟 data 的文件目录。
$ mkdir -p /home/harbor/certs /home/harbor/data
生成 SSL 证书
如果有自己的证书可以将证书 crt
跟 key
文件放到上面配置的目录,如果没有就按此步骤自签一个。
生成证书
$ openssl req -newkey rsa:4096 -nodes -sha256 -keyout /home/harbor/certs/harbor.key -x509 -out /home/harbor/certs/harbor.crt -subj /C=CN/ST=BJ/L=BJ/O=DEVOPS/CN=harbor.wangzy.com -days 3650
参数解释:
- req 产生证书签发申请命令
- newkey 生成新私钥
- rsa:4096 生成秘钥位数
- nodes 表示私钥不加密
- sha256 使用SHA-2哈希算法
- keyout 将新创建的私钥写入的文件名
- x509 签发X.509格式证书命令。X.509是最通用的一种签名证书格式。
- out 指定要写入的输出文件名
- subj 指定用户信息
- days 有效期(3650表示十年)
复制代码
再次查看 certs 目录就存在了证书。

启动 Harbor
$ ./install.sh
等待安装完成

如下图安装完成

验证 Harbor
❝安装完成后访问
https:// 服务器 ip 地址
,访问的时候会有一个警告,点击高级
选择忽略继续访问
即可,然后就到了我们的 Harbor 登陆页。

默认管理员用户名:admin 密码:Harbor12345
修改的话可以修改harbor.yml的配置
登陆成功就到了 Harbor 的主页了。

❝如果想要通过自签的域名访问需要配置本机的 hosts,将服务器的 ip 指向我们签发的域名
harbor.wangzy.com
,具体怎么操作搜一下怎么配置 hosts 就行。
KubeSphere 集成 Harbor
NodeLocal DNSCache 通过在集群上运行一个 DNSCache Daemonset 来提高 ClusterDNS 性能和可靠性。相比于纯 CoreDNS 方案,NodeLocal DNSCache + CoreDNS 方案能够大幅降低 DNS 查询 timeout 的频次,提升服务稳定性。
NodeLocal DNSCache 通过添加 iptables 规则能够接收节点上所有发往 xxx.xxx.xx.xx 的 DNS 查询请求,把针对集群内部域名查询请求路由到 CoreDNS;把集群外部域名请求直接通过 host 网络发往集群外部 DNS 服务器。
NodeLocal DNSCache 配置转发 CoreDNS
在 KubeSphere
的可视化操作系统上找到配置
中的配置字典
,搜索 nodelocaldns
配置文件选择编辑 yaml
。

编辑内容:

CoreDNS 添加 Harbor 的 hosts
在 KubeSphere
的可视化操作系统上找到配置
中的配置字典
,搜索 coredns
配置文件选择编辑 yaml
。

编辑内容:

配置 ca 证书
如果只完成上面的步骤没有配置证书时添加 Harbor 对接信息,会提示 证书问题, x509 的错误提示。
获取 crt 文件内容
查看生成的 crt 文件内容
,在我安装的 harbor
中 crt 文件
存在在了以下目录 : /home/harbor/certs/harbor.crt。执行命令:
cat /home/harbor/certs/harbor.crt
查看 crt 的内容:

配置字典
按图配置字典:

将上面的 crt 内容写入到下面图的配置中:

挂载 ca 证书
在应用负载
-工作负载
下找到 ks-apiserver
,点击进入负载详情。

在详情按以下操作添加配置字典:


设置完成后保存更新。
配置保密字典验证
在配置
项里选择保密字典
点击创建
,填写名称跟选择项目参数。

在第二步选择类型为镜像服务信息
的配置,填写镜像服务地址
,就是上面我们在 coredns 配置文件
增加的主机映射域名,设置用户名
密码
进行验证。

验证通过后就可以使用此镜像仓库了。

引用链接
Harbor: https://github.com/goharbor/harbor/releases
2022-08-26
2022-08-25
2022-08-24
KubeSphere (https://kubesphere.io)是在 Kubernetes 之上构建的开源容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。
KubeSphere 已被 Aqara 智能家居、爱立信、本来生活、东软、华云、新浪、三一重工、华夏银行、四川航空、国药集团、微众银行、杭州数跑科技、紫金保险、去哪儿网、中通、中国人民银行、中国银行、中国人保寿险、中国太平保险、中国移动、中国联通、中国电信、天翼云、中移金科、Radore、ZaloPay 等海内外数万家企业采用。KubeSphere 提供了开发者友好的向导式操作界面和丰富的企业级功能,包括 Kubernetes 多云与多集群管理、DevOps (CI/CD)、应用生命周期管理、边缘计算、微服务治理 (Service Mesh)、多租户管理、可观测性、存储与网络管理、GPU support 等功能,帮助企业快速构建一个强大和功能丰富的容器云平台。





