基础命令
添加新仓库
helm repo add [NAME] [URL] [flags]
例如
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
#prometheus-community 只是一个名字可以任意写 ,相当于快捷方式
列出所添加的仓库helm repo list
#常用的chart源
#repo的名字任意写
helm repo add k8s https://charts.helm.sh/stable
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add aliyun https://apphub.aliyuncs.com
#查看chart列表
[root@master nginx]# helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
incubator https://kubernetes-charts-incubator.storage.googleapis.com
bitnami https://charts.bitnami.com/bitnami
aliyuncs https://apphub.aliyuncs.com
搜索资源
在hub中也就是helm的官方仓库,https://hub.helm.sh
#通常大厂都是有自己的helm制品仓库,例如prometheus一般不是直接用helm官方的仓库而是使用prometheus 开源社区的helm
[root@DESKTOP-Q4R7QLM local-k8s]# helm search hub prometheus --max-col-width 100|head -4
URL CHART VERSION APP VERSION DESCRIPTION
https://artifacthub.io/packages/helm/prometheus-community/prometheus 15.0.4 2.31.1 Prometheus is a monitoring system and time series database.
https://artifacthub.io/packages/helm/truecharts/prometheus 1.1.43 0.53.1 kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules com...
https://artifacthub.io/packages/helm/prometheus-worawutchan/prometheus 13.0.0 2.22.1 Prometheus is a monitoring system and time series database.
在已添加的仓库中搜索prometheus, 类似centos包含第三方yum源中搜索rpm包
helm search repo prometheus
helm search repo prometheus -l|awk '$1 =="prometheus-community/prometheus" {print $0}'
或者列出所有版本helm search repo prometheus -l|awk '$1 =="prometheus-community/prometheus" {print $0}'
指定某些设置
helm install prometheus prometheus-community/prometheus \
--namespace prometheus \
--set alertmanager.persistentVolume.storageClass="gp2" \
--set server.persistentVolume.storageClass="gp2"
#或者 不指定名称,让系统自动帮忙生成一个名字
helm install prometheus-community/prometheus \
--namespace prometheus \
--set alertmanager.persistentVolume.storageClass="gp2" \
--set server.persistentVolume.storageClass="gp2" --generate-name
#或者,指定版本号 --version 指定
helm install nginnx aliyun/nginx --version 4.3.12
#下面安装etcd请忽略
helm install etcd bitnami/etcd \
--set statefulset.replicaCount=3 \
--set persistence.enabled=true \
--set persistence.size=8Gi \
--set service.type=NodePort
使用 helm status prometheus 查看安装状态或读取信息
使用 helm show values prometheus-community/prometheus可以查看有哪些values
安装应用 本人使用nginx作为例子,先看下都有哪些版本提供
[root@master nginx]# 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
bitnami/nginx 6.2.1 1.19.2 Chart for the nginx server
bitnami/nginx-ingress-controller 5.5.1 0.35.0 Chart for the nginx Ingress controller
stable/nginx-ingress 1.41.3 v0.34.1 DEPRECATED! An nginx Ingress controller that us...
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
bitnami/kong 1.3.2 2.1.3 Kong is a scalable, open source API layer (aka ...
stable/gcloud-endpoints 0.1.2 1 DEPRECATED Develop, deploy, protect and monitor...
我们选择aliyuncs/nginx 的chart包 先下载看看包有什么内容
helm pull aliyuncs/nginx --untar #将nginx包从创库拉到当前目录
#查看结构
[root@master charts]# tree nginx/
nginx/
├── Chart.yaml
├── ci
│ └── values-with-ingress-metrics-and-serverblock.yaml
├── README.md
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── server-block-configmap.yaml
│ ├── servicemonitor.yaml
│ ├── svc.yaml
│ └── tls-secrets.yaml
├── values.schema.json
└── values.yaml
2 directories, 13 files
有兴趣的可以看看各个yaml文件的内容,比较重要的是values.yaml
现在开始正式安装nginx到我们的集群中
直接在线安装aliyuncs/nginx,my-nginx为release名称;service.type=NodePort表示将tomcat的service对外暴露端口的方式改为NodePort(缺省为LoadBalancer);persistence.enabled=false表示将不启用持久化存储卷,测试暂不需要使用这个
[root@master charts]# helm install my-nginx aliyuncs/nginx --set service.type=NodePort --set persistence.enabled=false
NAME: my-nginx
LAST DEPLOYED: Thu Sep 10 15:48:41 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Get the NGINX URL:
export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services my-nginx)
export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
echo "NGINX URL: http://$NODE_IP:$NODE_PORT/"
查看是否安装成功
[root@master charts]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/my-nginx-5b69568b97-c7rbz 1/1 Running 0 59s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24h
service/my-nginx NodePort 10.98.148.75 <none> 80:32218/TCP,443:30893/TCP 59s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/my-nginx 1/1 1 1 59s
NAME DESIRED CURRENT READY AGE
replicaset.apps/my-nginx-5b69568b97 1 1 1 59s
helm卸载 ingress-nginx-2
helm uninstall ingress-nginx-2 -n ingress-nginx-2