草庐IT

Rancher Prime 为平台工程提供面向 K8s 的弹性能力

张应罗 2023-03-28 原文
作者简介

张应罗,SUSE 资深架构师,拥有 16 年架构咨询工作经验,专注于 SUSE Enterprise Container Management 相关的产品落地方案及咨询方案设计。

—— 平台工程 ——

“DevOps 已死,平台工程才是未来!” 去年,知名软件工程师兼 DevOps 评论员 Sid Palas 在推特上发出呐喊。

他的核心观点是:开发者不想跟基础设施打交道,企业在发展过程中又需要控制自己的基础设施;只有平台工程,能将这两个相互矛盾的命题统一起来。这一观点引发了开发者们的激烈讨论,平台工程正在崛起。

简单为大家介绍一下平台工程(Platform Engineering)的概念。

平台工程的发展背景

  • 软件在不断演进过程中将运维技能从开发技能中剥离出来,形成了两个不同的职业,但结果证明过度分离的两个职业无法满足软件快速迭代的需求,因此 DevOps 出现了,我们用它来统一运维及开发。开发周期是一个企业最稀缺的资源,因此应该将尽可能多的资源放在核心产品开发上。
  • 开发人员应该能够端到端地部署和运行他们的应用。“谁构建,谁运行”才是真正的 DevOps,但并不是所有的公司都是 Google、亚马逊、微软,大多数公司都没有像他们那样的人才库,也不会仅仅为了优化开发工作流和体验而像他们那样投入资源。
  • 在过去,有的工程师写代码,有的工程师跑代码。而现在,工程师不仅编写代码,还要运行他们编写的代码。这让软件工程师觉得他们必须对所有事情都了如指掌,大大增加了认知负担。
  • 这迫使许多团队重新在自动化带来的自由与认知负担之间权衡利弊,平台工程也因此越来越受关注和热议。Gartner 在 2022 年 8 月发布的软件工程成熟度曲线中添加了“平台工程”。

平台工程的定义

  • “平台工程”社区主要贡献者及 Humanitec 产品负责人 Luca Galante 在《什么是平台工程》的文章里指出:平台工程是一门设计和构建工具链与工作流的学科。这些工具链和工作流可以为云原生时代的软件工程组织提供自助服务功能。平台工程师提供集成化产品,通常称为“内部开发人员平台”,可以涵盖应用程序整个生命周期的所有操作需求。
  • 内部开发人员平台由平台工程团队构建,用于铺好坦途以此来支持开发人员自助服务。内部开发人员平台由许多不同的技术和工具组成,以一种降低开发人员认知负担的方式组合在一起,无需抽象出上下文和底层技术。平台工程团队将他们的平台视为一种产品,根据用户研究对其构建,并不断维护和改进。
Kubernetes 在平台工程中扮演的角色

  • 无论内部开发人员平台的工具链有多么丰富,在云原生时代,Kubernetes 已然成为应用落地部署的最优选择。平台工程承载了应用迭代和部署验证的重任,需要建立提供面向 Kubernetes 的弹性能力。

—— Rancher Prime ——

为平台工程体系提供强有力支撑

Rancher Prime 的混合云 K8s 管理能力

Rancher Prime 研发之初的核心理念就是多云管理,因此,产品进化至今,在历经近上千个 release 后,Rancher Prime 在多云多 K8s 集群管理领域已然遥遥领先,可以随时随地管理和部署任意位置的 K8s 集群。

Rancher Prime

  • Rancher Prime 支持对国内头部公有云厂商的 K8s 发行版进行全生命周期管理,包括阿里云 ACK、腾讯云 TKE、华为云 CCE。
  • Rancher Prime 支持对国际头部公有云厂商的 K8s 发行版进行全生命周期管理,包括 AWS EKS(Global Region 及 China Region)、Azure AKS(Global Region及China Region)、Google GKE。
  • 在私有数据中心场景下,Rancher Prime 可以创建经过 CNCF一致性认证的 K8s 发行版 RKE 和 RKE2,帮助客户快速落地生产级别的 K8s 集群。
  • 在边缘计算场景下,Rancher Prime 可以创建轻量级 K8s 发行版 K3s,并且支持 X86 和 ARM 两种架构。
Rancher Prime 面向多集群的中心化多租户体系

Rancher Prime 具备一套成熟的面向多集群的中心化多租户体系,可以轻松抽象用户访问权限。这为平台工程内的开发人员提供了良好的隔离环境,让他们可以灵活使用自己的开发环境,而不影响其他开发人员。

Rancher Prime 多租户体系

  • Rancher Prime 提供面向多集群并基于 RBAC 的多租户体系,不同的用户可以通过绑定不同的角色来获得不同的权限。
  • 拥有“全局级别”角色的用户通常可以管理 Rancher Prime 的所有 K8s 集群,拥有“集群级别”角色的用户通常只能看到和管理某一个或多个 K8s 集群,拥有“项目/命名空间”角色的用户通常只能看见和管理集群下某一个或多个项目及命名空间。
  • Rancher Prime 还支持对接多种外部统一认证软件,例如 AD、Keyclock、OKTA 等,方便企业进行统一认证管理。

