Kubernetes Helm
- 什么是 Helm
- Helm 组件
- Helm 部署
- 一、安装 Helm 3.2.4
- 二、常用 chart 源
- ①、初始化 chart 源仓库
- ②、查找想要安装的软件程序
- ③、安装一个 Helm 应用
- 例:安装一个 Nginx 应用
- ④、查看helm 生成应用、卸载应用
什么是 Helm
在没有使用 helm 之前,在 kubernetes 部署应用,需要依次部署 deployment、SVC 等步骤较为繁琐。
况且,随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm通过打包得方式,支持发布得版本管理和控制,很大程度上简化了 kubernetes 应用得部署以及管理。
Helm 本质就是让 K8S 得应用管理可方便配置,能动态生成。通过动态生成 K8S 资源清单文件。然后带哦用 kubectl 自动执行 K8S 资源部署
Helm 是官方提供的类似于 YUM 得包管理工具,是部署环境的流程封装。
Helm 有两个重要得概念:chart 和 release
- chart :是创建一个应用的信息集合,包括各种 kubernetes 对象得配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署得自包含逻辑单元。可以将 chart 想象成 apt\yum 中得软件安装包。
- release :是 chart 得运行实例,代表了一个正在运行得应用。当 chart 被安装到 kubernetes 集群,就会生成一个 release。chart 能够多次安装到同一个集群,但是只会有一个 release。
Helm 组件
helm 包含两个组件:helm客户端 和 Tiller 服务端,如下图所示
- Helm Client 负责 chart 和 release 得创建和管理, 通过 gRPC 得方式与 Tiller 进行交互。
- Tiller 服务端运行在 kubernetes 集群中,它会处理 Helm 得请求,并发送给 KubeAPI。
- KubeAPI 将数据、资源得生成写入到 etcd ,被 kubelet 接受并创建。
Helm 部署
一、安装 Helm 3.2.4
helm 由客户端 helm 命令行工具和服务端 tiller 组成, helm 的安装十分简单。下载 helm 命令行工具到 master 节点 node1的 /usr/local/bin 下。
1、源码安装
https://github.com/helm/helm/releases/tag/v3.2.4 下载地址
[root@K8s-master ~]# tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
[root@k8s-master src]# mv linux-amd64/helm /usr/local/bin
[root@k8s-master src]# helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}
2、脚本安装
[root@k8s-master ~]# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
[root@k8s-master ~]# chmod 700 get_helm.sh
[root@k8s-master ~]# ./get_helm.sh
输出阻断日志
二、常用 chart 源
①、初始化 chart 源仓库
准备好 helm 后,需要添加 helm 源数据仓库。有以下几个常见的源库
- https://kubernetes-charts.storage.googleapis.com/ helm官网 chart 库,稳定
- https://apphub.aliyuncs.com 阿里云chart 库,速度最快
添加 chart 库
helm repo add 自定义名称 chart库的地址
[root@k8s-master ~]# helm repo add stable https://kubernetes-charts.storage.googleapis.com
[root@k8s-master ~]# helm repo add aliyuncs https://apphub.aliyuncs.com
查看当前集群有哪些 chart 库
[root@k8s-master ~]# helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com/
aliyuncs https://apphub.aliyuncs.com
查看某个 chart 库当中有哪些可安装程序
helm search repo chart库名
[root@k8s-master ~]# helm search repo aliyuncs
NAME CHART VERSION APP VERSION DESCRIPTION
aliyuncs/admin-mongo 0.1.0 1 MongoDB管理工具(web gui)
aliyuncs/aerospike 0.3.2 v4.5.0.5 A Helm chart for Aerospike in Kubernetes
...
②、查找想要安装的软件程序
docker search repo 程序名
例:helm search repo nginx 查找 nginx 程序都有哪些版本的应用
[root@k8s-master ~]# helm search repo nginx
NAME CHART VERSION APP VERSION DESCRIPTION
aliyuncs/nginx 5.1.5 1.16.1 Chart for the nginx server
aliyuncs/nginx-ingress 1.30.3 0.28.0 An nginx Ingress controller that uses ConfigMap...
aliyuncs/nginx-ingress-controller 5.3.4 0.29.0 Chart for the nginx Ingress controller
aliyuncs/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
aliyuncs/nginx-php 1.0.0 nginx-1.10.3_php-7.0 Chart for the nginx php server
stable/nginx-ingress 1.40.1 0.32.0 An nginx Ingress controller that uses ConfigMap...
stable/nginx-ldapauth-proxy 0.1.4 1.13.5 nginx proxy with ldapauth
stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
stable/gcloud-endpoints 0.1.2 1 DEPRECATED Develop, deploy, protect and monitor...
③、安装一个 Helm 应用
要安装新软件包,请使用helm install
命令。
它包含两个参数:您选择的 发行版名称 要安装的 chart 的名称
例:安装一个 Nginx 应用
查看都有哪些软件可用:helm search repo nginx
安装aliyun 的nginx :helm install nginx nginx/aliyuncs
[root@k8s-master ~]# helm install nginx aliyuncs/nginx
NAME: nginx
LAST DEPLOYED: Thu Jun 25 17:29:46 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Get the NGINX URL:
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace default -w nginx'
export SERVICE_IP=$(kubectl get svc --namespace default nginx --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
echo "NGINX URL: http://$SERVICE_IP/"
查看访问的 SVC 映射端口:kubectl get svc --namespace default -w nginx
[root@k8s-master ~]# kubectl get svc --namespace default nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx LoadBalancer 10.99.153.167 <pending> 80:30367/TCP,443:32022/TCP 3m
访问该 nginx 的 web 页面:curl -I 192.168.168.11:30367
要跟踪发布的状态或重新读取配置信息,可以使用 helm status +应用名
[root@k8s-master ~]# helm status nginx
NAME: nginx
LAST DEPLOYED: Thu Jun 25 17:29:46 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Get the NGINX URL:
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace default -w nginx'
export SERVICE_IP=$(kubectl get svc --namespace default nginx --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
echo "NGINX URL: http://$SERVICE_IP/"
④、查看helm 生成应用、卸载应用
helm list
查看集群中有哪些 helm 应用
helm uninstall +应用名
卸载应用
“{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}”)
echo “NGINX URL: http://$SERVICE_IP/”
``