发布时间:2026-07-21阅读(1)
在Lab1中,我们使用Helm安装了guestbook示例应用程序,并看到了相较于kubectl的优势我们可能认为自己已经足够了解使用Helm但是chart的更新或修改呢?我们如何更新和修改正在运行的应用?,现在小编就来说说关于helm参数模板?下面内容希望能帮助到你,我们来一起看看吧!

helm参数模板
Lab2 使用Helm更新应用在Lab1中,我们使用Helm安装了guestbook示例应用程序,并看到了相较于kubectl的优势。我们可能认为自己已经足够了解使用Helm。但是chart的更新或修改呢?我们如何更新和修改正在运行的应用?
在本实验中,我们将研究chart更改后如何更新正在运行的应用程序。为了说明这一点,我们将通过以下方式对原始留言簿的chart进行更改:
虽然是认为修改,但是本实验的目的是展示如何使用Kubernetes和Helm更新应用。那么,这样做有多容易呢?让我们继续看看。
场景1: 使用kubectl更新应用在本部分的实验中,我们将直接使用Kubernetes更新以前部署的应用程序Guestbook。
cd guestbook/v1rm redis-slave-service.yamlrm redis-slave-deployment.yaml
注意:如果需要,可以稍后使用git checkout-命令来还原这些文件。
$ kubectl delete svc redis-slave --namespace defaultservice "redis-slave" deleted$ kubectl delete deployment redis-slave --namespace defaultdeployment.extensions "redis-slave" deleted
sed -i.bak s/LoadBalancer/NodePort/g guestbook-service.yaml
kubectl delete svc guestbook --namespace default
kubectl create -f guestbook-service.yaml
$ kubectl get all --namespace defaultNAME READY STATUS RESTARTS AGEpod/guestbook-v1-7fc76dc46-9r4s7 1/1 Running 0 1hpod/guestbook-v1-7fc76dc46-hspnk 1/1 Running 0 1hpod/guestbook-v1-7fc76dc46-sxzkt 1/1 Running 0 1hpod/redis-master-5d8b66464f-pvbl9 1/1 Running 0 1hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/guestbook NodePort 172.21.45.29 <none> 3000:31989/TCP 31sservice/kubernetes ClusterIP 172.21.0.1 <none> 443/TCP 9dservice/redis-master ClusterIP 172.21.232.61 <none> 6379/TCP 1hNAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/guestbook-demo 3/3 3 3 1hdeployment.apps/redis-master 1/1 1 1 1hNAME DESIRED CURRENT READY AGEreplicaset.apps/guestbook-v1-7fc76dc46 3 3 3 1hreplicaset.apps/redis-master-5d8b66464f 1 1 1 1h
注意:服务类型已更改(更改为NodePor),并且已为留言簿服务分配了新端口(在此输出情况下为31989)。所有redis-slave资源均已删除。
kubectl get nodes -o wide
在本节中,我们将使用Helm更新以前部署的guestbook-demo应用程序。
在开始之前,让我们花几分钟看一下Helm与直接使用Kubernetes相比如何简化流程。Helm使用模板语言为chart提供了极大的灵活性和强大的功能,从而为chart用户消除了复杂性。在留言簿示例中,我们将使用以下模板功能:
如下所示,完整的redis-slave-service.yaml演示了在禁用slaveEnabled标志时文件如何变得冗余以及如何设置端口值。其他chart文件中还有更多的模板功能示例。
{{- if .Values.redis.slaveEnabled -}}apiVersion: v1kind: Servicemetadata: name: redis-slave labels: app: redis role: slavespec: ports: - port: {{ .Values.redis.port }} targetPort: redis-server selector: app: redis role: slave{{- end }}
helm list -n helm-demo
请注意,我们指定了名称空间。如果未指定,它将使用当前的名称空间上下文。我们应该看到类似于以下内容的输出:
$ helm list -n helm-demoNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSIONguestbook-demo helm-demo 1 2020-02-24 18:08:02.017401264 0000 UTC deployed guestbook-0.2.0
list命令提供已部署chart(发行版)的列表,其中提供了chart版本,名称空间,更新(修订)数量等信息。
$ cd helm101/charts$ helm upgrade guestbook-demo ./guestbook --set redis.slaveEnabled=false,service.type=NodePort --namespace helm-demoRelease "guestbook-demo" has been upgraded. Happy Helming!...
Helm升级将采用现有版本,并根据提供的信息对其进行升级。我们应该看到类似于以下内容的输出:
$ helm upgrade guestbook-demo ./guestbook --set redis.slaveEnabled=false,service.type=NodePort --namespace helm-demoRelease "guestbook-demo" has been upgraded. Happy Helming!NAME: guestbook-demoLAST DEPLOYED: Tue Feb 25 14:23:27 2020NAMESPACE: helm-demoSTATUS: deployedREVISION: 2TEST SUITE: NoneNOTES:1. Get the application URL by running these commands: export NODE_PORT=$(kubectl get --namespace helm-demo -o jsonpath="{.spec.ports[0].nodePort}" services guestbook-demo) export NODE_IP=$(kubectl get nodes --namespace helm-demo -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT
upgrade命令将应用程序升级到chart的指定版本,删除redis-slave资源,并将应用程序service.type更新为NodePort。
使用kubectl get all --namespace helm-demo获取更新内容:
$ kubectl get all --namespace helm-demoNAME READY STATUS RESTARTS AGEpod/guestbook-demo-6c9cf8b9-dhqk9 1/1 Running 0 20hpod/guestbook-demo-6c9cf8b9-zddn2 1/1 Running 0 20hpod/redis-master-5d8b66464f-g7sh6 1/1 Running 0 20hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/guestbook-demo NodePort 172.21.43.244 <none> 3000:31202/TCP 20hservice/redis-master ClusterIP 172.21.12.43 <none> 6379/TCP 20hNAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/guestbook-demo 2/2 2 2 20hdeployment.apps/redis-master 1/1 1 1 20hNAME DESIRED CURRENT READY AGEreplicaset.apps/guestbook-demo-6c9cf8b9 2 2 2 20hreplicaset.apps/redis-master-5d8b66464f 1 1 1 20h
注意:服务类型已更改(更改为NodePort),并且已为留言簿服务分配了新端口(在此输出情况下为31202)。所有redis-slave资源均已删除。
当我们使用helm list -n helm-demo命令检查Helm版本时,可以看到revision和日期已更新:
$ helm list -n helm-demoNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSIONguestbook-demo helm-demo 2 2020-02-25 14:23:27.06732381 0000 UTC deployed guestbook-0.2.0
获取节点的公共IP,并重新访问应用提供的服务:
kubectl get nodes -o wide
恭喜,现在已经更新了应用程序! Helm不需要任何手动更改资源,因此非常容易升级!所有配置都可以在命令行上即时设置,也可以使用替代文件设置。从将逻辑添加到模板文件后就可以实现这一点,这取决于flag标识,启用或禁用此功能。
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图