searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

学习应用商城 Helm

2024-10-15 09:46:04
3
0

第一章:Helm 简介

 

1.1 为什么需要 Helm ?

  • Kubernetes 上的应用对象,都是由特定的资源描述组成,包括 Deployment、Service 等,都保存在各自的文件中或者集中写在一个配置文件,然后通过 kubectl apply -f 部署。
  • 如果应用只由一个或几个这样的服务组成,上面的部署方式就足够了。
  • 但是对于一个复杂的应用,会有很多类似上面的资源描述文件,如:微服务架构应用,组成应用的服务可能多达几十、上百个,如果有更新或回滚应用的需求,可能要修改和维护所涉及到大量的资源文件,而这种组织和管理应用的方式就显得力不从心了。并且由于缺少对发布过的应用进行版本管理和控制,使得 Kubernetes 上的应用维护和更新面临诸多的挑战,主要面临以下的问题:
    • ① 如何将这些服务作为一个整体管理?
    • ② 这些资源文件如何高效复用?
    • ③ 应用级别的版本如何管理?

 

1.2 Helm 介绍

  • Helm 是 Kubernetes 的包管理工具,就像 Linux 下的包管理器,如:yum、apt 等,可以很方便的将之前打包好的 yaml 文件部署到 Kubernetes 上。

1.3 Helm 的三大概念

  • Chart 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等价物。
  • Repository(仓库) 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。
  • Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release 。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该 chart 两次。每一个数据库都会拥有它自己的 release 和 release name 。

  • Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。
  • 可以类比 Docker 来理解,Chart 就类似于 Docker 中的镜像(Docker 中的镜像就是一系列文件的集合,Chart 也是一系列文件的集合),Repository(仓库)就类似于 Docker Hub,Release 就类似于 Docker 中的容器(可以根据镜像 run 多个容器)。

 

第二章:Helm 安装

2.1 Helm 安装的提前准备

  • 想成功和正确地使用 Helm ,需要以下前置条件:
    • ① 一个 Kubernetes 集群。
    • ② 确定你安装版本的安全配置。
    • ③ 安装和配置 Helm 。
  • 安装或者使用现有的 Kubernetes 集群:
    • 使用 Helm ,需要一个 Kubernetes 集群。对于 Helm 的最新版本,我们建议使用 Kubernetes 的最新稳定版, 在大多数情况下,它是 倒数第二个次版本
    • 应该有一个本地的 kubectl

 

2.2 Helm 安装

  • 下载 helm :
wget https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz
  • 解压 Helm :
tar -zxvf helm-v3.6.3-linux-amd64.tar.gz
  • 移动到指定目录:
mv linux-amd64/helm /usr/local/bin/helm
  • helm 命令补全:
helm completion bash | sudo tee /etc/bash_completion.d/helm > /dev/null
source /usr/share/bash-completion/bash_completion

 

2.3 Helm 常用命令

 

 

2.4 Helm 的 chart 仓库

  • 微软仓库:http://mirror.azure.cn/kubernetes/charts,推荐。
  • 阿里云仓库:https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts。

2.4.1 添加 chart 仓库

helm repo add 仓库名 仓库URL地址

 

 

第三章:Helm 的基本使用

3.1 使用 chart 部署一个应用

3.1.1 查找 chart

# 在Artifact Hub https://artifacthub.io/ 或自己的hub实例中搜索chart
helm search hub xxx

# 在本地 helm 客户端中的仓库中搜索chart
helm search repo xxx

helm search repo mysql

 

3.1.2 查看 chart 信息

 

# 检查chart(目录、文件或URL)并显示所有的内容(values.yaml, Chart.yaml, README)
helm show all [CHART]

# 检查chart(目录、文件或URL)并显示Chart.yaml文件的内容
helm show chart [CHART]

# 检查chart(目录、文件或URL)并显示values.yaml文件的内容
helm show values [CHART]


# 检查chart(目录、文件或URL)并显示README文件内容
helm show readme [CHART] [flags]

 

3.1.3 安装 chart ,形成 release

helm install [NAME] [CHART]

注意:
● 每执行一次 install 命令,就会形成一个 release 。
● mysql 是有状态的应用,如果要想执行成功,必须设置持久化存储,并设置默认的动态供应。

 

 

3.1.4 查看 release 列表

helm list

状态可能是  unknown, deployed, uninstalled, superseded, failed, uninstalling, pending-install, pending-upgrade 或 pending-rollback 。

 

 

3.1.5 查看 release  状态

