kubernetes软件包管理器Helm

为什么需要Helm

常规K8s部署应用方式:将需要的资源编写YAML文件,然后apply部署;

由于Kubernetes缺少对发布的应用版本管理和控制,使得部署的应
用维护和更新等面临诸多的挑战,主要面临以下问题:
•如何将这些服务作为一个整体管理?
•这些资源文件如何高效复用?
•不支持应用级别的版本管理

Helm介绍

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

Helm有3个重要概念:
• helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。
• Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
• Release:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象。

Helm目前有两个大版本:v2和v3
2019年11月Helm团队发布v3版本,相比v2版本最
大变化是将Tiller删除,并大部分代码重构。
在这里插入图片描述

Helm客户端

使用helm很简单,你只需要下载一个二进制客户端包即可,会通过kubeconfig配置(通常$HOME/.kube/config)来连接Kubernetes。

项目地址:https://github.com/helm/helm

下载Helm客户端:

wget https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz
[root@k8s-master1 ~]# tar zxf  helm-v3.6.0-linux-amd64.tar.gz  [root@k8s-master1 ~]# cd linux-amd64/
[root@k8s-master1 linux-amd64]# ls
helm  LICENSE  README.md
[root@k8s-master1 linux-amd64]# mv helm /usr/bin/
helm --help

在这里插入图片描述

Helm命令

在这里插入图片描述

Helm基本使用

Helm管理应用生命周期:
• helm create 创建Chart示例
• helm install 部署
• helm upgrade 更新
• helm rollback 回滚
• helm uninstall 卸载

Helm基本使用:创建Chart示例

创建chart:

helm create mychart

在这里插入图片描述

• charts:目录里存放这个chart依赖的所有子chart。
• Chart.yaml:用于描述这个 Chart的基本信息,包括名字、描述信息以及版本等。
• values.yaml :用于存储 templates 目录中模板文件中用到变量的值。
• Templates: 目录里面存放所有yaml模板文件。
• NOTES.txt :用于介绍Chart帮助信息, helm install 部署后展示给用户。例如:如何使用这个 Chart、列出缺省的设置等。
• _helpers.tpl:放置模板的地方,可以在整个 chart 中重复使用。

打包chart:

helm package mychart

在这里插入图片描述

简单理解:
在这里插入图片描述

自定义chart

[root@k8s-master1 ~]# mkdir -p mychart/templates 
[root@k8s-master1 mychart]# touch values.yaml  
[root@k8s-master1 mychart]# vim Chart.ymal 
apiVersion: v2
name: mychart
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.16.0"
[root@k8s-master1 mychart]# cd templates/ 
[root@k8s-master1 templates]# ls
[root@k8s-master1 templates]# touch NOTES.txt  _helpers.tpl
[root@k8s-master1 templates]# echo "这是一个测试chart" > NOTES.txt  
[root@k8s-master1 templates]# kubectl create deployment web --image=nginx --dry-run=client -o yaml > deployment.yaml 
[root@k8s-master1  templates]# kubectl apply -f deployment.yaml 
[root@k8s-master1 templates]# kubectl expose deployment web --port=80 --target-port=80 --type=NodePort --dry-run=client -o yaml > service.yaml 

在这里插入图片描述

Helm基本使用:部署

部署Chart:

helm install web /root/mychart #web为名字

在这里插入图片描述

查看Release:

helm list -n default

查看部署的Pod:

kubectl get pods,svc

在这里插入图片描述

动态引用变量

[root@k8s-master1 mychart]# cat values.yaml 
image:
  repository: nginx
  tag: "1.15"

[root@k8s-master1 templates]# cat deployment.yaml  
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: web
  name: {
   {
    .Release.Name }} #根据命令行输入的名字动态设置
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - image: {
   {
    .Values.image.repository }}:{
   {
    .Values.image.tag }}
        name: nginx
        resources: {
   }

[root@k8s-master1 templates]# cat server.yaml  
apiVersion: v1
kind: Service 
metadata:
  labels:
    app: web
  name: {
   {
    .Release.Name }}  
spec:
  ports: 
  - port: 80 
    protocol: TCP
    targetPort: 80 
  selector:
    app: web 

