helm
helm简介
helm -> yum
chart -> rpm
helm V3
下载地址:
https://github.com/helm/helm/releases
当前版本:
wget https://get.helm.sh/helm-v3.7.1-linux-amd64.tar.gz
安装:
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 list -A NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION aws-load-balancer-controller kube-system 1 2023-03-13 15:41:36.418171978 +0800 CST deployed aws-load-balancer-controller-1.4.8 v2.4.7 metrics-server kube-system 1 2023-03-12 16:05:54.207667545 +0800 CST deployed metrics-server-3.8.4 0.6.2
查看软件详细信息:
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 list -A NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION metrics-server kube-system 1 2023-03-12 16:05:54.207667545 +0800 CST deployed metrics-server-3.8.4 0.6.2 prometheus kube-system 1 2023-03-12 16:37:52.515709814 +0800 CST deployed prometheus-19.7.2 v2.41.0
卸载软件:
]# helm uninstall prometheus -n kube-system
自定义helm应用的使用:
编写文件:
. ├── Chart.yaml ├── README.md ├── templates │ ├── _cache_s3.tpl │ ├── configmap.yaml │ ├── deployment.yaml │ ├── _env_vars.tpl │ ├── _helpers.tpl │ ├── NOTES.txt │ ├── pvc.yaml │ ├── role-binding.yaml │ ├── role.yaml │ ├── secrets.yaml │ └── service-account.yaml └── values.yaml
打包:
helm package .
安装:
helm install --namespace gitlab gitlab-runner *.tgz
查看:
helm ls -n gitlab
卸载:
helm uninstall -n gitlab gitlab-runner-0-1655282389
安装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>
收集指定名称空间下的日志:默认收集全部名称空间的日志
<source> @type tail @id in_tail_container_logs @label @KUBERNETES path /var/log/containers/*_default_*.log # 把*.log 改成 *_namespace_*.log 即可 pos_file /var/log/fluentd-containers.log.pos tag kubernetes.* read_from_head true <parse> @type multi_format <pattern> format json time_key time time_type string time_format "%Y-%m-%dT%H:%M:%S.%NZ" keep_time_key false </pattern> <pattern> format regexp expression /^(?<time>.+) (?<stream>stdout|stderr)( (.))? (?<log>.*)$/ time_format '%Y-%m-%dT%H:%M:%S.%NZ' keep_time_key false </pattern> </parse> emit_unmatched_lines true </source>
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
storageClass:
persistentVolume: storageClass: "managed-nfs-storage" # 改成自己storageClass名称
alertmanager:
alertmanager: enabled: true # 不需要就设置为false
pushgateway:
prometheus-pushgateway: enabled: true
node-exporter:如果不需要对节点进行监控可以不安装,设置为false即可。
prometheus-node-exporter: enabled: true
kube-state-metrics:为HPA等组件提供决策指标支持的组件(Pod水平扩容)。
kube-state-metrics: enabled: false
安装:
helm install my-prometheus prometheus-community/prometheus -f prometheus.yaml
更新:
helm upgrade prometheus prometheus-community/prometheus -f prometheus.yaml
grafana模板:
https://grafana.com/grafana/dashboards/9614-nginx-ingress-controller/
安装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安装metrics-server:
添加源:
helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
获取配置文件:修改下镜像地址
helm show values metrics-server/metrics-server > metrics-server-conf.yaml
安装:安装后需要在启动选项上添加 --kubelet-insecure-tls 选项来不验证证书。
helm install metrics-server metrics-server/metrics-server -n kube-system -f metrics-server-conf.yaml
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