上一节讲解了[Kubernetes]6. k8s Pod配置管理ConfigMap & Secret以及传递环境变量的使用,k8s的命名空间以及使用kubens管理命名空间的使用,这里来介绍一下Helm的使用
在 kubernetes 系统上部署容器化应用时需要事 先手动编写资源配置清单文件 以 定义资源对象 ,而且其 每一次的配置定义基本上都是硬编码 ,基本上 无法实现复用 .对于 较大规模的应用场景 ,应用程序的 配置,分发,版本控制,查找,回滚 甚至是查看都将是用户的噩梦,而Helm可大大简化应用管理的难度, Helm 类似 npm,pip,docker hub , 可以理解为是一个软件库, 它是Kubernetes的包管理器, 可以方便快速的为我们的集群安装一些第三方软件。
比如要部署mongodb,部署的时候 首先要创建 PVC,PV以及StorageClass,创建好后还要定义mongodb对应的 StatefulSet,StatefulSet定义好后,还需要在配置里面 关联刚才的PVC,PV,关联好后,还需要 部署mongodb,这还只是搭建mongodb数据库,如果要搭建mongodb集群的话,还更加麻烦,如果 使用Helm就 可以非常方便的就搭建出来 MongoDB / MySQL 副本集群 ,只需几个命令就可以 创建mongodb数据库 ,或者 mongodb主从数据库的集群, YAML 文件别人都已经写好了,可以直接使用, 官网接下来看看如何在k8s集群中使用Helm,下面 官网 可以查看如何安装Helm,而 应用中心 可以搜索需要的软件(包)
安装 文档
Helm现在有个安装脚本可以自动拉取最新的Helm版本并在 本地安装,可以获取这个脚本并在本地执行,命令如下:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
如果想直接执行安装,运行
curl
https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
https://github.com/helm/helm/releases
https://get.helm.sh/helm-v3.11.1-linux-amd64.tar.gz
tar xzvf helm-v3.11.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/
具体如下:
当使用helm时,如果出现示:kubernetes configuration file is group-readabl
WARNING: Kubernetes configuration file is group-readable. This is insecure.
Location: /root/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure.
Location: /root/.kube/config
则使用下面命令解决,这样就可以正常使用helm了
chmod -R 600 ~/.kube/config
下面就来看看搭建mongodb集群
无本地存储:当重启的时候,数据库消失
#添加repo仓库
#bitnami 是自定义的
helm repo add bitnami https://charts.bitnami.com/bitnami
#安装:bitnami和上面保存一致
#mongo:是自定义的
#--set 可以跟参数
#persistence.enabled 配置应用的持久化
helm install my-mongo bitnami/mongodb --set persistence.enabled=false,auth.rootPassword="mongopass"
具体命令如下:
# 安装
helm repo add bitnami https://charts.bitnami.com/bitnami
#--set 后可设置相关属性,比如用户名,密码等,这个可以查看helm mongodb的帮助文档
helm install my-mongo bitnami/mongodb --set persistence.enabled=false,auth.rootPassword="mongopass"