kubernetes -- helm charts 开发: 9、 helm charts升级方法

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的排错。

猜你喜欢

转载自blog.csdn.net/qingyuanluofeng/article/details/86669705