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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
资源编排,不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 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图的顺序部署。

 


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1天前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
|
8天前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
13天前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
13天前
|
运维 Kubernetes Cloud Native
云原生时代的容器编排:Kubernetes入门与实践
【10月更文挑战第4天】在云计算的浪潮中,云原生技术以其敏捷、可扩展和高效的特点引领着软件开发的新趋势。作为云原生生态中的关键组件,Kubernetes(通常被称为K8s)已成为容器编排的事实标准。本文将深入浅出地介绍Kubernetes的基本概念,并通过实际案例引导读者理解如何利用Kubernetes进行高效的容器管理和服务部署。无论你是初学者还是有一定经验的开发者,本文都将为你打开云原生世界的大门,并助你一臂之力在云原生时代乘风破浪。
|
19天前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
46 4
|
10天前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
32 4
|
6天前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
17 1
|
8天前
|
运维 监控 测试技术
构建高效运维体系:从监控到自动化的实践之路
【10月更文挑战第9天】 在当今信息技术飞速发展的时代,运维作为保障系统稳定性与效率的关键角色,正面临前所未有的挑战。本文将探讨如何通过构建一个高效的运维体系来应对这些挑战,包括监控系统的搭建、自动化工具的应用以及故障应急处理机制的制定。我们将结合具体案例,分析这些措施如何帮助提升系统的可靠性和运维团队的工作效率。
24 1
|
10天前
|
存储 运维 监控
高效运维管理:从基础架构优化到自动化实践
在当今数字化时代,高效运维管理已成为企业IT部门的重要任务。本文将探讨如何通过基础架构优化和自动化实践来提升运维效率,确保系统的稳定性和可靠性。我们将从服务器选型、存储优化、网络配置等方面入手,逐步引导读者了解运维管理的核心内容。同时,我们还将介绍自动化工具的使用,帮助运维人员提高工作效率,降低人为错误的发生。通过本文的学习,您将掌握高效运维管理的关键技巧,为企业的发展提供有力支持。
|
13天前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。