Rancher Prime 认证体系对接

NeuVector 全生命周期的平台安全保障

在构建内部开发人员平台时,平台安全始终是需要优先考虑的问题。NeuVector 提供了全面的全生命周期、零信任容器安全体系,在整个容器生命周期中持续扫描,以消除安全隐患。在内部开发人员平台构建之初就应制定安全策略,从而最大限度地提高开发人员的灵活性。

NeuVector

NeuVector 的安全保护包括供应链安全和运行时安全,在供应链安全范畴内可以对容器镜像、K8s 主机资源进行合规扫描,同时将 K8s 的准入控制机制与 pipeline 流程相结合,实现准入控制。

NeuVector 安全体系

在运行时安全层面可通过容器微分段、DLP、WAF 等防护手段,确保内部开发人员平台安全性。

NeuVector 防护体系

NeuVector 可在所有经过 CNCF 认证的 K8s 平台上独立使用。在与 Rancher Prime 结合使用时,只需点击几下即可安装和使用 NeuVector,并对整个 Kubernetes 环境进行安全保护。

NeuVector with Rancher Prime

Rancher Prime 和 NeuVector 产品体系的组合,可以让平台工程团队更容易构建自己的内部开发人员平台,让开发工程团队专注于业务代码开发,而非深度对接基础设施,同时也能保障平台的安全性。

—— 典型案例 ——

Ubisoft

育碧(Ubisoft)于 1986 年在法国成立,是全球知名的游戏制作、发行和代销商,业务遍及五大洲,在全球拥有 40 多个开发工作室。

育碧鼓励开发团队在 Kubernetes 中开发云原生微服务,不久之后,创新项目激增。由于有的团队面向私有云进行开发,有的团队面向公有云进行开发,因此公司需要拥有统一的开发方法。

基础架构团队希望在公司内部构建一个中央  Kubernetes 配置平台,从而实现大多数流程的自动化。当 UKS(Ubisoft Kubernetes Service)诞生时,这一愿景成为了现实。这个基于 Rancher Prime 的自助式 Kubernetes 平台让成千上万的开发人员能够以可控、集中管理的方式即时启动新的 Kubernetes 集群。

通过使用 UKS 和 Rancher Prime,开发人员可以自由地为任何云环境进行开发,而不必手动管理许多基本部署过程。Rancher Prime 实现了这些基本功能的自动化,并大大简化了开发生命周期。

从效率的角度来看,UKS 让开发者的工作更加轻松。与原来的手动方式相比,大幅提高了开发速度,减少了管理时间。与以往需要耗费几天时间相比,通过 Rancher Prime 配置集群并将其托管在本地,平均仅需 10 分钟。最重要的是,整个公司的 Kubernetes 集群现在都通过统一的平台进行管理。

目前,育碧的 K8s 集群已经超过 200 个,随着越来越多的团队使用 Kubernetes,这一数字将持续上升。未来,育碧 IT 建设的重点是创建一个托管解决方案,以优化基础设施的使用,提供多租户集群并减少运营负担。

—— 未来展望 ——

无论是 DevOps 还是平台工程,都要求基于 K8s 的底层平台具备安全性、灵活性、稳定性、先进性。因此,2023 年,SUSE 企业容器管理团队将在如下几个方面持续提升产品体验,以回馈企业用户及社区用户的信任:

  • Rancher Prime 不断增强 K3s Provisioning 能力,提供更加灵活多样的集群选择,K3s 极致轻量,足以应对面向开发测试的应用集群。
  • 整个 SUSE 企业容器管理产品线对 ARM 的支持将不断增强,得益于 ARM 生态体系的不断完善,越来越多的全球用户开始使用 ARM 来降本增效。
  • 持续加强对本土产品生态体系的支持,目前 Rancher Prime 已经适配鲲鹏芯片、海光芯片、麒麟 V10、openEuler 等软硬件体系,其中基于 openEuler 的 K8s 发行版 RFO(Rancher For OpenEuler)已经正式 GA。

