SREWorks云原生数智运维工程实践-Kubernetes资源编排之二:Helm篇(中)

简介: SREWorks云原生数智运维工程实践-

三、 Helm的优点

 

生命周期管理:可以实现对组件实例的查询、安装、卸载、升级、回滚

方便的命令行:对于简单变量,可以在部署的同时指定对应的参数,方便部署

插件和工具生态:作为CNCF项目Helm已经变成了K8S基础生态的一部分,各种各样的外部系统都会对它进行默认支持,CICD工具集成方面有得天独厚的优势;同时用户能够从社区中获取丰富的专业知识和共享的Chart包

确保Secret安全性:一些敏感数据在Kubernetes中会存储为文本文件,作为Helm模版和值的一部分,而helm-secrets插件为关键信息提供秘密管理和保护,将相关值进行加密

Chart调试功能:Helm提供了一些命令让用户在安装前测试资源的正确性,检查Chart是否正确生成,例如helm lint;helm install —dry-run — debug等

 

四、 Helm的缺点

 

应用定制受限于预置变量:Chart是一种模板,Chart的用户仅能通过对values的控制来定制组件的部署行为,模板中没有提供变量的位置,是无法在下游直接进行变更。

YAML文件的无序部署在YAML文件变多之后,尤其在Operator-CRD场景下,YAML下发常常需要存在一定的先后顺序。helm中利用一个叫crd目录来进行优先下发来避免问题。但实际工程实践中,对于顺序的要求会更复杂。

应用安装状态感知:对于Helm而言,将所有Chart中的模版推到Kubernetes之后,它的install过程就结束了,它并不关心yaml中配置的各个组件在Kubernetes中是否能有效运行,而这恰恰是用户最关心的部分,因此使用Helm安装可能会出现用户无法感知的异常

 

五、 SREWorks对Helm的能力补充

 

1. 部署SREWorks时的Helm安装进度反馈

 

SREWorks平台自身的安装也是通过Helm包来实现的,常常会有一些SREWorks的用户以为helm install执行完就安装完了。事实上这个时候安装才刚刚开始。我们希望用户在这个过程中能够感知到具体的安装进度和异常反馈,于是我们在helm install执行完后提醒用户该功能将于v1.3版本上线):

 

 

Please execute following command in terminal to trace the install progress:

 

kubectl logs job.batch/sreworks-progress-check -nsreworks -f

 

After install finished (5-10mins) open the following URL in your browser:

 

   http://xxxx/#/

 

   account: admin

   password: *****

 

 

在这个sreworks-progress-check的job中,我们实现了对SREWorks安装进度全跟踪。

 

image.png

 

我们编写了进度查询和错误诊断脚本,将其包装成SREWorks的一个Job和其他所有组件一起同步部署,这样用户就能在终端实时查看安装进度,并能在异常出现时及时进行排查。

 

进度查询

 

image.png

错误诊断

 

image.png

 

2. SREWorks中的Helm组件状态统一管理

 

鉴于Helm并不跟踪各个组件的部署状态,在SREWorks中,我们复用AppManager已有的Groovy脚本托管能力,自己编写了一个小Groovy脚本,目的在于等待终态+获取数据。

 

代码如下:

 

 

getStatus(request) {

    def client = getKubeClient(kubeconfig from parameters)

    def service = client.services().inNamespace(namespace).withName(name).get()

    def response = new JSONObject()

    if (service.get("loadbalancer", "ingress", 0, "ip") not empty) {

        response.put("spec.metadata.annotations.vvpSlb", service.get("loadbalancer", "ingress", 0, "ip"))

        return Status.builder().response(response).status("SUCCESS").build();

    } else {

        return Status.builder().status("RUNNING").build();

    }

}

 

 

上述流程完成了Helm的安装、终态等待及数据获取。

 

上述getStatus()函数除了部署过程会刷5s/次;部署完之后也会一直刷,不过频率逐步降低到5min/次。作为状态感知的数据来源。

 

3. SREWorks中的Helm组件顺序部署

 

