Kubernetes Helm

截止至2019-07-22可用:

helm repo add ali-incubator     https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/  
helm repo add ali-stable    https://kubernetes.oss-cn-hangzhou.aliyuncs.com/ch

什么是 Helm

在没有使用 helm 之前,在 kubernetes 部署应用,需要依次部署 deployment、SVC 等步骤较为繁琐。

况且,随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm通过打包得方式,支持发布得版本管理和控制,很大程度上简化了 kubernetes 应用得部署以及管理。

Helm 本质就是让 K8S 得应用管理可方便配置,能动态生成。通过动态生成 K8S 资源清单文件。然后带哦用 kubectl 自动执行 K8S 资源部署

Helm 是官方提供的类似于 YUM 得包管理工具,是部署环境的流程封装。
Helm 有两个重要得概念:chart 和 release

​ chart :是创建一个应用的信息集合,包括各种 kubernetes 对象得配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署得自包含逻辑单元。可以将 chart 想象成 aptyum 中得软件安装包。
​ 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 官网3.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 库

helm repo list
[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


Helm官网 chart 仓库
https://hub.helm.sh/ 里面包含了所有的 chart 资源

②、查找想要安装的软件程序

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/”

原文地址:https://www.cnblogs.com/lizhewei/p/13344815.html