[root@k8s-master1 templates]# helm install web4  /root/mychart/  -n 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kubernetes HelmKubernetes 中最流行的包管理工具,它能够帮助开发者在 Kubernetes 集群中部署、升级和管理应用程序。使用 Helm 可以方便地管理 Kubernetes 资源的模板文件,并且可以将这些模板与配置值结合起来,生成可复用的软件包。本文将提供 Helm 的一些基本命令和示例操作。 一、安装 Helm 要安装 Helm,需要下面的几项: 1. 安装 Helm 客户端 ``` brew install helm # Mac choco install kubernetes-helm # Windows apt-get update && apt-get install -y helm # Ubuntu/Debian yum update && yum install -y helm # Centos/RedHat ``` 2. 创建并加入 Helm 仓库 Helm 软件仓库中存储了 Helm Charts,用户从仓库中获取 Charts 以及创建 Charts 进行分发。使用以下命令将官方仓库添加到 Helm。 ``` helm repo add stable https://kubernetes-charts.storage.googleapis.com/ ``` 二、Helm 常用命令 以下是 Helm 中的一些常用命令: 1. helm install 使用 helm install 安装一个 Chart。 ``` helm install [RELEASE NAME] [CHART] [FLAGS] ``` RELEASE NAME:定义一个 Chart 使用的名称。 CHART:定义要使用的 Chart 名称。 FLAGS:一些额外的自定义参数。 例如,安装 Redis 的 Chart。 ``` helm install redis stable/redis ``` 2. helm upgrade 使用 helm upgrade 命令来更新已部署的 Charts。 ``` helm upgrade [RELEASE NAME] [CHART] [FLAGS] ``` RELEASE NAME:定义一个 Chart 使用的名称。 CHART:定义要使用的 Chart 名称。 FLAGS:一些额外的自定义参数。 例如,更新已经安装的 Redis Chart。 ``` helm upgrade redis stable/redis ``` 3. helm list 使用 helm list 命令列出运行在 Kubernetes 集群中的 Charts。 ``` helm list ``` 4. helm delete 删除指定的 Chart。 ``` helm delete [RELEASE NAME] ``` RELEASE NAME:定义一个 Chart 使用的名称。 例如,删除 Redis Chart。 ``` helm delete redis ``` 三、Helm 示例 假设我们要使用 HelmKubernetes 集群中部署 WordPress 应用程序。 1. 安装 MySQL 首先需要安装 MySQL。使用 helm install 命令安装 MySQL。 ``` helm install my-mysql stable/mysql ``` 可以使用以下命令检查 my-mysql 是否安装成功。 ``` helm list ``` 2. 应用程序的 Chart 编写 WordPress 应用程序的 Chart,名称为 wordpress。 ``` apiVersion: v1 kind: Service metadata: name: wordpress spec: type: LoadBalancer ports: - name: http port: 80 targetPort: 80 selector: app: wordpress --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress spec: selector: matchLabels: app: wordpress replicas: 1 template: metadata: labels: app: wordpress spec: containers: - name: wordpress image: wordpress:4.9.4-php7.0-apache ports: - containerPort: 80 env: - name: WORDPRESS_DB_HOST value: my-mysql - name: WORDPRESS_DB_PASSWORD value: my-mysql-password - name: WORDPRESS_DB_USER value: root --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi ``` 3. 安装 WordPress 使用以下命令安装 WordPress。 ``` helm install my-wordpress ./wordpress \ --set service.type=LoadBalancer \ --set ingress.enabled=true \ --set ingress.hosts[0].name=my-wordpress.local \ --set ingress.hosts[0].path=/ \ --set persistence.enabled=true \ --set persistence.existingClaim=wp-pv-claim \ --set db.host=my-mysql \ --set db.user=root \ --set db.password=my-mysql-password \ --set db.name=wordpress ``` 这个命令在指定了一些参数之后使用 helm install 安装 WordPress。 4. 连接 连接到 my-wordpress.local 并访问 WordPress。 ``` kubectl get ingress ``` 可以使用以下命令查看 Ingress 的 IP 地址。 ``` kubectl get services -o wide -n ingress-nginx ``` 打开浏览器并输入 my-wordpress.local 的 IP 地址,可以查看 WordPress 页面。 以上就是 Helm 的一些基本操作和示例。虽然 Helm 看起来比较复杂,但是一旦熟悉了基本命令,其实用起来非常方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值