如何使用Spinnaker克服Kubernetes持续交付的挑战

Kubernetes具有很大潜力可以帮助组织快速部署和交付代码更改,但是在为其进行持续交付时会遇到一些挑战。

Kubernetes是业界领先的容器编排系统,并且以Kubernetes为中心构建了一个庞大的开源和商业组件的生态系统。在冠状病毒疫情发生之后,更多的组织正在将Kubernetes视为其IT转型旅程的核心部分。Kubernetes之所以成为一个出色的容器管理工具,因为它提供以下功能:

自动封装

缩放和自我修复容器

服务发现

负载均衡

但是,只是使用Kubernetes可能无法解决敏捷性的目的,因为它从来不是一个部署系统。以下将介绍使用Kubernetes面临的一些挑战,以及如何应对这些挑战以释放云原生的全部潜力。

采用Kubernetes时部署的挑战

1.部署复杂性和脚本使用

将应用程序部署到Kubernetes中并不是一件容易的事,因为它涉及许多人工编写的脚本。例如,开发人员必须创建YAML或JSON格式的Kubernetes部署清单文件(如下图所示),并编写kubectl命令来部署应用程序:

尽管对于某些开发人员来说,单一部署可能看起来很容易,但当其目标是每天执行多个部署到dev/QA/Prod时,这将成为一项艰巨的任务。这需要对Kubernetes有着充分的了解,但并非团队的所有成员都精通Kubernetes。通常情况下,组织最终会使用脚本和kubectl命令来提高部署速度。

云原生计算基金会(CNCF)最近对1500名受访者进行的一项调查表明,在使用和部署容器方面,复杂性和文化变化仍然是Kubernetes采用的最大挑战,如下图所示。

2.过度依赖专家和开发人员产生倦怠

由于缺乏Kubernetes的专门知识,开发人员和应用程序团队严重依赖DevOps团队(也称为发布团队),以持续帮助他们创建Kubernetes对象,如部署、复制集、状态集和守护进程。在其后续工作的过程中,与不同的团队协作以获得部署的更改将会花费利益相关者的大量时间。此外,由于截止日期较短且实现业务目标的压力很大,开发团队必须花费大量时间来部署其更改。

根据企业级云平台提供商D2IQ公司发布的一份调查报告,几乎所有组织(96%)在容器化应用程序的初始部署过程中都面临挑战和复杂性,并指出Kubernetes是他们痛苦的根源。该报告还指出,“51%的开发人员和架构师表示,构建云原生应用程序使他们不堪重负。这对于负责为其组织部署容器化应用程序的高级IT领导者来说压力特别大。”

3.面临严峻的安全挑战

Kubernetes并非旨在执行策略,例如查找图像中的漏洞。因此,如果组织使用Kubernetes进行部署,则需要找到其他方法,通常是人工执行策略或使用一些脚本。

例如基于默认的网络策略,Kubernetes Pod可以彼此通信,并可以与外部端点无缝通信。由于应用程序或基础设施的安全问题,如果一个容器或Pod被破坏,则其他容器或Pod都可能受到攻击(也称为复杂的攻击向量)。

由于组织将软件交付的速度放在首位,因此有时降彽了安全性和合规性的优先级。通常情况下,在采用Kubernetes的过程中,组织必须尝试在构建、测试、部署和生产阶段集成安全性和合规性。

4.缺乏部署策略和部署后运行状况检查

使用基于Kubernetes的应用程序的一个常见目的是根据需求扩展到大型用户。在这样的生产环境中,可以观察到大量节点、数百个Pod和数千个运行多个应用程序实例的容器。

而向客户介绍新变化的一种方法是逐步部署,例如采用蓝/绿部署或金丝雀(Canary)部署等策略。这样可以避免向最终客户发布不稳定版本的风险。

但是,Kubernetes中并没有蓝/绿部署或金丝雀(Canary)部署。最重要的是,由于容器化应用程序的分布式特性,获取和发送新部署的Kubernetes应用程序的健康状况更新,以及估计其漏洞和对组织的风险是非常繁琐和复杂的。

使用开源Spinnaker进行Kubernetes部署

Spinnaker是一个开放源代码和多云持续交付平台,可用于快速发布代码并保持竞争优势。Spinnaker更加注重使用Kubernetes应用程序,并帮助IT团队迅速将应用程序部署到任何Kubernetes(K8S、GKE、EKS、AKS)中。以下是Spinnaker的一些重要功能。

1.用于端到端部署自动化的Spinnaker管道

Spinnaker提供用于自动部署的端到端管道(如下图所示)。该工作流程可经构建一致且重复的部署,可以制作AMI或Docker映像,从集群中找到k8S容器,然后进行部署、修改集群组并在K8S中运行容器。

在部署之后,Spinnaker会实时检查并显示Kubernetes集群的运行状况。可以将管道中的部署阶段配置为通过电子邮件、移动消息或Slack消息在所有级别通知利益相关者。

2.内置的部署策略

开源Spinnaker提供了各种部署策略,例如蓝/绿部署、滚动部署、金丝雀部署,以降低部署到生产环境中的风险。Spinnaker还与K8S Pod自动缩放器进行交互,以确保在部署期间保持容量大小。

开源Spinnaker提供的自动金丝雀分析(ACA)技术可通过将原有版本的指标和日志与部署新版本的指标和日志进行比较,从而最大限度地降低将更新部署到K8S生产服务器中的风险。

除此之外,Spinnaker还提供configmap和secrets的版本控制以及不可变的服务器部署。这使回滚可以保留先前使用的确切配置,并执行二进制文件。

3.新工件的持续验证

开源Spinnaker周围提供了许多企业插件,这些插件扩展了免费工具的用例。例如,开源Spinnaker的发行伙伴OpsMx公司提供了企业级Spinnaker,可以在日志和指标上使用人工智能/机器学习来检测新部署的Kubernetes应用程序的问题。如果检测到异常,则Spinnaker可以回滚到新的应用程序。但是在此之前,它可以确保先前的服务器组具有足够的大小。

4.在Kubernetes部署中加强安全性和合规性

确保Kubernetes使用中的安全性需要在整个软件开发生命周期(从编码到构建再到部署)中进入安全性和合规性的安全门。例如,如果构建未通过冒烟测试(冒烟测试这一术语描述的是在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过程),则可以在构建阶段使用安全门使部署失败。同样,可以安装安全门以检查容器图像是否已通过图像扫描报告。开源Spinnaker允许安全管理人员在交付管道中安装安全门。

Spinnaker被扩展为声明政策,以遵守组织指南和行业标准,例如PCI-DSS、HIPAA和SOC 2。而发布管理器可以将部署日期和时间定义为停机策略的一部分。这可能会有一定的高峰流量时间,应该避免部署具有停机风险的代码。部署窗口允许管道确保在这些高峰流量时区之外进行K8S部署,并且不会影响客户体验。

5.GitOps样式部署

在Spinnaker的帮助下,组织可以在Kubernetes集群中执行GitOps风格的部署。熟悉YAML的团队可以对文件进行更改,并且Spinnaker可以进行配置检测这些更改,并自动将其部署到选定的环境中。

结论

毫无疑问,通过采用云原生应用程序可以实现业务敏捷性,而Kubernetes扮演着核心角色。选择整合Kubernetes和Spinnaker的组织将会比单独使用Kubernetes的组织更快地看到积极的结果。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容