把整个技术平台送上云的开源项目

发表于 3年以前  | 总阅读数:199 次

今天介绍的开源项目是用 Go 语言写的一站式云原生 PaaS 平台——Erda,专为企业提供 DevOps、微服务治理、多云管理以及快数据管理等平台级服务。

GitHub 地址→https://github.com/erda-project/erda

Erda 借助云原生的优势为企业打造一个完整的技术平台,助力企业数字化转型。并且已通过大量的企业成功交付案例,积累了大量经验。放心地把服务交给 Erda 打理吧!

进化历程

Erda 的演进历程:

Erda 很早就开始探索云原生 DevOps 实践,最初的平台只拥抱了 Docker 实现了基于 Docker 的手动部署平台,整个设计理念是面向资源的。(2016年:容器化)

而后随着容器编排技术的兴起,选型了 DC/OS(mesos+marathon)作为容器服务技术底座。选择 mesos 也是因为它的出现要远早于 Docker、K8s、Swarm 等,有不少大规模的落地案例,稳定性得到了很好的验证,并且还有很强的扩展能力,在 mesos 之上除了有 marathon、metronome 等服务、任务的调度框架,还支持了不少大数据的框架,比如 Hadoop、Spark 等,这与我们需要发展大数据平台不谋而合。我们的设计理念也调整到以应用为中心,去面向开发者。(2017年:DC/OS)

前期交付的都用一个集群将平台完整的私有化输出到客户环境,但随着客户越来越多资源成本变成了一个大问题。Erda 开始考虑将平台能力 SaaS 化,提供企业租户,并支持多集群管理。客户侧的集群不需要再部署一个完整的 Erda 平台,只需开放口子可以给平台访问即可。在零产品能力损失的情况下,节省了大量的资源,并且客户不需要再关心平台的维护问题。(2018年:多集群架构)

Kubernetes 逐渐成为了业界的事实标准,Erda 提前预知了这个趋势。 在支持多集群架构时就将容器编排层进行了封装抽象,并引入了插件的机制便于未来的扩展。所以后面很平滑地将平台全部切至了 K8s。(2019年:支持 Kubernetes)

参考官网:https://www.erda.cloud/

Erda 用多集群管理解决的痛点

如今数字化转型已经成为现阶段企业发展的主流趋势,该趋势也促使着云市场的快速增长。我们已经处于云时代,而面向企业又会出现混合云、多云的架构。

  • 混合云:私有云和公有云相互搭配在一起使用。该场景下企业主要结合经济效益或者安全因素进行考量,来获取云计算的各方优势,取长补短。公有云可以获得更多弹性伸缩的能力,私有云可以用于存放企业数据。或者就是企业在尝试迁移上云的一个中间态等等。
  • 多云:包含两个及以上公有云服务提供商。这类场景,客户更多是不希望被单个云服务提供商锁定,把鸡蛋放在一个菜篮子。或者是因为地理位置的原因需要选择其他的服务商。

企业总可能出于各种原因进行多云、混合云的决策。而 Erda 面向企业进行交付时,必然也少不了会面对这些场景。Erda 最终都通过多集群管理的方式输出解决方案,为不同的环境搭建不同的集群,由平台侧统一管理,上层业务可以按需选择不同的集群进行应用的生命周期管理。

除了这些,一些其他的场景也可通过多集群管理的方式解决,比如:

  • 开发/测试/预发/生产环境隔离,把这些环境部署到不同的集群中;
  • 业务与数据的环境隔离,分离到不同的集群中;
  • 提升可扩展性,突破单一集群的节点上线;
  • 等等

综上所述,针对多集群管理,Erda 除了压缩交付的资源诉求,还输出了大量的解决方案,来满足客户的不同场景。

跨集群管理经验分享

上面主要介绍了 Erda 多集群管理的一个背景,及 ToB 交付时如何满足企业的各种场景需求。回到多集群管理会面临的一个大问题,就是如何跨集群进行访问、管理?

经历的阶段

Erda 在 DC/OS 时代,使用了最简单的 basic auth 的方式,直连集群进行管控。

随着客户量越来越大,并且平台支持异构调度之后,管理难度和安全问题凸显。Erda 实现了一套 netportal 的网络管控链路,中心有一个 netportal 组件,边缘则需要在集群端的 nginx configuration 中加一段配置。中心访问用户集群时会统一通过 netportal 进行代理,将流量转发到对端集群的 nginx 上。netportal 和 nginx 之间采用了 https 双向认证的方式进行建连,并且所有的证书都由中心统一签发,提升了通道的安全性。

随着产品战略的提升,开始建设 Erda Cloud,加强 Erda 产品的商业化能力,让用户可以自助地在平台上完成一系列操作,这个就对 netportal 链路产生了巨大挑战。netportal 有不少依赖,比如集群端的 nginx 版本,nginx 需要增加额外的配置,对应的证书需要由中心统一签发等等,这些都无法让用户完成自助操作。而此时 Erda 的容器服务默认换成了 Kubernetes,针对 Kubernetes 访问方式进行了扩展,引入了社区常见的访问方式:KubeConfig、ServiceAccount(Token)。

KubeConfig、ServiceAccount 的方式,会要求客户将 Kubernetes 集群的 ApiServer 暴露在公网上,由平台进行直连。如果没有外加安全措施,这种直连会存在一定的安全隐患。还碰到了有客户无法提供公网入口 IP,而上面所有的方式都是需要有公网入口才能实现。还好客户还不是全封闭的,可以访问公网,于是 Erda 借鉴了 Rancher 的做法,实现了 dialer 的通道管理,可以不必让 Erda 去连接用户的集群,而是在用户的集群安装 cluster agent 来连接 Erda,让用户集群主动建立一条连接,这条连接就变成了 Erda 去管控用户集群的隧道(Tunnel)。