前面也提到过Helm的YAML文件无序下发针对大型工程而言,会有一定的影响。SREWorks的Appmanager基于OAM模型实现了workflow能力,能够支持多个Helm组件按照DAG图的顺序部署。

 


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
11天前
|
运维 Kubernetes 监控
构建高效自动化运维系统:基于容器技术的策略与实践
【4月更文挑战第19天】随着云计算和微服务架构的兴起,传统的运维模式正逐渐向自动化、智能化转型。本文将探讨如何利用容器技术构建一个高效、可靠的自动化运维系统,涵盖系统设计原则、关键技术选型以及实践经验分享。通过引入容器技术,我们可以实现应用的快速部署、弹性伸缩和故障自愈,从而提高运维效率,降低系统维护成本。
|
1天前
|
运维 监控 安全
构建高效自动化运维系统:策略与实践
【4月更文挑战第29天】 在信息技术日新月异的今天,高效的运维管理已成为企业保持竞争力的关键因素。本文将探讨如何构建一个能够适应快速变化需求的自动化运维系统。通过深入分析自动化工具的选择、配置管理的最佳实践以及持续集成和部署的策略,我们旨在为读者提供一个清晰的框架来优化他们的运维流程。文章的核心在于提出一种结合了最新技术和思维模式的综合解决方案,以实现运维工作的最优化。
|
1天前
|
机器学习/深度学习 人工智能 运维
构建高效自动化运维系统的策略与实践
【4月更文挑战第29天】 在数字化转型的浪潮中,企业IT基础设施变得日益复杂多变。传统的手动运维方式已无法满足快速响应和高效率的需求。本文将探讨如何通过一系列策略和技术手段构建一个高效的自动化运维系统。首先,分析当前自动化运维的必要性及其带来的益处;接着,详细阐述自动化运维的核心组件、工具选择以及实施步骤;最后,通过案例分析展示自动化运维在实际环境中的应用效果,并讨论面临的挑战及未来发展趋势。
|
5天前
|
运维 监控 安全
构建高效自动化运维体系:策略与实践
【4月更文挑战第25天】在数字化转型的浪潮中,企业IT基础设施日趋复杂多变,传统的手动运维模式已难以满足快速响应和高效管理的需求。本文探讨了构建一个高效自动化运维体系的关键环节,并结合实际案例分析,提出了一系列切实可行的策略与实践方法。文章着重分析了自动化工具选择、流程设计优化以及持续监控的重要性,并讨论了如何通过这些手段降低运维成本,提升系统稳定性和安全性。
|
5天前
|
存储 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的协同策略
【4月更文挑战第25天】 在当今快速迭代的软件开发过程中,自动化运维已成为提升效率、保证一致性和降低人为错误的关键。本文将探讨如何利用Ansible作为配置管理工具,以及Kubernetes作为容器编排系统,共同构建一个高效、可靠的自动化运维体系。文章首先概述了自动化运维的基本概念及其重要性,随后详细分析了Ansible与Kubernetes在自动化流程中的作用与优势,并通过一系列实践案例,展示了两者如何协同工作以优化部署、扩缩容和灾难恢复等关键运维任务。最后,文中还讨论了在实际应用中可能遇到的挑战及相应的解决策略,为读者提供了一套完整的自动化运维解决方案参考。
|
6天前
|
运维 Prometheus 监控
构建高效自动化运维系统:策略与实践
【4月更文挑战第24天】 在当今快速发展的信息技术时代,自动化运维已经成为提高企业IT效率、确保系统稳定性和敏捷响应市场变化的关键。本文将探讨构建一个高效自动化运维系统的关键环节,包括基础设施即代码(IaC)的实现、持续集成与持续部署(CI/CD)流程的优化以及监控和日志分析的重要性。通过这些技术的融合,我们旨在提供一个可行的蓝图,以帮助企业实现运维工作的自动化,从而提升整体业务效能。
|
15天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
16天前
|
人工智能 运维 监控
构建高效自动化运维体系的实践与思考
【4月更文挑战第14天】在数字化转型的浪潮中,自动化运维作为提升系统稳定性和效率的关键手段,受到了企业的广泛关注。本文将深入探讨如何构建一个高效的自动化运维体系,涵盖从基础设施的搭建到流程的优化等多个方面。通过分析当前自动化运维的挑战及解决方案,文章旨在为读者提供一套实用的策略框架,帮助企业实现运维工作的高效化、标准化和智能化。
|
17天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
18 4
|
17天前
|
运维 Prometheus 监控
构建高效自动化运维流程的策略与实践
【4月更文挑战第13天】 在现代IT基础设施管理中,自动化运维已成为提升效率、确保稳定性和快速响应变化的关键因素。本文将详细探讨构建一个高效自动化运维流程的战略规划、关键技术选型以及实际执行过程中的最佳实践。我们将通过具体案例分析,展示如何整合配置管理工具、持续集成/持续部署(CI/CD)管道、监控告警系统以及日志分析平台,来形成一个协同工作的整体解决方案。文章的目标是帮助运维团队构建出能够适应不断变化需求的自动化框架,实现运维工作的标准化、系统化和智能化。

热门文章

最新文章