当前位置: 首页 > 资讯 >

[DAY18]Helm棒~~

Helm 常用command

以下指令应该是常常会操作到

  • helm create : 建立chart
  • helm intall : 安装chart
  • helm uninstall : 反安装chart
  • helm lint : 检查chart的yaml有没有写错
  • helm list : 列出helm install的chart
  • helm rollback : 降版
  • helm upgrade : 升阪

helm create

建立新的chart,chart里面的folder呈现就在上一篇有提到。
因为还有没有部署到k8s上面,所以如果想删除就直接移除资料夹就好

helm create mytest1        
Creating mytest1

helm install

透过helm install把chart里面的yaml部署到k8s上面,
可以使用helm install --help看更多参数

  • name : 自定义名称,同个namespace只能有一个唯一的名称
  • chart : 本机chart的路径
  • flags : 可以参考 helm_install options,最常使用的应该是-f
#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

-dry-run :没有安装到k8s的安装 /images/emoticon/emoticon01.gif

执行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

helm ls

如果没有指定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 uninstall

把安装好的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 lint

使用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 upgrade

前面的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

helm rollback

当发现刚刚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官网


相关文章:

  • Day 25 : 插件篇 04 — 如何让 Obsidian 自动推荐关联笔记 (下)?介绍我的笔记架构与 Breadcrumbs 实战应用
  • 世界上最快乐的人 (1) 实修方法摘录
  • [Day 19] 实作-美化首页 上传Git
  • dos指令 开启IIS 管理员
  • 【D19】制作讯号灯#3:要制作的灯号
  • Day_19 htop
  • Day 19 - UML x Component — Independent (上)
  • [FGL] 程序开发(2) - 4类6个交谈指令-功能选单部分
  • Pascal 语言和你 SAY HELLO!!
  • 开源自动化攻击模拟平台CALDERA
  • [Day 20] 实作 Logging Plugin 建立系统 Logging 机制
  • Day 5:口罩即时库存开放资料
  • 【Day01】楔子-关於永丰金融APIs
  • Day 11 CSS <三大特性>
  • Day 9 利用 docker 安装 Mautic
  • HD钱包是什么?比特币钱包原理
  • 最好用的云服务器推荐:什么云服务器稳定好用又便宜
  • 如何使用Hostinger的邮箱服务,Hostinger免费企业邮箱设置教程
  • 如何找国外网红营销?国外网红营销方法和推荐
  • 建网站要多少钱?企业和个人建站费用分析和建站注意事项
  • 最新虚拟信用卡无限开卡渠道大全
  • 香港电话卡怎么在内地使用: CSL Hello/Three/CMHK/Smartone电话卡内地使用方法
  • 软件分享:xshell6/xftp6个人版下载,无需破解,永久免费使用
  • Windows服务器推荐:便宜好用稳定靠谱的国外Windows服务器推荐
  • 简单做WordPress网站的方法:最快最便宜的做外贸网站的方法
  • Vultr促销码和2020年最新优惠:Vultr注册教程和使用方法
  • Gutenberg 10.5 支持嵌入PDF,新增块模式,增强自定义器的小工具功能
  • 2021年10个全球电子商务趋势[信息图] ,所有电商人员都该了解一下
  • VPS评测:Clouvider Limited英国VPS性能测试
  • 怎么获得菲律宾手机卡和接受短信验证码