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

本文涉及的产品
资源编排,不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: SREWorks云原生数智运维工程实践-


作者:凌可彭兰舒)、雪尧郭耀星

 

这是我们的《Kubernetes资源编排系列》的第二篇——Helm篇,在上篇《Kubernetes资源编排系列之一Pod YAML篇》中,我们见识到了Pod YAML的强大能力,在k8s的集群中,所见之处皆是YAML。YAML多了之后,大家就希望有一种方案能将海量的YAML管理起来。于是本篇我们来介绍一下Helm。

 

一、 Helm是什么?

 

Helm是Kubernetes生态系统中的一个软件包管理工具,类似于类似于Ubuntu中的apt、CentOS中的yum等。它可以被用于自动创建、打包、配置和部署应用程序和服务到Kubernetes集群。

 

Kubernetes为用户提供了自动部署、扩展和管理容器化应用程序的能力,然而用户部署在Kubernetes集群上的应用可能会非常复杂,一个典型的应用(以SREWorks为例)通常会有一系列对象进行内部交互来使得程序正常运转。

 

首先我们需要Deployment用于部署我们想要运行的pods,例如Mysql数据库;StorageClass用于动态分配存储卷;Persistent Volume(PV)用于储存数据库;Service用于指定pod的访问策略使得外部可以访问pod的服务;Job用于执行任务保证指定数量的pods部署成功……

 

image.png 

 

在Helm出现之前,每个对象都需要一个单独的yaml文件来配置,然后通过kubeclt apply逐一创建这些对象。如果需要对其中的一些内容进行更改,必须找到对应的yaml文件并在其中找到对应的属性;而如果想要升级其中的一些组件,也要仔细地编辑多个文件,防止错误和遗漏;当要删除这个应用程序时,也要手动删除其对应的所有组件……

 

Kubernetes并不是从“应用程序”的层面来管理集群中的各个组件,它只是将用户提交上去的yaml保存在集群中并各自运行,实际上它并不知道用户声明的各个对象,例如Job、Service、StorageClass、Deployment等,是同一个应用程序下不同的组成成分。

 

当应用较为复杂的时候,要记住变量的位置并人工执行操作是一件冗余且复杂的事,并且会给多人协作开发应用增加难度。

 

在这样的基础上,Helm应运而生,为开发人员提供了模块化的应用管理工具,降低了Kubernetes用户的工作量和工作复杂度。

 

二、 Helm是怎么做的

 

Helm将上述对象都看作一个程序包内的部分,当我们想要对程序执行操作的时候,不需要告诉helm我们要对哪个对象进行变更,只用传入程序名称,Helm会帮助我们对程序下的每个对象执行相应的操作。

 

这个包含了一组yaml文件的程序包,就叫做Helm Chart。Chart是一个描述Kubernetes相关资源的文件集合,它的格式如下:

 

 

└── sreworks-chart/

      ├── Chart.yaml    # 文件包含了对该chart的描述

      ├── values.yaml   # 文件包含了导入模版中的chart的默认值,会在用户执行helm install或helm upgrade时被覆盖

      ├── charts/       # 目录包含依赖的其他chart

      ├── templates/    # 目录包括了模板文件

      └── ...

 

 

开发时通常不会将name硬编码在资源中,用户可以通过插入发布名称来生成name字段。

 

所以我们的job.yaml就变为了:

 

 

apiVersion: v1

kind: Job

metadata:

  name: {{ .Release.Name }}-init-job

 

 

模板命令{{.Release.Name}}将发布名称注入了模板。值作为一个命名空间对象传给了模板,用点(.)分隔每个命名空间的元素。

 

在执行helm install命令时,模版渲染引擎会将括在{{和}}之间的模版命令替换为values.yaml中定义的值或用户通过--set设置的值,并将渲染后的文件发送到templates/目录中,然后收集结果并发送给Kubernetes。

 

可以通过helm命令对chart执行相应的操作:

 

 

// 安装

$ helm install sreworks . -n sreworks

 

// 升级

$ helm upgrade sreworks . -n sreworks

 

// 回滚

$ helm rollback sreworks -n sreworks

 

// 卸载

$ helm uninstall sreworks -n sreworks

 

 

还能用Helm创建自己的charts,也可以从Helm仓库中下载。

 

社区的Helm Chart仓库位于Artifact Hub,可以下载其他人上传的chart到本地使用,也可以将自己制作的chart上传到仓库中。同时Helm也支持创建并运行私有仓库,供个人和组织内部使用。

 



