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/
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