写点什么

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

评论

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

性能测试中的LongAdder

FunTester

性能测试 FunTester

在线HTML压缩工具

入门小站

工具

CPU的“花招”已耍完?无指令集架构颠覆旧套路

OneFlow

人工智能 机器学习 深度学习 英伟达 芯片

java高级用法之:在JNA中使用类型映射

程序那些事

Java 程序那些事 3月月更 JNA

个全中文注释的迷你Spring!

程序员阿杜

Java spring springboot

微信业务架构图&学生管理系统架构设计

高山觅流水

架构实战营 「架构实战营」

[Day2]-[回溯] N皇后问题

方勇(gopher)

LeetCode 动态规划 数据结构算法

如何建立高效的质量保障机制

老张

软件测试 质量保障 交付能力

【躲过裁员,成功上岸】发现小公司有不好的苗头,赶紧学习!

小傅哥

面试 小傅哥 中间件 项目

Linux之time命令

入门小站

Linux

解决报错:SSL certificate problem: certificate has expired

liuzhen007

git

分布式事务详解:分段提交与最终一致性

分布式事务 可靠消息最终一致 TCC 构架 最终一致性

DiDi Kafka-Manager安装和简单使用

云原生

kafka spring kafka manager

vivo 商品中台的可视化微前端实践

vivo互联网技术

可视化 前端特效

架构实战营6&微信业务架构&学生管理系统方案

唐诗宋词

在线常用crontab表达式大全验证解析

入门小站

工具

【研讨会报名截止最后一天】全程参会,还有惊喜奖品等你拿!

龙智—DevSecOps解决方案

CI/CD 在线研讨会

Echarts 折线图完全配置指南 - 手把手教你设置 Echarts 折线图详细教程

蒋川

Vue eCharts

成为 DevOps 工程师需要具备哪些能力?

飞算JavaAI开发助手

Linux常用命令分享:有手就会,但能解决95%以上的问题

优麒麟

Linux 开源 计算机 优麒麟

车联网数据安全新挑战的技术应对方案

Speedoooo

车联网 物联网 数据安全 容器安全

【ELT.ZIP】OpenHarmony啃论文俱乐部——轻翻那些永垂不朽的诗篇

ELT.ZIP

OpenHarmony 数据压缩 ELT.ZIP

React Router 6 (React路由) 最详细教程

蒋川

React react rout

摩尔定律的现在及未来

科技新消息

TDengine 和 InfluxDB 查询性能对比测试报告

TDengine

数据库 tdengine

赋能创新,深开鸿重磅发布面向金融行业KaihongOS发行版

科技汇

什么是404页面?

源字节1号

404

Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器

蒋川

Vue video.js

Petal Maps的美学钥匙,解锁AITO问界M5的硬核浪漫

脑极体

架构实战营-第6期 模块一课后作业

乐邦

「架构实战营」

AppCube快速开发问卷调查应用在WeLink发布上线

DS小龙哥

3月月更

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