云原生架构与 GitOps 实战
王炜
前腾讯云 CODING 架构师
6217 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
云原生架构与 GitOps 实战
15
15
1.0x
00:00/00:00
登录|注册

19|自托管构建:如何使用 Harbor 搭建企业级镜像仓库?

你好,我是王炜。
在上一节课,我带你学习了 Tekton 的基本概念以及如何使用 Tekton 构建镜像。这种方案最大的优势在于可以直接在 Kubernetes 集群中构建,我们不再需要单独为镜像构建付费。
但是,在之前的构建方案中,我们是将镜像推送到了 Docker Hub 镜像仓库。实际上,Docker Hub 也是一个收费的服务,对于免费用户来说,它限制每 6 小时最多拉取 200 次镜像,显然,这对团队来说是完全不够用的。
在这节课,我就带你学习如何使用 Harbor 来搭建企业级的镜像仓库,将它集成到我们上一节课创建的 Tekton Pipeline 流程中,最终替换 Docker Hub,进一步降低镜像存储的成本。此外,在安装 Harbor 的过程中,我还会首次介绍 Helm 工具的使用方法。
在开始今天的学习之前,你需要按照上一节课的内容准备好一个云厂商的 Kubernetes 集群,安装 Ingress-Nginx 和 Tekton,并配置好 Pipeline 和 GitHub Webook。
此外,在生产环境下,Harbor 一般都会开启 TLS,所以你还需要准备一个可用的域名。
下面,我们进入今天的实战环节。

安装 Helm

在我们之前的实践中,像是安装 Tekton 和 Ingress-Nginx 都是通过 Kubernetes Manifest 来完成的。实际上,安装 Kubernetes 应用并不只有一种方案,这里我们介绍第二种方案。Helm
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何使用Harbor搭建企业级镜像仓库,并将其集成到Tekton Pipeline流程中,以替换Docker Hub,降低镜像存储成本。首先介绍了安装Helm和Cert-manager的步骤,然后详细讲解了如何安装和配置Harbor,包括配置DNS解析和访问Harbor Dashboard的步骤。通过示例演示了如何将本地镜像推送到Harbor仓库。此外,还提供了Harbor的生产建议,包括确认PVC是否支持在线扩容、推荐使用S3存储镜像、使用外部数据库和Redis、开启自动镜像扫描和阻止漏洞镜像。文章以实际操作为主线,适合读者快速了解并实践。整体而言,本文内容丰富,涵盖了Harbor的安装、配置和生产建议,对于需要搭建企业级镜像仓库的读者具有实际指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《云原生架构与 GitOps 实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • Noel ZHANG
    Harbor搭建过程中使用了大量的云厂商组件,而且还有数倍的运维工作。我不明白,为什么不直接用云厂商的镜像库。

    作者回复: 是的,对小团队来说直接用云厂商的镜像仓库更好,全托管。 有一些团队可能会考虑存储成本和镜像扫描和安全性,Harbor 在这块做的挺不错的。

    2023-01-30归属地:江苏
    2
    4
  • ghostwritten
    记录一次部署遇到的问题: 安装 Cert-manager指定了自己的email 我www.namesilo.com申请了geekcloudnative.com域名,分别为二级域名 `harbor.geekcloudnative.com` 和 `notary.geekcloudnative.com` 配置 A 记录,并指向自己的ip 但我的kubectl get certificate -A 的READY一直是False, NAMESPACE NAME READY SECRET AGE harbor harbor-secret-tls False harbor-secret-tls 29s harbor notary-secret-tls False notary-secret-tls 29s kubectl get certificate -n harbor harbor-secret-tls -oyaml显示 message: Issuing certificate as Secret does not exist, k logs cert-manager-5d595f9fdf-mnw9n -n cert-manager 发现 以下报错日志 error"="failed to perform self check GET request 'http://harbor.geekcloudnative.com/.well-known/acme-challenge/ldnFkzhB2euqIZdtrTo7-ryM492_HCrmpcnWOBH6TmI': Get \"http://harbor.geekcloudnative.com/.well-known/acme-challenge/ldnFkzhB2euqIZdtrTo7-ryM492_HCrmpcnWOBH6TmI\": dial tcp: lookup harbor.geekcloudnative.com on 172.16.253.166:53: no such host" 通过报错可以判断本地没有做域名解析。在/etc/hosts添加 <ip> harbor.geekcloudnative.com notary.geekcloudnative.com READY为false得到解决。

    作者回复: 👍🏻很好的经验分享~

    2023-02-01归属地:北京
    2
    2
  • 郑海成
    老师,不需要将证书保存在docker目录下,创建跟域名相同的子目录这个操作吗?我看精选留言第三条的朋友也遇到了

    作者回复: 有具体的问题描述吗?

    2023-02-24归属地:北京
    3
  • Jich
    kubectl get certificate 我本地报 Issuing certificate as Secret does not exist

    作者回复: 检查一下安装 Cert-manager 的步骤以及创建 ClusterIssuer 的步骤。

    2023-01-29归属地:上海
  • 橙汁
    在阿里云的k8s上使用cert-manager需要accesskey来验证域名归属和dns记录验证,文章里没看到 是域名的关系吗,后续跟课程也验证下

    作者回复: 阿里云没试过,有经验可以分享吗

    2023-01-27归属地:北京
  • ghostwritten
    界面https可以登陆。但命令行登陆:docker login harbor.geekcloudnative.com -u admin -p Harbor12345 WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://harbor.geekcloudnative.com/v2/": Get "https://core.harbor.domain/service/token?account=admin&client_id=docker&offline_token=true&service=harbor-registry": dial tcp: lookup core.harbor.domain on 8.8.8.8:53: no such host
    2023-02-01归属地:北京
    3
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部