核心组件

  • Cluster Agent:部署在用户业务集群的组件,会主动去连接 Erda 的 Cluster Dialer,同时会将一些集群信息做上报,例如集群内 kube-apiserver 的地址、访问 token 等。
  • Cluster Dialer:接收 Cluster Agent 的连接,同时将集群信息注册到 Cluster Manager,跟 Cluster Agent 之间的连接通过 Tunnel Session 维护起来。

Erda 控制平面内的其他组件比如 K8s Manager,可以通过请求 Cluster Dialer,找到要管控集群的 Tunnel Session,再通过这个 Tunnel 去访问对应集群中的 kube-apiserver。

Dialer 的使用

在 Erda 开源项目的 pkg/clusterdialer/dialer.go 模块:

https://github.com/erda-project/erda/blob/master/pkg/clusterdialer/dialer.go

提供了一个 cluster dialer lib,主要提供了以下三个 Dial Function:

type DialContextFunc func(ctx context.Context, network, address string) (net.Conn, error)
type DialContextProtoFunc func(ctx context.Context, address string) (net.Conn, error)

func DialContext(clusterKey string) DialContextFunc {
 return func(ctx context.Context, network, addr string) (net.Conn, error) {
  logrus.Debugf("use cluster dialer, key:%s", clusterKey)
  return getClusterDialer(ctx, clusterKey)(ctx, network, addr)
 }
}

func DialContextProto(clusterKey, proto string) DialContextProtoFunc {
 return func(ctx context.Context, addr string) (net.Conn, error) {
  logrus.Debugf("use cluster dialer, key:%s", clusterKey)
  return getClusterDialer(ctx, clusterKey)(ctx, proto, addr)
 }
}

func DialContextTCP(clusterKey string) DialContextProtoFunc {
 return DialContextProto(clusterKey, "tcp")
}

如果使用 http client 要访问用户集群的 HTTP 服务,可以通过如下方式构造 client:

client = &http.Client{
    Transport: &http.Transport{
        DialContext: clusterdialer.DialContext(cluster.Name),
    },
}

如果使用 K8s client-go 也可以借助 Dial Function 来构造对应的 rest.Config。如下:

rc := &rest.Config{
     Host:        host,
     BearerToken: cluster.ServiceAccountToken,
     TLSClientConfig: rest.TLSClientConfig{
         CAData:     append(caBytes, suffix...),
         NextProtos: []string{"http/1.1"},
     },
     Timeout:     45 * time.Second,
     RateLimiter: ratelimit.None,
     UserAgent:   rest.DefaultKubernetesUserAgent() + " cluster " + cluster.Name,
     WrapTransport: func(rt http.RoundTripper) http.RoundTripper {
         if ht, ok := rt.(*http.Transport); ok {
             ht.DialContext = clusterdialer.DialContext(cluster.Name)
         }
         return rt
     },
}

甚至如果要访问用户业务集群的 MySQL,实现 MySQL 控制台的功能,也可以实现:

import (
    "database/sql"
    ...
    "github.com/go-sql-driver/mysql"
    ...
)

...

mysql.RegisterDialContext("tcp", clusterdialer.DialContextTCP(cluster.Name))
db, _ := sql.Open("mysql", "root@tcp(127.0.0.1:3306)/")
defer db.Close()
...

结束语

一站式企业数字化平台 Erda,目前已服务过 50+ 大中型头部企业并完成交付,行业覆盖了零售、地产、园区、金融、建筑等领域。

沉淀了不少解决方案,未来也仍有一些需要改进的地方,比如支撑企业完成各种容灾方案:异地多活、两地三中心等,集群隧道高可用、安全等问题。

本文由哈喽比特于3年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/RDRkWxNKuS_7dqPkBcSctQ

 相关推荐

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

发布于:1年以前  |  808次阅读  |  详细内容 »

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

发布于:1年以前  |  770次阅读  |  详细内容 »

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

发布于:1年以前  |  756次阅读  |  详细内容 »

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

发布于:1年以前  |  648次阅读  |  详细内容 »

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

发布于:1年以前  |  589次阅读  |  详细内容 »

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

发布于:1年以前  |  449次阅读  |  详细内容 »

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

发布于:1年以前  |  446次阅读  |  详细内容 »

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

发布于:1年以前  |  445次阅读  |  详细内容 »

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

发布于:1年以前  |  444次阅读  |  详细内容 »

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

发布于:1年以前  |  442次阅读  |  详细内容 »

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

发布于:1年以前  |  441次阅读  |  详细内容 »

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

发布于:1年以前  |  437次阅读  |  详细内容 »

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

发布于:1年以前  |  430次阅读  |  详细内容 »

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

发布于:1年以前  |  428次阅读  |  详细内容 »

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

发布于:1年以前  |  420次阅读  |  详细内容 »

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

发布于:1年以前  |  411次阅读  |  详细内容 »

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

发布于:1年以前  |  406次阅读  |  详细内容 »

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

发布于:1年以前  |  398次阅读  |  详细内容 »
 相关文章
Android插件化方案 5年以前  |  237231次阅读
vscode超好用的代码书签插件Bookmarks 2年以前  |  8065次阅读
 目录