helm status RELEASE_NAME
状态包括:
● 最后部署时间
● 发布版本所在的k8s命名空间
● 发布状态(可以是: unknown, deployed, uninstalled, superseded, failed, uninstalling, pending-install, pending-upgrade 或 pending-rollback)
● 发布版本修订
● 发布版本描述(可以是完成信息或错误信息,需要用--show-desc启用)
● 列举版本包含的资源,按类型排序
● 最后一次测试套件运行的详细信息(如果使用)
● chart提供的额外的注释

 

3.2 安装前自定义chart配置选项

3.2.1 概述

  • 自定义选项是因为并不是所有的 chart 都能按照默认配置运行成功,可能会需要一些环境依赖,例如 PV 。
  • 所以我们需要自定义 chart 配置选项,安装过程中有两种方法可以传递配置数据:
    • --values(或-f):指定带有覆盖的 YAML 文件。这里可以多次指定,最右边的文件优先。
    • --set:在命令行上指定替代。如果两种都用,那么--set的优先级高。

 

3.3 构建一个 Chart

3.3.1 Chart 的文件结构

  • chart 是一个组织在文件目录中的集合。目录名称就是 chart 名称(没有版本信息),因此描述 wordpress 的 chart 可以存储在  wordpress/ 目录中。
wordpress/
├── charts # 包含chart依赖的其他chart
├── Chart.yaml # 用于描述这个 Chart 的基本信息,包括名字、描述信息以及版本等。
├── templates # 模板目录, 当和 values 结合时,可生成有效的Kubernetes manifest文件
│   ├── deployment.yaml
│   ├── _helpers.tpl # 放置可以通过 chart 复用的模板辅助对象
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt # 用于介绍 Chart 帮助信息, helm install 部署后展示给用户。例如:如何使用这个 Chart、列出缺省的设置等。
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml # chart 默认的配置值

 

3.3.2 安装自定义 chart

helm install [NAME] [CHART]

 

3.3.3 对自定义 chart 进行打包

helm package [CHART_PATH]

 

3.3.4 升级

helm upgrade --set xxx=xxx [RELEASE] [CHART]

 

3.3.5 回滚

helm rollback <RELEASE> [REVISION]

3.3.5 卸载

helm uninstall RELEASE_NAME

 

0条评论
作者已关闭评论
m****m
5文章数
0粉丝数
m****m
5 文章 | 0 粉丝
m****m
5文章数
0粉丝数
m****m
5 文章 | 0 粉丝
原创

学习应用商城 Helm

2024-10-15 09:46:04
3
0

第一章:Helm 简介

 

1.1 为什么需要 Helm ?

  • Kubernetes 上的应用对象,都是由特定的资源描述组成,包括 Deployment、Service 等,都保存在各自的文件中或者集中写在一个配置文件,然后通过 kubectl apply -f 部署。
  • 如果应用只由一个或几个这样的服务组成,上面的部署方式就足够了。
  • 但是对于一个复杂的应用,会有很多类似上面的资源描述文件,如:微服务架构应用,组成应用的服务可能多达几十、上百个,如果有更新或回滚应用的需求,可能要修改和维护所涉及到大量的资源文件,而这种组织和管理应用的方式就显得力不从心了。并且由于缺少对发布过的应用进行版本管理和控制,使得 Kubernetes 上的应用维护和更新面临诸多的挑战,主要面临以下的问题:
    • ① 如何将这些服务作为一个整体管理?
    • ② 这些资源文件如何高效复用?
    • ③ 应用级别的版本如何管理?

 

1.2 Helm 介绍

  • Helm 是 Kubernetes 的包管理工具,就像 Linux 下的包管理器,如:yum、apt 等,可以很方便的将之前打包好的 yaml 文件部署到 Kubernetes 上。

1.3 Helm 的三大概念

  • Chart 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等价物。
  • Repository(仓库) 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。
  • Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release 。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该 chart 两次。每一个数据库都会拥有它自己的 release 和 release name 。

  • Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。
  • 可以类比 Docker 来理解,Chart 就类似于 Docker 中的镜像(Docker 中的镜像就是一系列文件的集合,Chart 也是一系列文件的集合),Repository(仓库)就类似于 Docker Hub,Release 就类似于 Docker 中的容器(可以根据镜像 run 多个容器)。

 

第二章:Helm 安装

2.1 Helm 安装的提前准备

  • 想成功和正确地使用 Helm ,需要以下前置条件:
    • ① 一个 Kubernetes 集群。
    • ② 确定你安装版本的安全配置。
    • ③ 安装和配置 Helm 。
  • 安装或者使用现有的 Kubernetes 集群:
    • 使用 Helm ,需要一个 Kubernetes 集群。对于 Helm 的最新版本,我们建议使用 Kubernetes 的最新稳定版, 在大多数情况下,它是 倒数第二个次版本
    • 应该有一个本地的 kubectl

 

