1 准备一组yaml文件
如下准备两个资源编排文件,nginx的deploy文件和nginx的service文件
生成 web-deploy.yaml
[root@localhost helm]# kubectl create deploy web --image=nginx -o yaml --dry-run > web-deploy.yaml
W0603 16:49:58.666722 22490 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
[root@localhost helm]# ll
总用量 4
-rw-r--r--. 1 root root 376 6月 3 16:49 web-deploy.yaml
[root@localhost helm]# cat web-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
replicas: 1
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
生成 web-service.yaml
[root@localhost helm]# kubectl expose deploy web --port=80 --target-port=80 --type=NodePort -o yaml --dry-run > web-service.yaml
W0603 16:53:08.027380 23080 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
[root@localhost helm]# ll
总用量 8
-rw-r--r--. 1 root root 376 6月 3 16:49 web-deploy.yaml
-rw-r--r--. 1 root root 234 6月 3 16:53 web-service.yaml
[root@localhost helm]# cat web-service.yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: web
type: NodePort
status:
loadBalancer: {}
# 删除deploy 以便测试chart部署web应用
[root@localhost helm]# kubectl delete deploy web
deployment.apps "web" deleted
2 创建自定义chart
# 创建自定义chart后生成mychart目录,在mychart目录下的文件:
# charts 存放依赖的chart
# Chart.yaml 存放自定义chart的描述属性
# templates 存放自己打包的一组yaml文件(前面生成的两个yaml文件就是放这里)
# values.yaml 是全局变量配置文件
[root@localhost helm]# helm create mychart
Creating mychart
[root@localhost helm]# ls
mychart web-deploy.yaml web-service.yaml
[root@localhost helm]# cd mychart
[root@localhost mychart]# ls
charts Chart.yaml templates values.yaml
# 清空templates中的默认文件
rm -rf templates/*
# 把创建的一组yaml文件移到到templates中
[root@localhost helm]# ls
mychart web-deploy.yaml web-service.yaml
[root@localhost helm]# cp web-*.yaml mychart/templates/
3 安装自定义的chart
[root@localhost helm]# helm install web-helm mychart/
NAME: web-helm
LAST DEPLOYED: Thu Jun 3 17:08:07 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
# 查看部署的应用
[root@localhost helm]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERS
web-chart default 1 2021-06-03 17:06:11.924500118 +0800 CST failed mychart-0.1.0 1.16.0
web-chart1 default 1 2021-06-03 17:06:39.808945244 +0800 CST failed mychart-0.1.0 1.16.0
web-helm default 1 2021-06-03 17:08:07.348163084 +0800 CST deployed mychart-0.1.0 1.16.0
# 查看应用状态
[root@localhost helm]# helm status web-helm
NAME: web-helm
LAST DEPLOYED: Thu Jun 3 17:08:07 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
# 查看web服务 出现web service说明部署成功
[root@localhost helm]# kubectl get svc
# 基于应用的版本升级
当对yaml文件修改后,则需要upgrade进行应用级的版本升级
[root@localhost helm]# helm upgrade web-helm mychart/
Release "web-helm" has been upgraded. Happy Helming!
NAME: web-helm
LAST DEPLOYED: Thu Jun 3 17:21:09 2021
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None