1 问题
更新了helm charts,如何升级
2 解决方法
步骤1: 下载最新的整个helm charts项目代码
步骤2: 查看当前环境的charts版本
这个可以通过查看某个组件的
charts中使用的image的版本确定。
以ceilometer-api为例,
具体查看版本方法请执行如下命令:
kubectl edit deploy -n openstack ceilometer-api
可以看到类似如下内容:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "8"
creationTimestamp: 2019-01-10T14:05:15Z
generation: 8
labels:
application: ceilometer
component: api
release_group: ceilometer
name: ceilometer-api
namespace: openstack
resourceVersion: "4027828"
selfLink: /apis/extensions/v1beta1/namespaces/openstack/deployments/ceilometer-api
uid: c13d6a4c-14e0-11e9-8623-fa163edc2997
spec:
progressDeadlineSeconds: 600
replicas: 3
revisionHistoryLimit: 3
selector:
matchLabels:
application: ceilometer
component: api
release_group: ceilometer
strategy:
rollingUpdate:
maxSurge: 3
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
annotations:
configmap-bin-hash: d2eb483473276e7aab27e7b639c4edc3bb0e60125f67b8fbe4b90c149e9744f1
configmap-etc-hash: f3303568db665b281aaf92fe22b55282ade57ffe0e5e61784e73c27ff38222d0
creationTimestamp: null
labels:
application: ceilometer
component: api
release_group: ceilometer
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: release_group
operator: In
values:
- ceilometer
- key: application
operator: In
values:
- ceilometer
- key: component
operator: In
values:
- api
topologyKey: kubernetes.io/hostname
containers:
- command:
- /tmp/ceilometer-api.sh
- start
image: hub.easystack.io/production/escloud-linux-source-ceilometer-api:1.0.2
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
exec:
command:
- /tmp/ceilometer-api.sh
- stop
name: ceilometer-api
ports:
- containerPort: 8777
name: ce-api
protocol: TCP
readinessProbe:
failureThreshold: 3
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 8777
timeoutSeconds: 1
resources:
limits:
cpu: "2"
memory: 2Gi
requests:
cpu: 100m
......
其中查看image镜像部分如下所示:
image: hub.easystack.io/production/escloud-linux-source-ceilometer-api:1.0.2
因此确定当前的charts环境的版本为1.0.2
步骤3: 进入到helm-toolkit这个目录
查看Chart.yaml, 示例内容如下:
apiVersion: v1
description: OpenStack-Helm Helm-Toolkit
name: helm-toolkit
version: 1.0.1
然后将 version对应的1.0.1修改为1.0.2
步骤4: 重新编译helm-toolkit
先返回到helm toolkit的上级目录,然后执行如下命令:
make helm-toolkit
步骤5: 进入到自己待升级的组件的charts目录
然后在该charts中把自己的修改写入到对应的文件中
步骤6: 修改待升级的组件的版本号
以ceilometer为例,
步骤6.1: 先修改ceilometer的Chart.yaml文件
,示例内容如下:
apiVersion: v1
description: OpenStack-Helm Ceilometer
name: ceilometer
version: 1.0.1
home: https://docs.openstack.org/developer/ceilometer
sources:
- https://git.openstack.org/cgit/openstack/ceilometer
- https://git.openstack.org/cgit/openstack/openstack-helm
maintainers:
- name: OpenStack-Helm Authors
注意: 请将 version 对应的1.0.1也修改为步骤1确定的版本号,根据步骤1中的例子,
这里修改为1.0.2
步骤6.2: 修改ceilometer的values.yaml文件
示例内容如下:
......
images:
tags:
......
ceilometer_api: hub.easystack.io/production/escloud-linux-source-ceilometer-api:1.0.1
ceilometer_central: hub.easystack.io/production/escloud-linux-source-ceilometer-central:1.0.1
ceilometer_collector: hub.easystack.io/production/escloud-linux-source-ceilometer-collector:1.0.1
ceilometer_compute: hub.easystack.io/production/escloud-linux-source-ceilometer-compute:1.0.1
ceilometer_notification: hub.easystack.io/production/escloud-linux-source-ceilometer-notification:1.0.1
ceilometer_virtdf_polling: hub.easystack.io/production/escloud-linux-source-ceilometer-virtdf-polling:1.0.1
......
pull_policy: "IfNotPresent"
job_pull_policy: "Always"
......
将所有镜像的版本从1.0.1修改为步骤1确定的当前环境的chart的版本号,以步骤1中为例就是修改为1.0.2
步骤7: 重新编译组件的charts文件
以ceilometer为例,进入到ceilometer的上级目录,
执行如下命令:
make ceilometer
最后会生成:
ceilometer-1.0.2.tgz
步骤8: 对组件的charts进行升级
以上述ceilometer为例,
即执行如下命令:
helm upgrade ceilometer ceilometer-1.0.2.tgz
此时,如果看到:
Release "ceilometer" has been upgraded. Happy Helming!
就表明组件的charts升级成功,
否则,根据出错的信息,进行charts的排错。