写点什么

才云 Caicloud 与 VMware 项目合作,实现 Harbor 与 Kubernetes 对接

  • 2020-03-13
  • 本文字数:2001 字

    阅读完需:约 7 分钟

才云Caicloud与VMware项目合作,实现Harbor与Kubernetes对接

Harbor 项目介绍:

开源项目 Harbor 作为 CAA(Cloud Applicaiton Accelerator)云应用加速项目由 VMware 中国研发中心启动。CAA 提供了一整套工具来提升中国和其他国家的云平台云计算研发的效率。CAA 也包含了类似于 registry server、mirror server、去中心的镜像分布器(decentralized image distributor)等工具。


Harbor 项目旨在提供企业级镜像服务。它基于开源的 Docker Registry server,在其基础上增加了很多企业需要的功能。Harbor 设计针对私有云环境。私有镜像,企业会很关注安全问题。此外,私有镜像不需要从公共网络去下载镜像,从而提高了研发生产力。这对于没有很好网络的容器开发使用者也提供了很大帮助。

Harbor 项目功能:

Role Based Access Control (基于角色的准入控制): 用户和 docker 代码库通过“项目”的形式来组织,在同一个 namespace 下,一个用户对镜像可以有不同的 permission


Graphicaluser portal (UI 入口): 用户可以轻松浏览、搜索 docker 的代码库,管理项目和 namespaces


AD/LDAP support (AD/LDAP 支持): Harbor 接入企业用户认证和管理已有的 AD/LDAP


Auditing(审计): 所有代码库操作都会被追踪且可以用于审计目的


Internationalization (国际化): 提供中英文便于本土化


RESTful API: 用来给大多对 Harbor 的管理操作,无需用到管理软件整合,很便利。

才云 Caicloud:实现 Harbor 与 Kubernetes 对接

作为一个 Docker Registry,Harbor 原生态地支持通过 Docker 的方式部署,然而直接通过 Docker 或者 Docker Compose 无法很好的做到容错、扩容、检测等等工作。Kubernetes 作为一个容器管理平台就能够很好解决上述问题。


要将 Harbor 部署到 Kubernetes 上,首先需要将 Harbor 的组件全部容器化。因为 Harbor 已经支持使用容器部署,所以大部分的容器化工作已经完成。


但在 Kubernetes 下的环境和本机的环境不同,所以在原有镜像的基础上我们还需要处理以下几个问题:


  1. 配置文件。在本地环境下配置文件是临时加载的,但是这样在网络环境下并不容易扩展。因为如果一台机器宕机了之后就很难保证相同的配置文件能够一起被转移到其他机器上。所以我们需要将之前预设好的配置文件一起存放到 Docker 镜像当中,比如对于 registry 的镜像我们要进一步封装为:


FROM library/registry:2.3.0


ADD ./config/registry/ /etc/registry/


ADD./kubernetes/dockerfiles/registry-config.yml /etc/registry/config.yml


CMD ["/etc/registry/config.yml"]


  1. Docker Registry 一个很重要的配置信息就是 Registry 的 Host。一方面,要将 Harbor 部署到 Kubernetes 上,那么这个配置信息在编译镜像之前就需要确定;另一方面,在还没有真正运行起来之前 Kubernetes 是不会预先给服务分配 IP 的。这就形成了一个死循环!要解决这个死循环有两个办法:

  2. a)先启动 Registry 的 Service 得到一个 IP,然后根据 IP 编译完镜像之后再启动 Replica Controller。

  3. b)使用 DNS。在配置镜像的时候把 Registry Host 配置成 DNS name,这样当服务在 kubernetes 中起来之后我们可以再通过配置 DNS 的方式使得这个 DNS 指向正确的 IP。


当所有镜像都编译好之后,我们就可以通过 kubectl 来启动 Harbor 的所有组件了。 在 kubernetes 上启动 Harbor 的所有 yaml 文件都在:https://github.com/vmware/harbor/tree/master/Deploy/kubernetes


当所有服务都建立成功之后,我们就可以通过配置好的 DNS 或者 Service IP 来访问 Harbor 的网站了。但是如果要存储镜像,我们还需要配置证书(Certificate)。因为 Docker Registry 都是采用的 https。如果没有证书,会得到类似下面的错误:


Error response from daemon: invalid registryendpoint https://{HOST}/v0/: unable to ping registry endpointhttps://{HOST}/v0/ v2 ping attempt failed with error: Gethttps://{HOST}/v2/: EOF v1 ping attempt failed with error: Get https://{HOST}/v1/_ping:EOF. If this private registry supports only HTTP or HTTPS with an unknown CAcertificate, please add `--insecure-registry {HOST}` to the daemon's arguments.In the case of HTTPS, if you have access to the registry's CA certificate, noneed for the flag; simply place the CA certificate at/etc/docker/certs.d/{HOST}/ca.crt
复制代码


