阶段十一:容器编排技术之K8s的Helm3包管理

Helm

背景介绍

在 Kubernetes 环境中,部署和管理应用程序时,常常会面临一系列复杂的挑战。

Yaml 文件堆积如山

一个复杂的应用通常依赖多个 Kubernetes 资源对象,而每个对象都需要通过 YAML 文件来定义。比如

随着应用复杂度的增加,可能就会涉及上百个 YAML 文件。如何管理,成了一项艰巨的任务。

更新/回退容易漏改

当需要对应用进行更新时,往往需要同时修改多个 YAML 文件。稍有疏忽,漏改、乱序等问题时常发生。

同样,在应用出现问题需要回滚时,由于涉及众多 YAML 文件,要准确还原到之前的正确状态,难度极大。

Helm 的解决方案

Helm 作为 Kubernetes 的包管理器,正是为了解决上述这些问题而诞生的。

它允许将这些众多的 YAML 文件作为一个整体进行管理,这个整体被称为 Helm Chart。

更新应用时,只需在 Helm Chart 中对相关参数进行修改,Helm 就能自动、准确地更新。

概念介绍

官方地址: https://helm.sh/

image

Helm(舵柄; 舵轮) 是 Kubernetes 的包管理工具 ,类似 Linux 系统里的 yum、apt。

它能把打包好的 YAML 文件轻松部署到 Kubernetes 上。

Helm 所包含的组件有

1. Helm 客户端:提供命令行工具,用于在终端执行如helm install部署、helm upgrade升级等操作。 2. Chart:是 Helm 管理应用部署的基本单元,由一组描述 Kubernetes 资源的 YAML 文件组成。 3. Chart 仓库:类似软件应用商店,用于存储和分发 Chart,包括公共仓库(如 Artifact Hub)和私有仓库。 4. 模板引擎 Template:内置在 Helm 中,支持使用 Go 模板语法,能根据参数动态生成 K8s 资源文件。 5. 发布管理 Release:Helm 用 “发布(Release)” 管理 Chart 部署实例,每个发布有唯一名称,可记录版本、配置参数等信息。

安装部署

参考文档:https://helm.sh/zh/docs/intro/quickstart/

image

我们所部署的K8s集群版本是 1.30.11。查看对应的 Helm版本,是3.17

image

下载地址:https://github.com/kubernetes/helm/releases

如果下载不下来,在【02-软件】目录下,我们也提供了离线包。

# 下载版本
[root@master1 ~]# curl -LO https://get.helm.sh/helm-v3.17.0-linux-amd64.tar.gz

# 解压
[root@master1 ~]# tar xf helm-v3.17.0-linux-amd64.tar.gz

# 移动到可执行文件下
[root@master1 ~]# mv ./linux-amd64/helm /usr/local/bin/helm

# 验证版本
[root@master1 ~]# helm version
version.BuildInfo{Version:"v3.4.1", GitCommit:"c4e74854886b2efe3321e185578e6db9be0a6e29", GitTreeState:"clean", GoVersion:"go1.14.11"}

命令作用:

执行结果:

关键参数:

注意事项:


**注意事项:**

**注意事项:**

命令说明:

关键参数说明
-a显示全部对象,而非只显示默认范围。

修改values.yaml中的image.tag为"1.16-alpine",然后执行:


**注意事项:**


注意事项:


**注意事项:**

注意事项:


**注意事项:**



注意事项:


**注意事项:**

注意事项:


**注意事项:**

注意事项:


**注意事项:**

注意事项:


**注意事项:**

注意事项:


**注意事项:**

注意事项:


**注意事项:**

expose:
  tls:
    secret:
  ingress:
    hosts:
    annotations:
  clusterIP:
    ports:
  nodePort:
    ports:
      http:
      https:
  loadBalancer:
    ports:

persistence:
  persistentVolumeClaim:
    registry:
    chartmuseum:
    jobservice:
      jobLog:
    database:
    redis:
    trivy:
  imageChartStorage:
    filesystem:


internalTLS:

ipFamily:
  ipv6:
  ipv4:


updateStrategy:


proxy:
  httpProxy:
  httpsProxy:
  components:


metrics:

trace:

cache:

containerSecurityContext:
  seccompProfile:
  capabilities:
    drop:

nginx:
  image:

portal:
  image:

core:
  image:

jobservice:
  image:

registry:
  registry:
    image:
  controller:
    image:

trivy:
  image:

database:
  internal:
    image:

redis:
  internal:
    image:

exporter:
  image:

注意事项:

#部署

#升级

#卸载


**注意事项:**




注意事项:


**注意事项:**

注意事项:

本文由飞书云文档同步生成。涉及命令、SQL、配置示例时,请以飞书源文档和实际环境执行结果为准。