k8s Helm

Helm工具介绍

  1. 了解Helm
    Helm是kubernetes中查找、分享、构建应用的最佳方式。
    Helm是一个Kubernetes应用的包管理工具,用来管理chart(一种预先配置好的安装包资源),有点类似于Ubuntu 的APT和CentOS/Rocky中的YUM。因此,helm的出现解决了k8s应用管理能力缺失的问题。
    另外Helm也是dev和ops的桥梁,运维人员在使用Helm的时候,一方面不需要理解大量在Chart中的各种k8s元素,只需要配置少量的环境变量即可安装;另一方面,Helm也给初级运维人员提供了学习的机会,他们可以在Chart中学习并理解各种K8s元素,从而能够更快的掌握K8s。

官网地址:https://helm.sh/
github地址: https://github.com/helm/helm/releases

  1. Helm核心概念
  • Chart:Chart就是helm package,包含了一个k8s app应用运行起来的所有要素,比如service, deployment, configmap, serviceaccount, rbac, 等,这些要素都是以template文件的形式存在,再结合values文件,最终渲染出能够被k8s执行的yaml文件。
  • Repository:仓库是charts的集合,方便进行分享和分发。我们可以将这个仓库添加到本地,然后从这些仓库里查找chart,并使用。
  • Hub: 不同的个人和组织提供的公共仓库(Repository)形成了分散和分布的Helm仓库,不利于查找,所以官方提供了Helm Hub,各公共仓库可以注册到Helm Hub中以方便集中查找,Helm Hub只是分布的仓库的集中展示中心。仓库注册到Helm Hub时,会将Chart清单文件向Helm Hub同步一份,这样可以在Helm Hub集中展示仓库列表和各仓库中的Chart列表。Chart包也就是tgz文件实际上存储在各仓库中。Helm Hub并不实际存储Chart包。Helm只是在查询Chart时和Helm Hub有交互,其它操作都是和仓库直接交互的。
  • Release:Release是Helm Chart在kubernetes的一个运行实例,这个release名字会体现在K8s里,其中service和deploy的名字跟这个release名字一致。
  1. Helm版本和Kubernetes版本要求
    ![[Pasted image 20240907173202.png]]
    参考:https://helm.sh/zh/docs/topics/version_skew/

Helm工具用法

1)安装Helm
说明:我用的Kubernetes版本为1.25.4,考虑到后期会升级Kubernetes版本,所以helm版本为3.11
获取集群版本号:kubectl get node

下载二进制包

wget https://get.helm.sh/helm-v3.11.3-linux-amd64.tar.gz

解压并做软链

tar zxf helm-v3.11.3-linux-amd64.tar.gz -C /opt/
mv /opt/linux-amd64/ /opt/helm
ln -s /opt/helm/helm /bin/

2)Helm常用命令
添加仓库,这样会把该仓库添加到本地

helm repo add bitnami https://charts.bitnami.com/bitnami  
helm repo add helm_sh https://charts.helm.sh/stable
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

更新仓库列表到本地

helm repo update

查看仓库列表

helm repo list

在本地添加的仓库里搜索所有chart

helm search repo

在本地的仓库里搜索mysql

helm search repo mysql

还可以从公共的hub里搜索chart,目的是找到合适的repo

helm search hub mysql
helm search hub mysql --list-repo-url ##查看对应repo的url
helm search hub mysql --max-col-width 100 #可以设置每一列的宽度,这样可以显示所有的描述信息

查看某个chart详细信息

helm show chart bitnami/mysql

查看某个chart values(这个values相当于是该cahrt的配置文件)

helm show values helm_sh/redis

安装chart (示例,安装nginx)

helm search repo nginx ##先搜一下
helm install nginx-test  bitnami/nginx   #这个nginx-test就是release名字,同时也是service和deployment/statefulset以及pod前缀,当然你也可以不去定义release name,让Helm帮忙定义,那么命令就要改为
helm install   bitnami/nginx --generate-name

install过程中会自动生成缓存目录: ~/.cache/helm/repository/

安装完后,查看用helm安装过的chart

helm list -A #-A会列出所有namespace里的release,不加-A只列default namespace里的release

卸载

helm uninstall nginx-test

下载一个chart包

helm pull bitnami/mysql #会下载一个tgz的压缩包

利用本地的chart包,直接安装

tar zxf mysql-9.4.4.tgz
cd  mysql
helm install test-mysql .

Helm工具实践

1)安装redis-cluster
先搭建一个NFS的SC(只需要SC,不需要pvc),具体步骤此文档不再提供,请参考前面相关章节。
下载redis-cluster的chart包

helm pull bitnami/redis-cluster --untar #会下载一个目录下来

修改values.yaml

cd redis-cluster
vi values.yaml # 定义sc和密码
  storageClass: "nfs-client"
  redis:
    password: "http://rocky_k8s.com/"

安装

helm install redis-cluster . ##注意,这是在chart的目录里,该目录下有values.yaml,后面的. 表示使用当前目录下的values.yaml

查看状态

helm status redis-cluster
kubectl get po
kubectl get statefulset
kubectl get pvc

测试

To get your password run:
    export REDIS_PASSWORD=$(kubectl get secret --namespace "default" redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d)

You have deployed a Redis® Cluster accessible only from within you Kubernetes Cluster.INFO: The Job to create the cluster will be created.To connect to your Redis® cluster:

1. Run a Redis® pod that you can use as a client:
kubectl run --namespace default redis-cluster-client --rm --tty -i --restart='Never' \
--env REDIS_PASSWORD=$REDIS_PASSWORD \
--image docker.io/bitnami/redis-cluster:7.0.5-debian-11-r19 -- bash

2. Connect using the Redis® CLI:

redis-cli -c -h redis-cluster -a $REDIS_PASSWORD

2)应用的升级和回滚
安装好的应用,如果再次修改values.yaml(比如修改密码为http://rocky_k8s.com1/),则需要做升级处理

helm upgrade redis-cluster . ##注意,这是在chart的目录里,该目录下有values.yaml

查看升级历史

helm history redis-cluster

回滚

helm rollback redis-cluster 1
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值