问: 到哪里去搜索helm package?
答: artifacthub.io
Helm 的实质就是搞一些模版,最终依据这些模版生成k8s的系列yaml文件(deployemnt,service,secret,map等等),从而在k8s上能够简单部署出完整应用。可以用helm template查看最终生成的k8s部署文件。
- helm version
- helm repo add bitnami https://charts.bitnami.com/bitnami
- helm install my-release bitnmai/mysql
- kubectl get po --all-namespaces
- helm uninstall my-release
安装monitoring,推荐kube-prometheus-stack,集成了grafana,prometheus,等,地址https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack - helm repo add prom-repo https://prometheus-community.github.io/helm-charts
- helm repo update
- helm install monitoring prom-repo/kube-prometheus-stack
prom-repo 对应远程bitnami仓库本地所取的名字
安装完后,可手动修改service,让grafana能够访问 - kubectl edit svc monitoring-grafana
得到minikube的ip
- minikube ip
访问grafana,minkubeip+30001: http://192.168.49.2:30001/ ->此处遇到了问题,访问不了,timeout. docker不支持
以下是把docker换成podman, mac上用brew install
安装完后,启动虚拟机 - podman machine init --cpu 3 --memory 4028
然后用如下命令启动minikube - minikube start --cpus 2 --vm-driver=podman --container-runtime=containerd
重新弄好后,很不幸,我还是不能通过http://192.168.49.2:30001/ 访问grafana. 涉及比较复杂的网络问题,放弃。
改用 minikube service monitoring-grafana --url 得到一个临时url地址 http://127.0.0.1:60592
导出chart的values配置 - helm show values prom-repo/kube-prometheus-stack > gvalues.yaml
更改grafana admin密码 - helm upgrade monitoring prom-repo/kube-prometheus-stack --set grafana.adminPassword=admin
重启grafana pod,密码仍然生效 - kubectl rollout restart deployment/monitoring-grafana
通过yaml修改servcie,密码等 - helm upgrade monitoring prom-repo/kube-prometheus-stack --values=gvalues.yaml
什么是snowflakeserver? 团队如果不断地通过以上手动方式来安装应用,时间一长,就没有人能够记得对这个服务器进行了哪些配置。如果由于硬件问题需要更换服务器,那么没人能够完成所有的配置。这台需要被更换的服务器称为snowflakeserver.
避免用远程的chart 在生产环境helm install, 因为远程chart有可能未来会不存在。以下,掌握源码的安装:
卸载原来安装的monitoring
- helm uninstall monitoring
下载源码 - helm pull prom-repo/kube-prometheus-stack --untar=true
然后从本地安装 - helm install monitoring ./kube-prometheus-stack/
更改values - helm upgrade monitoring --values=gvalues.yaml ./kube-prometheus-stack
由helm 生成yaml - helm template monitoring ./kube-prometheus-stack --values=./kube-prometheus-stack/gvalues.yaml > generated.yaml
helm dynamic chart, 可以配置变量从而生成不同环境下的chart, yaml
生成一个chart
- helm create fleetman-helm-chart
templates文件夹的作用,在我们执行helm install 或者helm upgrade的时候,会到这个文件夹下找yaml文件,用text processor处理(go templage),并apply到cluster
helm template . 会合并yaml为一个文件并输出 - helm template . --debug
template文件夹中,以下划线开头的文件不会当成yaml处理,可以作为yaml的片段。
总结,在生产实践中,设置chart value的通常做法是,先get 当前生产的values.yaml, 再基于这个values.yaml修改或添加键值。最后再利用
helm upgrade命令设值。