helm简介

helm -> yum

chart -> rpm

16275553013377_upload.png

helm V3


下载地址:

https://github.com/helm/helm/releases

安装:

tar -xf helm-v3.0.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

添加chart:

helm repo add bitnami https://charts.bitnami.com/bitnami

更新缓存:

helm search repo bitnami

搜索软件:

helm search repo redis

查看软件详细信息:

helm show all bitnami/redis

安装软件:

helm install NAME bitnami/redis
# 禁用持久存储
helm install db bitnami/redis --set replica.persistence.enabled=false --set master.persistence.enabled=false

# 官网地址,有更多的参数可以设置
artifacthub.io/packages/helm/bitnami/redis

指定软件名称:

helm install db-redis bitnami/redis -f /tmp/redis/values.yaml

卸载软件:

helm uninstall db bitnami/redis


安装fluent-bit:

添加官方chart源:

helm repo add fluent https://fluent.github.io/helm-charts

获取配置:

helm show values fluent/fluent-bit > fluent-bit.yaml

改完配置后指定chart文件安装:

helm install log fluent/fluent-bit -f fluent-bit.yaml -n logs


安装fluentd:fluentd默认的配置收集到es中的日志字段比较丰富比较实用。

helm repo add fluent https://fluent.github.io/helm-charts
helm show values fluent/fluentd > fluentd.yaml
helm install log fluent/fluentd -f fluentd.yaml -n logs

要修改如下配置:

  04_outputs.conf: |-
    <label @OUTPUT>
      <match **>
        @type elasticsearch
        host "192.168.0.20"
        port 9200
        path ""
        logstash_format true
        logstash_prefix "k8s"
      </match>
    </label>


helm安装prometheus: 社区版,没有operator复杂,适合小规模集群。需要storageclass或emptyDir,有两个地方要改,分别是alertmanager 和 prometheus。

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts 
helm show values prometheus-community/prometheus > prometheus.yaml

对导出的配置文件进行修改,参考官方文档:

https://artifacthub.io/packages/helm/prometheus-community/prometheus

安装:

helm install my-prometheus prometheus-community/prometheus -f prometheus.yaml


安装prometheus-adapter:prometheus对接到k8s的适配器,让k8s支持prometheus格式的指标。

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm show values prometheus-community/prometheus-adapter > prometheus-adapter.yaml

修改配置之后安装:需要指定prometheus的地址,如:prometheus.kube-system.svc.cluster.local.

helm install my-prometheus-adapter prometheus-community/prometheus-adapter -f prometheus-adapter.yaml

官方文档:

https://artifacthub.io/packages/helm/prometheus-community/prometheus-adapter

主要修改的配置如下:注意端口使用的是svc的端口。

prometheus:
  url: http://prom-prometheus-server.kube-system.svc.cluster.local.
  port: 80 # 注意使用svc的端口

安装好后获取指标:需要等待一分钟才能获取到指标,如果发现只有一个指标那就是prometheus地址没指定正确。

kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1 | jq

编辑配置:可以自定义规则

kubectl edit configmaps -n kube-system prometheus-adapter



helm V2

Helm --> Tiller --> API server

Helm:客户端

Tiller:服务端

Chart:一个helm程序包

Repository:Charts仓库

Release:特点的Chart部署与目标上的一个实例

Chart --> Config --> Release

Helm官网:https://helm.sh

Charts仓库:https://hub.kubeapps.com、https://hub.helm.sh



安装helm


官方下载地址:

https://github.com/helm/helm

安装包下载地址:下载Latest release包即可。

https://github.com/helm/helm/releases

安装:

tar xf helm-v2.9.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin


安装tiller


Tiller的权限rbac文件:有三种部署方式,这里部署集群级别,详见:https://github.com/helm/helm/blob/master/docs/rbac.md 

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

应用RBAC:将tiller绑定到集群的cluster-admin的Role。

kubectl apply -f tiller-rbac.yaml

安装Tiller:先设置代理后安装。

[root@k8s-master tiller]# helm init --service-account tiller --history-max 200
Creating /root/.helm 
Creating /root/.helm/repository 
Creating /root/.helm/repository/cache 
Creating /root/.helm/repository/local 
Creating /root/.helm/plugins 
Creating /root/.helm/starters 
Creating /root/.helm/cache/archive 
Creating /root/.helm/repository/repositories.yaml 
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com 
Adding local repo with URL: http://127.0.0.1:8879/charts 
$HELM_HOME has been configured at /root/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation

看到上面信息说明安装成功。


如果没有代理这是用如下方法安装Tiller:

helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1  --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

--service-account    serviceaccount账号名

-i, --tiller-image       使用自定义的Tiller 镜像,默认镜像下不了改成可以下载的镜像

--stable-repo-url     指定仓库地址,默认是谷歌的,要改一下,改成阿里云的

--upgrade                tiller安装好后更新仓库

更多参数详见:helm init --help


安装好后查看版本:

[root@k8s-master tiller]# helm version
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}


使用


添加仓库:

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

更新仓库:

helm repo update


使用:

helm search

helm search stable/redis

helm install stable/redis

helm delete stable/redis

获取chart文件:

helm fetch stable/redis

查看当前可用仓库

helm repo list


卸载 Helm 服务器端 Tiller:

helm reset

helm reset --force


wordpress/
  Chart.yaml          # 对外初始化,元数据信息,版本、名称、维护者等等
  LICENSE             # 
  README.md           # 
  requirements.yaml   # 依赖关系
  values.yaml         # 
  charts/             # 被依赖的chart文件
  templates/          # 模本文件,配置清单
  templates/NOTES.txt #


自定义chart:

helm create myapp

myapp/
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── NOTES.txt
│   └── service.yaml
└── values.yaml

可以编辑资源配置清单,编辑完成后进行语法检查。

helm lint myapp

没有问题后进行打包:

helm package myapp

查看仓库:

helm repo list 

打开本地仓库:这个仓库使用nginx 放入文件既可以成为一个仓库。

helm serve

搜索自定义的仓库:

helm search myapp

安装自定义仓库中的应用:

helm install --name myapp1 local/myapp

查看安装生成的信息:

helm status myapp1

移除应用:

helm delete --purge myapp1


helm官网chart:

https://hub.kubeapps.com

helm repo add bitnami https://charts.bitnami.com/bitnami

helm fetch bitnami/elasticsearch