Helm使用
Helm自定义模板#创建文件夹mkdir /testcd /test#创建自描述文件[root@k8s-master01 test]# cat Chart.yamlname: hello-worldversion: 1.0.0#创建模板文件,用于生成 Kubernetes 资源清单(manifests)mkdir /test/templates模板文件夹名字必须是templates[root@k8
·
Helm自定义模板
#创建文件夹
mkdir /test
cd /test
#创建自描述文件
[root@k8s-master01 test]# cat Chart.yaml
name: hello-world
version: 1.0.0
#创建模板文件,用于生成 Kubernetes 资源清单(manifests)
mkdir /test/templates 模板文件夹名字必须是templates
[root@k8s-master01 test]# cat templates/deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
template:
metadata :
labels:
app: hello-world
spec:
containers:
- name : hello-world
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
ports :
- containerPort: 80
protocol: TCP
[root@k8s-master01 test]# cat templates/service.yaml
apiVersion: v1
kind: Service
metadata :
name: hello-world
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
selector :
app: hello-world
helm常用命令
#使用命令 helm install RELATIVE_PATH_TO_CHART 创建一次Release
[root@k8s-master01 test]# helm install .
#列出已经部署的 Release
[root@k8s-master01 test]# helm ls
#查询一个特定的 Release 的状态
[root@k8s-master01 test]# helm status odd-bronco
#移除所有与这个 Release 相关的 Kubernetes 资源(并没有彻底删除,会在类似回收站储存一份,用于回滚)
[root@k8s-master01 test]# helm delete odd-bronco
#查看没有彻底删除的release
[root@k8s-master01 test]# helm list --deleted
#回滚没有彻底删除的release(helm rollback RELEASE_NAME REVISION_NUMBER)
[root@k8s-master01 test]# helm rollback odd-bronco 1
#使用 helm delete --purge RELEASE_NAME 移除所有与指定 Release 相关的 Kubernetes 资源和所有这个Release 的记录
[root@k8s-master01 test]# helm delete --purge nonexistent-dragon
# 将char打包
[root@k8s-master01 helm]# helm package hello-helm
#将打包的char拉去下来
[root@k8s-master01 helm]# helm fetch hello-helm-0.1.0.tgz
#配置体现在配置文件 values.yaml(这样如果更新pod的镜像直接修改这个文件就可以)
[root@k8s-master01 test]# cat values.yaml
image:
repository: wangyanglinux/myapp
tag: 'v2'
#这个文件中定义的值,在模板文件中可以通过 .VAlues对象访问到
[root@k8s-master01 test]# cat templates/deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
template:
metadata :
labels:
app: hello-world
spec:
containers:
- name : hello-world
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
ports :
- containerPort: 80
protocol: TCP
#在 values.yaml 中的值可以被部署 release 时用到的参数 --values YAML_FILE_PATH 或 --setkey1=value1, key2=value2 覆盖掉
$ helm install --set image.tag='latest' .
##升级release
[root@k8s-master01 test]# helm upgrade odd-bronco .
Release "odd-bronco" has been upgraded. Happy Helming
Debug
#使用模板动态生成K8s资源清单,非常需要能提前预览生成的结果。
#使用--dry-run --debug 选项来打印出生成的清单文件内容,而不执行部署
helm install . --dry-run --debug --set image.tag=latest
解决科学上网的问题,heml的repo地址在国外,因此换一个可以访问的源
[root@k8s-master01 helm]# helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/charts
[root@k8s-master01 helm]# helm repo remove stable
"stable" has been removed from your repositories
[root@k8s-master01 helm]# helm repo add apphub https://apphub.aliyuncs.com/
"apphub" has been added to your repositories
[root@k8s-master01 helm]# helm repo list
NAME URL
local http://127.0.0.1:8879/charts
apphub https://apphub.aliyuncs.com/
[root@k8s-master01 helm]# helm repo list
NAME URL
local http://127.0.0.1:8879/charts
apphub https://apphub.aliyuncs.com/
更多推荐
已为社区贡献2条内容
所有评论(0)