以下指令应该是常常会操作到
建立新的chart,chart里面的folder呈现就在上一篇有提到。
因为还有没有部署到k8s上面,所以如果想删除就直接移除资料夹就好
helm create mytest1
Creating mytest1
透过helm install把chart里面的yaml部署到k8s上面,
可以使用helm install --help看更多参数
#helm install [NAME] [CHART] [flags]
#部署名称:mytest1 到 namespace:default 上面,values部份载入/mytest底下的global与dev二个yaml档资料
helm install -n default mytest1 ./mytest1 -f ./mytest/global.yaml -f ./mytest/dev.yaml
执行flag使用dry-run会把渲染後的yaml都印出来,如果有错的话,执行时就会喷错,可以顺便检查有没有写正确
helm install --dry-run --debug test2 ./mytest1
install.go:172: [debug] Original chart version: ""
install.go:189: [debug] CHART PATH: /Users/howard_huang/test_yaml/mytest1
NAME: test2
LAST DEPLOYED: Fri Sep 24 13:53:51 2021
NAMESPACE: default
STATUS: pending-install
REVISION: 1
USER-SUPPLIED VALUES:
{}
COMPUTED VALUES:
affinity: {}
autoscaling:
enabled: false
maxReplicas: 100
minReplicas: 1
targetCPUUtilizationPercentage: 80
fullnameOverride: ""
image:
pullPolicy: IfNotPresent
repository: nginx
tag: ""
以下省略
安装成功
helm install test2 ./mytest1
NAME: test2
LAST DEPLOYED: Fri Sep 24 14:04:39 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=mytest1,app.kubernetes.io/instance=test2" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
如果没有指定namespace时,一样是预设default
helm ls #使用default namespace
helm ls -n default #指定namespace
helm ls -A 全部namespace的helm chart
helm ls -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test1 default 1 2021-09-23 14:20:30.791658 +0800 CST deployed mytest-1.0.1 1.16.0
test2 default 1 2021-09-24 14:04:39.915229 +0800 CST deployed mytest1-0.1.0 1.16.0
把安装好的helm chart release移除掉
helm uninstall -n default test2 #把刚刚install的test2移掉
release "test2" uninstalled
helm ls -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test1 default 1 2021-09-23 14:20:30.791658 +0800 CST deployed mytest-1.0.1 1.16.0
使用helm linter检查helm chart有没有写错
helm lint ./mytest1
==> Linting ./mytest1
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed #这个chart没问题
乱改deployment看看linter会不会抓到错误呢
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports: #少一个空白
- name: http
containerPort: 80
protocol: TCP
执行helm lint看看~~~果然有抓到问题
helm lint ./mytest
==> Linting ./mytest
[ERROR] templates/deployment.yaml: unable to parse YAML: error converting YAML to JSON: yaml: line 32: mapping values are not allowed in this context
Error: 1 chart(s) linted, 1 chart(s) failed
前面的helm ls可以看到REVISION是1,使用upgrade进行更版後,看看版本是否会正确递增呢。
把values.yaml改一下设定值
replicaCount: 2
更版後可以看到REVISION=2,STATUS为deployed,表示刚刚的更版都顺便完成
helm upgrade -n default test2 ./mytest1
Release "test2" has been upgraded. Happy Helming!
NAME: test2
LAST DEPLOYED: Sat Sep 25 08:11:07 2021
NAMESPACE: default
STATUS: deployed
REVISION: 2
helm ls -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test1 default 1 2021-09-23 14:20:30.791658 +0800 CST deployed mytest-1.0.1 1.16.0
test2 default 2 2021-09-25 08:11:07.75769 +0800 CST deployed mytest1-0.1.0 1.16.0
当发现刚刚upgrade上去的版本yaml设定值有错误时,要怎麽马上降版呢?
一种是改好设定值再upgrade上去,另一种就是rollback到前一版啦
helm rollback test2 1
Rollback was a success! Happy Helming!
#REVISION不会降回1喔,一样是递增上去
helm ls -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test1 default 1 2021-09-23 14:20:30.791658 +0800 CST deployed mytest-1.0.1 1.16.0
test2 default 3 2021-09-25 08:15:15.244443 +0800 CST deployed mytest1-0.1.0 1.16.0
#使用history指令就可以看到test2已经rollback回1了
helm history test2
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Sat Sep 25 08:08:46 2021 superseded mytest1-0.1.0 1.16.0 Install complete
2 Sat Sep 25 08:11:07 2021 superseded mytest1-0.1.0 1.16.0 Upgrade complete
3 Sat Sep 25 08:15:15 2021 deployed mytest1-0.1.0 1.16.0 Rollback to 1
以上就是常用的helm指令啦,如果有更多指令想看的
可以参考 helm官网
Hi 大家好~ 在这边平常我列出我最近想学跟正在学的一些技术 React Testing Libra...
一、如何判断演算法的效能 ? 当同样的问题,可以用不一样的演算法来解决时,要如何判断哪个演算法比较好...
那麽今天是最後一天了,我们就来做一个布署测试吧!昨天以介绍了关於Template的内容以及主要会使用...
本篇文没有引言,不罗嗦。 本文开始 人脸侦测是物体侦测(Object Detection)的一种;...
Scrum是大家想要导入的文化与工具,在分享了很多工具、体会和方法後,感觉是个好时机要来讲如何导入s...