获取证书比较麻烦,有一个方法可以使得这个部署好的 Harbor 先用起来:


  1. 先打开/etc/default/docker 文件:


sudo vi /etc/default/docker


  1. 在 DOCKER_OPTS 中把 DNS 或者 IP 加到 insecure-registry 列表里:


DOCKER_OPTS="$DOCKER_OPTS–insecure-registry={HOST}"


  1. 重启 docker daemon:


sudo service docker restart

结语

VMware 开源项目 Harbor 作为 Docker 私有镜像库,跑在 Kubernetes 上之后,能享受到 Kubernetes 作为容器管理平台。


本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/1XtK2ZOBgd8A0YYZK4SfqA


2020-03-13 17:26766

评论

发布
暂无评论
发现更多内容

JDD Oxygen智能零售论坛 | 《大模型时代的广告营销变革与实践》

京东科技开发者

C#线性查找算法

追逐时光者

C#

企业选择IM即时通讯软件,为何更注重私有化部署?

BeeWorks

即时通讯 IM 私有化部署

不仅仅是代码助手:用 Plugins 将 Claude Code 打造成你的专属工具链(1/4)

Robin Min

LLM plugins vibe coding Claude-Code Coding Agent

分享精选文章合集 - 2025-10-27

Y11

求职 找工作 招聘 应届生

浅谈 Agent 开发工具链演进历程

阿里巴巴云原生

阿里云 云原生 agent

当“情绪价值”成为刚需:保险平台积极探索保险+新实验

科技热闻

本地盘的价格,云磁盘的弹性:百度智能云弹性临时盘来了

Baidu AICLOUD

块存储 #云存储 云磁盘

解决 Nginx 路径前缀问题:从 /serviceA 到 /special/serviceA 的平滑迁移

玄兴梦影

nginx 代理 nginx反向代理 Nginx 代理

开发者的 “变现神器”,代码能当 “摇钱树”

微擎应用市场

研发排查问题的利器:一款方法调用栈跟踪工具

京东科技开发者

跨区域协同,破局AI落地痛点!「AI共创 三生万物」司马阅2025企业AI落地应用峰会苏州站完美收官

司马阅

技术实践:在基于 RISC-V 的 ESP32 上运行 MQTT over QUIC

EMQ映云科技

瑞幸咖啡成立八周年,向原产地捐赠8所“博爱校医室”

Lily

发布会回顾|袋鼠云发布多模态数据中台,重构AI时代的数据底座

袋鼠云数栈

数据中台 发布会 多模态数据 袋鼠云 数栈

常用Web 实时通信技术:原理+选型,一篇通关

京东科技开发者

云栖实录 | 实时计算 Flink 全新升级 - 全栈流处理平台助力实时智能

阿里云大数据AI技术

flink 阿里云 AI 实时计算 Fluss

PDF/epub一键转思维导图,AI帮你10分钟搞定全书精华

阿星AI工作室

产品 AI 工具 电子书

橱窗用LED显示屏,店铺“亮”起来

Dylan

品牌 LED LED display LED显示屏 LED屏幕

告别“信息孤岛”,BeeWorks 如何为制造业数智化转型搭好“底座”?

BeeWorks

即时通讯 IM 私有化部署

采购管理系统

深圳亥时科技

【第三期】USM上海线下工作坊

ShineScrum

敏捷活动

Apache RocketMQ × AI:面向 Multi-Agent 的事件驱动架构

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

Kingbase与ETL:如何实现金融级数据库的安全数据同步

谷云科技RestCloud

数据处理 数据同步 ETL KingBase 数据集成平台

传帮带 人才梯队建设经验总结(15)

万里无云万里天

人才培养 工业 工厂运维

什么是SD-WAN?它的优势有哪些?如何搭建SD-WAN?

光联世纪

SD-WAN

C#/.NET/.NET Core技术前沿周刊 | 第 59 期(2025年10.20-10.26)

追逐时光者

C# .net

压缩指针:64位系统下,Java虚拟机是如何“偷”回4字节内存的?

poemyang

Java虚拟机 java对象

AI赋能“一带一路”:司马阅入选《“一带一路”人工智能应用场景案例集(2025)》

司马阅

AWS CloudTrail 可观测最佳实践

观测云

aws cloudtrail

实力圈粉,斩获佳绩!中国重汽轻型汽车成都房车展圆满收官

科技热闻

才云Caicloud与VMware项目合作,实现Harbor与Kubernetes对接_语言 & 开发_才云科技_InfoQ精选文章