写点什么

才云 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:26732

评论

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

年底考勤管理汇总难?织信OA管理系统无缝对接外部应用助你解决

优秀

低代码 考勤管理 OA管理系统

中科柏诚:加速银行数字化转型的新引擎

联营汇聚

ARMS 应用安全-你的应用运行时的隐形安全卫士

阿里巴巴中间件

云原生 中间件 RASP Arms

以 Kubernetes 的方式来运行极狐GitLab Runner

极狐GitLab

为什么说绿色区块链是未来金融范式的必要底层?

CECBC

LabVIEW图像增强算法(基础篇—5)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 图像增强算法

性能工具之代码级性能测试工具ContiPerf

zuozewei

单元测试 性能测试 测试工具 12月日更

游戏用户LTV预测实践

bilibili游戏技术

一年又要过去了!盘点2021年区块链的6个关键词

CECBC

一周信创舆情观察(12.20~12.26)

统小信uos

突破底层基础架构瓶颈,揭秘TDSQL存储核心技术

腾讯云数据库

tdsql 国产数据库

首个国产分布式数据库调研:TDSQL产品技术及服务能力排名

腾讯云数据库

tdsql 国产数据库

『SphereEx 年终贺礼』专注为用户提供更好的使用体验

SphereEx

开源 ShardingSphere 一键部署 SphereEx-Boot 开源公司

百度智能云产业智能化新生态,新在哪里?

百度开发者中心

人工智能

使用Kubernetes部署应用

Rayzh

Kubernetes 云原生

TDengine在水电厂畸变波形分析及故障预判系统中的应用

TDengine

数据库 大数据 tdengine 物联网 时序数据库

Spring Cloud Alibaba 2.2.7 版本正式发布

阿里巴巴中间件

云计算 开源 微服务 中间件 spring cloud ali

开源社庄表伟:开源要出圈了,推坑文化、沉浸式养鱼塘,社区建设心法了解一下 I OpenTEKr 大话开源 Vol.5

OpenTEKr

大话开源

设计消息队列存储消息数据的MySQL 表格

Steven

架构实战营

架构实战营 - 模块 3 - 作业

Pyel

「架构实战营」

最近火热的web3到底是什么?

石云升

区块链 28天写作 12月日更 web3

腾讯云分布式数据库TDSQL在东吴证券新一代核心交易系统中成功落地

腾讯云数据库

tdsql 国产数据库

Java中的深拷贝和浅拷贝

Ayue、

深拷贝

作业帮检索服务基于 Fluid 的计算存储分离实践

阿里巴巴中间件

云计算 云原生 中间件 存储分离 Fluid

迷雾中的自动化测试体系建设

CODING DevOps

自动化测试 接口测试 业务驱动测试

高效工作?畅快游戏?来开发者Meetup探索AI技术新玩法

OpenI启智社区

人工智能 飞桨领航团

阿里云王志坤:强劲可靠、无处不在的云,为创新保驾护航

阿里云弹性计算

弹性计算 年度峰会

Cube 技术解读 | Cube 小程序技术详解

阿里巴巴终端技术

小程序 ios android 移动开发 客户端

不用任何框架,Java 就能实现定时任务的 3 种方法!

CRMEB

RocketMQ Streams:将轻量级实时计算引擎融合进消息系统

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件

KubeCon China 2021 阿里云专场来了!这些首日亮点不容错过

阿里巴巴中间件

阿里云 云原生 中间件 cncf KubeCON

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