2.2 Helm 安装

  • 下载 helm :
wget https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz
  • 解压 Helm :
tar -zxvf helm-v3.6.3-linux-amd64.tar.gz
  • 移动到指定目录:
mv linux-amd64/helm /usr/local/bin/helm
  • helm 命令补全:
helm completion bash | sudo tee /etc/bash_completion.d/helm > /dev/null
source /usr/share/bash-completion/bash_completion

 

2.3 Helm 常用命令

 

 

2.4 Helm 的 chart 仓库

  • 微软仓库:http://mirror.azure.cn/kubernetes/charts,推荐。
  • 阿里云仓库:https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts。

2.4.1 添加 chart 仓库

helm repo add 仓库名 仓库URL地址

 

 

第三章:Helm 的基本使用

3.1 使用 chart 部署一个应用

3.1.1 查找 chart

# 在Artifact Hub https://artifacthub.io/ 或自己的hub实例中搜索chart
helm search hub xxx

# 在本地 helm 客户端中的仓库中搜索chart
helm search repo xxx

helm search repo mysql

 

3.1.2 查看 chart 信息

 

# 检查chart(目录、文件或URL)并显示所有的内容(values.yaml, Chart.yaml, README)
helm show all [CHART]

# 检查chart(目录、文件或URL)并显示Chart.yaml文件的内容
helm show chart [CHART]

# 检查chart(目录、文件或URL)并显示values.yaml文件的内容
helm show values [CHART]


# 检查chart(目录、文件或URL)并显示README文件内容
helm show readme [CHART] [flags]

 

3.1.3 安装 chart ,形成 release

helm install [NAME] [CHART]

注意:
● 每执行一次 install 命令,就会形成一个 release 。
● mysql 是有状态的应用,如果要想执行成功,必须设置持久化存储,并设置默认的动态供应。

 

 

3.1.4 查看 release 列表

helm list

状态可能是  unknown, deployed, uninstalled, superseded, failed, uninstalling, pending-install, pending-upgrade 或 pending-rollback 。

 

 

3.1.5 查看 release  状态

helm status RELEASE_NAME
状态包括:
● 最后部署时间
● 发布版本所在的k8s命名空间
● 发布状态(可以是: unknown, deployed, uninstalled, superseded, failed, uninstalling, pending-install, pending-upgrade 或 pending-rollback)
● 发布版本修订
● 发布版本描述(可以是完成信息或错误信息,需要用--show-desc启用)
● 列举版本包含的资源,按类型排序
● 最后一次测试套件运行的详细信息(如果使用)
● chart提供的额外的注释

 

3.2 安装前自定义chart配置选项

3.2.1 概述

  • 自定义选项是因为并不是所有的 chart 都能按照默认配置运行成功,可能会需要一些环境依赖,例如 PV 。
  • 所以我们需要自定义 chart 配置选项,安装过程中有两种方法可以传递配置数据:
    • --values(或-f):指定带有覆盖的 YAML 文件。这里可以多次指定,最右边的文件优先。
    • --set:在命令行上指定替代。如果两种都用,那么--set的优先级高。

 

3.3 构建一个 Chart

3.3.1 Chart 的文件结构

  • chart 是一个组织在文件目录中的集合。目录名称就是 chart 名称(没有版本信息),因此描述 wordpress 的 chart 可以存储在  wordpress/ 目录中。
wordpress/
├── charts # 包含chart依赖的其他chart
├── Chart.yaml # 用于描述这个 Chart 的基本信息,包括名字、描述信息以及版本等。
├── templates # 模板目录, 当和 values 结合时,可生成有效的Kubernetes manifest文件
│   ├── deployment.yaml
│   ├── _helpers.tpl # 放置可以通过 chart 复用的模板辅助对象
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt # 用于介绍 Chart 帮助信息, helm install 部署后展示给用户。例如:如何使用这个 Chart、列出缺省的设置等。
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml # chart 默认的配置值

 

3.3.2 安装自定义 chart

helm install [NAME] [CHART]

 

3.3.3 对自定义 chart 进行打包

helm package [CHART_PATH]

 

3.3.4 升级

helm upgrade --set xxx=xxx [RELEASE] [CHART]

 

3.3.5 回滚

helm rollback <RELEASE> [REVISION]

3.3.5 卸载

helm uninstall RELEASE_NAME

 

文章来自个人专栏
大数据ClickHouse
5 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0