GitOps 实操手册 4:使用 Helm 定义应用

本实验手册系列涵盖了从应用容器化到GitOps工作流的实现,通过七个章节详细讲解如何构建、部署和管理应用,实现高效的持续交付流程。内容包括HelmChart的创建、参数化、部署以及在预发布和生产环境的应用。此外,还介绍了如何将HelmChart推送到GitHub仓库,实现远程安装和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容简介

本实验手册系列包含七个主题,涵盖了从应用容器化到 GitOps 工作流的实现与高级特性。通过这些实验手册,您将学习到如何构建、部署和管理应用,以及如何在 Kubernetes 集群上实现高效的持续交付流程。

以下是实验手册的七个章节:

  1. 应用程序容器化实验手册:学习如何将应用程序容器化,并为主流编程语言构建镜像。同时,了解如何缩减镜像体积和使用 GitHub Actions 自动构建镜像。
  2. 单节点 Kubernetes 集群部署实验手册:使用 kind 在本地部署单节点 Kubernetes 集群,安装基础服务,并熟悉 Kubernetes 的基本功能,如运行 Pod、调度工作负载、服务发布和自动扩缩容。
  3. 示例应用的部署和解析实验手册:深入了解示例应用的各个组件,学习如何在 Kubernetes 集群上部署、运行和管理这些组件,实现服务调用、应用配置和扩缩容等功能。
  4. 使用 Helm 定义应用实验手册:通过 Helm 对示例应用进行定义,以满足 GitOps 部署的需求。了解 Helm Chart 的创建和使用,以及预发布和生产环境的部署。
  5. 构建 GitOps 工作流实验手册:在 Kubernetes 集群上安装 ArgoCD,并使用 ArgoCD 定义示例应用进行部署,实现基于镜像版本变化触发的 GitOps 工作流。
  6. 实现 GitOps 高级发布策略实验手册:结合 ArgoCD 的高级特性,如 Argo Rollout、AnalysisTemplate 和 Argo Rollout Dashboard,实现蓝绿发布、金丝雀发布和自动渐进交付。
  7. ArgoCD 高级管理特性实验手册:探讨 ArgoCD 在 GitOps 场景中的高级特性,包括使用 ApplicationSet 实现多环境部署和使用 SealedSecret 保护密钥。

通过这七个实验手册,您将全面掌握应用容器化、Kubernetes 和 GitOps 的相关知识,为应用的持续交付提供可靠和高效的解决方案。

在之前的实验场景基础上,本实验手册将指导您使用 Helm 定义后续 GitOps 环境中所需的示例应用,以满足 GitOps 部署的要求。

本实验手册将涵盖以下主要实验环节:

  1. 改造示例应用:创建 Helm Chart 目录结构,编写 chart.yaml 文件,填充 templates 目录。
  2. 部署 Helm Chart:分别在预发布环境和生产环境中进行部署。
  3. 发布 Helm Chart:将 Helm Chart 推送至 GitHub 仓库。
  4. 常见的 Helm 应用管理操作:了解 Helm 的基本命令和操作,以便更有效地进行应用管理

改造示例应用

创建 Helm Chart 目录结构

cd kubernetes-example && mkdir helm
mkdir helm/templates && touch helm/Chart.yaml && touch helm/values.yaml
$ ls helm                 
Chart.yaml  templates   values.yaml

配置 Chart.yaml 内容

将下面的内容复制到 Chart.yaml 文件内。

apiVersion: v2
name: kubernetes-example
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "0.1.0"
  • <apiVersion> 字段设置为 v2,表示使用 Helm 3 来安装应用。
  • <name> 表示 Helm Chart 的名称,当使用 helm install 命令安装 Helm Chart 时,指定的名称也是此处配置的名称。
  • <description> 表示 Helm Chart 的描述信息,可根据需要填写。
  • <type> 表示类型,此处固定为 application,代表 Kubernetes 应用。
  • <version> 表示打包的 Helm Chart 的版本,当使用 helm install 时,可以指定此处定义的版本号。Helm Chart 的版本通过这个字段来管理,发布新的 Chart 时,需要更新此版本号。
  • <appVersion> 与 Helm Chart 无关,用于定义应用的版本号,建立当前 Helm Chart 和应用版本的关系。

填充 helm/templates

helm/templates 目录用于存放模板文件,这些模板文件可以是 Kubernetes Manifest。因此,现在可以尝试不使用 Helm Chart 的模板功能,而是直接将 deploy 目录下的 Kubernetes Manifest 复制到 helm/templates 目录下。

cp -r deploy/ helm/templates/
helm
├── Chart.yaml
├── templates
│   └── deploy
│       ├── backend.yaml
│       ├── database.yaml
│       ├── frontend.yaml
│       ├── hpa.yaml
│       └── ingress.yaml
└── values.yaml

其中,values.yaml 的文件内容为空。

到这里,一个最简单的 Helm Chart 就编写完成了。在这个 Helm Chart 中,templates 目录下的 Manifest 的内容是确定的,安装这个 Helm Chart 等同于使用 kubectl apply 命令,接下来尝试使用 helm install 命令来安装这个 Helm Chart。

helm install my-kubernetes-example ./helm --namespace example --create-namespace

在此命令中,指定应用的名称为 my-kubernetes-example,Helm Chart 目录为 ./helm 目录,并为应用指定命名空间为 example。需要注意的是,example 命名空间并不存在,因此同时使用 --create-namespace 选项来让 Helm 自动创建这个命名空间。

此外,这里还涉及一个非常重要的概念:Release Name。在安装时,需要指定 Release Name,即 my-kubernetes-example,它与 Helm Chart Name 存在本质区别。Release Name 是在安装时指定的,而 Helm Chart Name 在定义阶段就已经固定。

使用模板变量

然而,刚才改造的最简单的 Helm Chart 无法满足多环境配置差异化的需求。到目前为止,它只是一个纯静态应用。

为了将这个静态的 Helm Chart 改造成参数动态可控制的,需要使用模板变量和 values.yaml

还记得之前提到的 values.yaml 的概念吗?模板变量的值都会引自这个文件。在这个例子中,根据对不同环境配置差异化的要求,抽象了以下可配置项:

  • 镜像版本
  • HPA CPU 平均使用率
  • 是否启用集群内
  • 数据库连接地址、账号和密码

这些可配置项都需要从 values.yaml 文件中读取,因此,需要将以下内容复制到 helm/values.yaml 文件内。

frontend:
  image: chengzh/frontend
  tag: latest
  autoscaling:
    averageUtilization: 90

backend:
  image: chengzh/backend
  tag: latest
  autoscaling:
    averageUtilization: 90

database:
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值