相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
11天前
|
Kubernetes Cloud Native 开发者
云原生入门:从Docker到Kubernetes的旅程
【9月更文挑战第16天】 本文将带你进入云原生的世界,从理解Docker容器的基础开始,逐步深入到Kubernetes集群管理。我们将通过简单的代码示例和实际操作,探索这两个关键技术如何协同工作,以实现更高效、灵活的应用程序部署和管理。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供清晰的指导和实用的知识。
46 11
|
3天前
|
Kubernetes 负载均衡 Cloud Native
探索云原生技术:Kubernetes的魔法
【9月更文挑战第24天】 在数字化浪潮中,云原生技术如同现代航海的罗盘,指引着企业航向灵活、高效的未来。本文将深入剖析云原生世界的璀璨明星——Kubernetes,揭秘其如何在容器化的基础上,实现复杂应用的自动化部署、扩展和管理。从概念到实践,我们将一同领略Kubernetes如何简化运维、提高资源利用率,并推动微服务架构的发展。通过实际的代码示例,我们将手把手教你如何在云上构建和运行第一个Kubernetes集群,让理论与实践相结合,开启云原生之旅。
|
10天前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第49天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
10天前
|
Kubernetes 负载均衡 监控
深入云原生技术:Kubernetes集群部署与管理
【9月更文挑战第17天】在数字化转型的浪潮中,云原生技术以其灵活性和可扩展性成为企业新宠。本文将引导读者探索云原生的核心组件——Kubernetes,通过实际案例分析其部署与管理流程,旨在帮助技术从业者和企业决策者理解如何利用Kubernetes提升应用的可用性和性能。从基础概念到操作实践,我们将一同见证云原生技术的变革力量。
|
21天前
|
Kubernetes 监控 Cloud Native
云原生入门:Kubernetes 集群部署与管理
【8月更文挑战第38天】在数字化浪潮中,云原生技术如同翱翔的雄鹰,引领着企业飞向灵活高效的未来。本文将带你一探究竟,从Kubernetes的基础概念到实际操作,深入浅出地介绍如何在云端构建和管理你的容器化应用。我们将一步步搭建起一个小型的Kubernetes集群,并通过代码示例和图解,让你轻松掌握云原生世界的钥匙。让我们一起开启这趟技术之旅,探索云原生的秘密花园,找到那把打开创新之门的金钥匙。
|
25天前
|
弹性计算 Kubernetes Cloud Native
云原生时代的航标:Kubernetes的灯塔作用
在数字化浪潮中,云原生技术如同海上的灯塔,指引着企业航行。本文将深入探讨Kubernetes如何成为云原生技术的领航者,揭示其在容器编排、自动化部署等方面的优势,并分享实践案例,为读者提供实用的操作建议和未来趋势的展望。
|
9天前
|
Kubernetes Cloud Native Java
探索未来编程新纪元:Quarkus带你秒建高性能Kubernetes原生Java应用,云原生时代的技术狂欢!
Quarkus 是专为 Kubernetes 设计的全栈云原生 Java 框架,凭借其轻量级、快速启动及高效执行特性,在 Java 社区脱颖而出。通过编译时优化与原生镜像支持,Quarkus 提升了应用性能,同时保持了 Java 的熟悉度与灵活性。本文将指导你从创建项目、编写 REST 控制器到构建与部署 Kubernetes 原生镜像的全过程,让你快速上手 Quarkus,体验高效开发与部署的乐趣。
13 0
|
存储 运维 Kubernetes
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(4)
阿里云数字新基建系列包括5本书,题材涉及Kubernetes、混合云架构、云数据库、CDN原理与流媒体技术、云服务器运维(Windows),囊括了领先的云技术知识与阿里云技术团队独到的实践经验,是国内IT技术图书中又一套重磅作品! 本书是阿里云容器服务产品线上实践的技术沉淀,主要包括理论篇和实践篇两部分内容。理论篇注重理论介绍,核心是Kubernetes on Cloud,即着重介绍Kubernetes和阿里云产品的结合。实践篇是疑难问题的诊断案例,希望通过案例来和读者分享Kubernetes深度问题诊断......
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(4)
|
运维 Kubernetes Cloud Native
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(3)
阿里云数字新基建系列包括5本书,题材涉及Kubernetes、混合云架构、云数据库、CDN原理与流媒体技术、云服务器运维(Windows),囊括了领先的云技术知识与阿里云技术团队独到的实践经验,是国内IT技术图书中又一套重磅作品! 本书是阿里云容器服务产品线上实践的技术沉淀,主要包括理论篇和实践篇两部分内容。理论篇注重理论介绍,核心是Kubernetes on Cloud,即着重介绍Kubernetes和阿里云产品的结合。实践篇是疑难问题的诊断案例,希望通过案例来和读者分享Kubernetes深度问题诊断......
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(3)
|
存储 弹性计算 Kubernetes
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(2)
阿里云数字新基建系列包括5本书,题材涉及Kubernetes、混合云架构、云数据库、CDN原理与流媒体技术、云服务器运维(Windows),囊括了领先的云技术知识与阿里云技术团队独到的实践经验,是国内IT技术图书中又一套重磅作品! 本书是阿里云容器服务产品线上实践的技术沉淀,主要包括理论篇和实践篇两部分内容。理论篇注重理论介绍,核心是Kubernetes on Cloud,即着重介绍Kubernetes和阿里云产品的结合。实践篇是疑难问题的诊断案例,希望通过案例来和读者分享Kubernetes深度问题诊断......
阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(2)

热门文章

最新文章