helm 作用

Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。

helm 相关概念

Chart:一个Helm包,其中包含运行一个应用所需要的工具和资源定义,还可能包含Kubernetes集群中的服务定义,类似于Homebrew中的formula、APT中的dpkg或者Yum中的RPM文件。

Release:在Kubernetes集群上运行的一个Chart实例。在同一个集群上,一个Chart可以被安装多次。例如有一个MySQL Chart,如果想在服务器上运行两个MySQL数据库,就可以基于这个Chart安装两次。每次安装都会生成新的Release,会有独立的Release名称。

Repository:用于存放和共享Chart仓库。

helm 的架构

helm 主要有helm 客户端,Tiller 服务器和charts(组成)

HelmClient是一个客户端,拥有对Repository、Chart、Release等对象的管理能力,可以通过二进制文件或脚本进行安装。

TillerServer负责客户端指令和Kubernetes集群之间的交互,根据Chart定义,生成和管理各种Kubernetes的资源对象。

helm 安装 

下载软件包

wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.2-linux-amd64.tar.gz

安装

tar zxf helm-v2.12.2-linux-amd64.tar.gz

mv linux-amd64/helm /usr/bin/

helm version # 查看版本

安装Tiller server

Tiller 是helm 的服务端,运行于k8s 集群之上,如果开启了RBAC 的授权,需要创建相关的ServiceAccout

创建带有rabc 权限的账号

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

kubectl    apply -f    helm2_sa.yaml

tiller 安装的初始化

helm init --service-account tiller

查看pod 是否正常运行

kubectl get pod -n kube-system | grep till


helm 仓库源是外网的

添加仓库源

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

更新仓库

helm  repo update

查看源

helm repo list


示列演示


helm 安装nginx


helm install apphub/nginx -n mynginx-v1



NAME 是 release的名字,

-n 指定参数名称

RESOURCES: 当前release 资源的名称

NOTES: 显示的是部分release 的资源使用方式



image.png


pod 访问测试