有关Rancher Prime 为平台工程提供面向 K8s 的弹性能力的更多相关文章

  1. Ruby 的数字方法性能 - 2

    我正在使用Ruby解决一些ProjectEuler问题,特别是这里我要讨论的问题25(Fibonacci数列中包含1000位数字的第一项的索引是多少?)。起初,我使用的是Ruby2.2.3,我将问题编码为:number=3a=1b=2whileb.to_s.length但后来我发现2.4.2版本有一个名为digits的方法,这正是我需要的。我转换为代码:whileb.digits.length当我比较这两种方法时,digits慢得多。时间./025/problem025.rb0.13s用户0.02s系统80%cpu0.190总计./025/problem025.rb2.19s用户0.0

  2. ruby - Ruby 性能中的计时器 - 2

    我正在寻找一个用ruby​​演示计时器的在线示例,并发现了下面的代码。它按预期工作,但这个简单的程序使用30Mo内存(如Windows任务管理器中所示)和太多CPU有意义吗?非常感谢deftime_blockstart_time=Time.nowThread.new{yield}Time.now-start_timeenddefrepeat_every(seconds)whiletruedotime_spent=time_block{yield}#Tohandle-vesleepinteravalsleep(seconds-time_spent)iftime_spent

  3. ruby-on-rails - 如果条件与 &&,是否有任何性能提升 - 2

    如果用户是所有者,我有一个条件来检查说删除和文章。delete_articleifuser.owner?另一种方式是user.owner?&&delete_article选择它有什么好处还是它只是一种写作风格 最佳答案 性能不太可能成为该声明的问题。第一个要好得多-它更容易阅读。您future的自己和其他将开始编写代码的人会为此感谢您。 关于ruby-on-rails-如果条件与&&,是否有任何性能提升,我们在StackOverflow上找到一个类似的问题:

  4. ruby-on-rails - 不兼容的库版本 : nokogiri. bundle 需要 8.0.0 或更高版本,但 libiconv.2.dylib 提供 7.0.0 版本 - 2

    为了在我的mac上为一个rails项目安装mysql,我遵循了安装Homebrew软件和删除mac端口的在线建议。这是问题开始的地方。rails项目不会构建,我得到这个:[rake--prereqs]rakeaborted!dlopen(/Users/Parker/.rvm/gems/ruby-1.9.3-p448/gems/nokogiri-1.6.0/lib/nokogiri/nokogiri.bundle,9):Librarynotloaded:/opt/local/lib/libiconv.2.dylibReferencedfrom:/Users/Parker/.rvm/gem

  5. ruby-on-rails - Rails 两条腿的 OAuth 提供商? - 2

    我有一个Rails2.3.5应用程序,其中包含我希望保护的API。没有用户-它是一个应用到应用风格的网络服务(更像是亚马逊服务而不是facebook),所以我想使用两条腿的OAuth方法来实现它。我一直在尝试使用oauth-plugin服务器实现作为开始:http://github.com/pelle/oauth-plugin...但它的构建需要三足(网络重定向流)oauth。在我深入研究对其进行更改以支持两条腿之前,我想看看是否有更简单的方法,或者是否有人有更好的方法让Rails应用程序实现成为两条腿的OAuth提供程序。 最佳答案

  6. ruby - 如何找到我的 Ruby 应用程序中的性能瓶颈? - 2

    我编写了一个Ruby应用程序,它可以解析来自不同格式html、xml和csv文件的源中的大量数据。我如何找出代码的哪些区域花费的时间最长?有没有关于如何提高Ruby应用程序性能的好资源?或者您是否有任何始终遵循的性能编码标准?例如,你总是用加入你的字符串吗?output=String.newoutput或者你会使用output="#{part_one}#{part_two}\n" 最佳答案 好吧,有一些众所周知的做法,例如字符串连接比“#{value}”慢得多,但是为了找出您的脚本在哪里消耗了大部分时间或比所需时间更多,您需要进行分

  7. ruby-on-rails - ruby 真的是一种完全面向对象的语言吗? - 2

    Ruby是完全面向对象的语言。在ruby​​中,一切都是对象,因此属于某个类。例如5属于Objectclass1.9.3p194:001>5.class=>Fixnum1.9.3p194:002>5.class.superclass=>Integer1.9.3p194:003>5.class.superclass.superclass=>Numeric1.9.3p194:005>5.class.superclass.superclass.superclass=>Object1.9.3p194:006>5.class.superclass.superclass.superclass.su

  8. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  9. ruby - svn ruby​​ 绑定(bind)是否作为 gem 提供? - 2

    我看到有几十个与svn相关的gem,但是我在其中任何一个上找到的少量文档表明它们是命令行包装器和杂项帮助程序。(svn命令、svn钩子(Hook)等)我在野外看到过执行以下操作的代码:require'svn/core'和SVN.Repos.add(...),但该模块的作者通过apt-get提取了他的svnruby​​工具。这对我来说不是一个选择,因为我正在开发一个windows/osx工具。Thispage列出了一些项目,但特别是,我需要一些可以访问svn+ssh存储库的东西,而且我没有时间花一半的时间来挖掘文档-十几个项目,试图引导每一个。我在寻找哪个gem?从那里开始,我很乐意挖掘

  10. ruby - 如何测试在运行之间提供功能的 Ruby 脚本? - 2

    单元测试的好方法是测试脚本在执行之间保持正确数据的能力——在使用Ctrl-C终止脚本然后重新运行之后?是否有针对执行类似操作的现有模块或脚本的任何测试可以针对最佳实践进行审查? 最佳答案 像http://avdi.org/devblog/2010/07/19/greenletters-painless-automation-and-testing-for-command-line-applications/一样使用库或者期望、运行、终止并重新运行您的程序,并检查它是否运行正确。好的做法是将程序设计为独立的模块,每个模块都经过良好测试

随机推荐