Skip to content

Commit

Permalink
add v0.21.0 upgrade doc & update sidecar image
Browse files Browse the repository at this point in the history
  • Loading branch information
zwwhdls committed Jul 14, 2023
1 parent cdb1be7 commit 0887e5c
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 26 deletions.
16 changes: 14 additions & 2 deletions docs/en/administration/upgrade-csi-driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ But on the other hand, this also means **upgrading CSI Driver will not automatic

Another thing to keep in mind, if you have [overwritten mount pod image](../guide/custom-image.md#overwrite-mount-pod-image), then upgrading CSI Driver will not affect JuiceFS Client version at all, you should just continue manage mount pod image according to the [docs](../guide/custom-image.md#overwrite-mount-pod-image).

### Upgrade via Helm
### Upgrade via Helm {#helm-upgrade}

Run below commands:

Expand All @@ -23,7 +23,7 @@ helm repo update
helm upgrade juicefs-csi-driver juicefs/juicefs-csi-driver -n kube-system -f ./values.yaml
```

### Upgrade via kubectl
### Upgrade via kubectl {#kubectl-upgrade}

If you haven't made any modifications to the default CSI installation, you can just download the latest [`k8s.yaml`](https://github.com/juicedata/juicefs-csi-driver/blob/master/deploy/k8s.yaml), and then perform the upgrade by running:

Expand All @@ -49,6 +49,18 @@ kubectl apply -f ./k8s.yaml

Comparing and merging YAML files can be wearisome, that's why [install via Helm](../getting_started.md#helm) is much more recommended on a production environment.

#### v0.21.0 version upgrade notes {#v0-21-0}

In JuiceFS CSI driver v0.21.0 release, we introduced `podInfoOnMount: true` in `CSIDriver`. However, CSIDriver cannot be updated, you need to manually delete the old version of CSIDriver before upgrading, otherwise the upgrade will fail:

```shell
kubectl delete csidriver csi.juicefs.com
```

Then refer to [Upgrade via kubectl](#kubectl-upgrade) to upgrade.

If you are using helm installation, you can directly upgrade the chart without this step.

## Upgrade CSI Driver (mount by process mode) {#mount-by-process-upgrade}

[Mount by process](../introduction.md#by-process) means that JuiceFS Client runs inside CSI Node Service Pod, under this mode, upgrading CSI Driver will inevitably interrupt existing mounts, use one of below methods to carry out the upgrade.
Expand Down
27 changes: 16 additions & 11 deletions docs/en/getting_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,11 +212,12 @@ From v0.11.1 and above, JuiceFS CSI Driver supports using container images in th

Images that need to replaced is listed below, find our the suitable version for your cluster via the links:

| Original container image name | New container image name |
|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
| `quay.io/k8scsi/livenessprobe` | [`k8s.gcr.io/sig-storage/livenessprobe`](https://kubernetes-csi.github.io/docs/livenessprobe.html#supported-versions) |
| `quay.io/k8scsi/csi-provisioner` | [`k8s.gcr.io/sig-storage/csi-provisioner`](https://kubernetes-csi.github.io/docs/external-provisioner.html#supported-versions) |
| `quay.io/k8scsi/csi-node-driver-registrar` | [`k8s.gcr.io/sig-storage/csi-node-driver-registrar`](https://kubernetes-csi.github.io/docs/node-driver-registrar.html#supported-versions) |
| Original container image name | New container image name |
|--------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|
| `quay.io/k8scsi/livenessprobe` | [`registry.k8s.io/sig-storage/livenessprobe`](https://kubernetes-csi.github.io/docs/livenessprobe.html#supported-versions) |
| `quay.io/k8scsi/csi-provisioner` | [`registry.k8s.io/sig-storage/csi-provisioner`](https://kubernetes-csi.github.io/docs/external-provisioner.html#supported-versions) |
| `quay.io/k8scsi/csi-node-driver-registrar` | [`registry.k8s.io/sig-storage/csi-node-driver-registrar`](https://kubernetes-csi.github.io/docs/node-driver-registrar.html#supported-versions) |
| `quay.io/k8scsi/csi-resizer:` | [`registry.k8s.io/sig-storage/csi-resizer`](https://kubernetes-csi.github.io/docs/external-resizer.html#supported-versions) |

### Helm

Expand All @@ -225,23 +226,27 @@ Add `sidecars` to `values.yaml`, to overwrite selected images:
```yaml
sidecars:
livenessProbeImage:
repository: k8s.gcr.io/sig-storage/livenessprobe
repository: registry.k8s.io/sig-storage/livenessprobe
tag: "v2.6.0"
csiProvisionerImage:
repository: k8s.gcr.io/sig-storage/csi-provisioner
repository: registry.k8s.io/sig-storage/csi-provisioner
tag: "v2.2.2"
nodeDriverRegistrarImage:
repository: k8s.gcr.io/sig-storage/csi-node-driver-registrar
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
tag: "v2.5.0"
csiResizerImage:
repository: registry.k8s.io/sig-storage/csi-resizer
tag: "v1.8.0"
```

### kubectl

Replace some container images and parameters of `provisioner` sidecar in `k8s.yaml` (use [gnu-sed](https://formulae.brew.sh/formula/gnu-sed) instead under macOS):

```shell
sed --in-place --expression='[email protected]/k8scsi/livenessprobe:[email protected]/sig-storage/livenessprobe:v2.6.0@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-provisioner:[email protected]/sig-storage/csi-provisioner:v2.2.2@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-node-driver-registrar:[email protected]/sig-storage/csi-node-driver-registrar:v2.5.0@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/livenessprobe:[email protected]/sig-storage/livenessprobe:v2.6.0@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-provisioner:[email protected]/sig-storage/csi-provisioner:v2.2.2@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-node-driver-registrar:[email protected]/sig-storage/csi-node-driver-registrar:v2.5.0@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-resizer:[email protected]/sig-storage/csi-resizer:v1.8.0@' k8s.yaml
sed --in-place --expression='s@enable-leader-election@leader-election@' k8s.yaml
```
16 changes: 14 additions & 2 deletions docs/zh_cn/administration/upgrade-csi-driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ v0.10.0 开始,JuiceFS 客户端与 CSI 驱动进行了分离,升级 CSI 驱

特别地,如果你[修改了 Mount Pod 容器镜像](../guide/custom-image.md#overwrite-mount-pod-image),那么升级 CSI 驱动就完全不影响 JuiceFS 客户端版本了,你需要按照[文档](../guide/custom-image.md#overwrite-mount-pod-image),继续自行管理 Mount Pod 容器镜像。

### 通过 Helm 升级
### 通过 Helm 升级 {#helm-upgrade}

用 Helm 安装 CSI 驱动时,所有的安装配置都汇集于 `values.yaml`,你需要自行管理该文件。升级的步骤也很简单,直接用新版的 Helm chart 重装 CSI 驱动即可:

Expand All @@ -25,7 +25,7 @@ helm upgrade juicefs-csi-driver juicefs/juicefs-csi-driver -n kube-system -f ./v

如果你已经将整个 Helm chart 纳入版本控制系统管理,则需要用 `helm pull --untar juicefs/juicefs-csi-driver` 下载最新版本的 CSI 驱动 Helm chart,覆盖当前版本。注意,`values.yaml` 的维护是你的责任,升级过程中请注意不要覆盖该文件,否则安装配置将会被重置为默认状态。

### 通过 kubectl 升级
### 通过 kubectl 升级 {#kubectl-upgrade}

如果你并未对 CSI 驱动配置做任何改动,那么直接下载最新的 [`k8s.yaml`](https://github.com/juicedata/juicefs-csi-driver/blob/master/deploy/k8s.yaml),然后用下边的命令进行覆盖安装即可。

Expand All @@ -51,6 +51,18 @@ kubectl apply -f ./k8s.yaml

正因为梳理配置的步骤相对复杂,因此面对生产集群,我们更推荐[使用 Helm 安装和升级 CSI 驱动](../getting_started.md#helm)

#### v0.21.0 版本升级注意事项 {#v0-21-0}

在 JuiceFS CSI 驱动 v0.21.0 版本中,我们在 CSIDriver 资源中引入了 `podInfoOnMount: true`,但 CSIDriver 资源不能更新,升级前需要手动删除旧版本的 CSIDriver 资源,否则会导致升级失败:

```shell
kubectl delete csidriver csi.juicefs.com
```

再参考 [通过 kubectl 升级](#kubectl-upgrade) 进行升级。

若使用的是 helm 安装,可以直接升级 chart 升级,无需该步骤。

## 升级 CSI 驱动(进程挂载模式) {#mount-by-process-upgrade}

所谓[进程挂载模式](../introduction.md#by-process),就是 JuiceFS 客户端运行在 CSI Node Service Pod 内,此模式下升级,将不可避免地需要中断 JuiceFS 客户端挂载,你需要根据实际情况,参考以下方案进行升级。
Expand Down
27 changes: 16 additions & 11 deletions docs/zh_cn/getting_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,11 +196,12 @@ CSI 驱动在 v0.11.1 及之后版本支持 ARM64 环境的容器镜像,如果

需要替换的镜像如下,请通过下方链接的网页,确定各镜像合适的版本(如果无法正常访问 `k8s.gcr.io`,请考虑先[「搬运镜像」](./administration/offline.md#copy-images)):

| 原镜像名称 | 新镜像名称 |
|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
| `quay.io/k8scsi/livenessprobe` | [`k8s.gcr.io/sig-storage/livenessprobe`](https://kubernetes-csi.github.io/docs/livenessprobe.html#supported-versions) |
| `quay.io/k8scsi/csi-provisioner` | [`k8s.gcr.io/sig-storage/csi-provisioner`](https://kubernetes-csi.github.io/docs/external-provisioner.html#supported-versions) |
| `quay.io/k8scsi/csi-node-driver-registrar` | [`k8s.gcr.io/sig-storage/csi-node-driver-registrar`](https://kubernetes-csi.github.io/docs/node-driver-registrar.html#supported-versions) |
| 原镜像名称 | 新镜像名称 |
|--------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|
| `quay.io/k8scsi/livenessprobe` | [`registry.k8s.io/sig-storage/livenessprobe`](https://kubernetes-csi.github.io/docs/livenessprobe.html#supported-versions) |
| `quay.io/k8scsi/csi-provisioner` | [`registry.k8s.io/sig-storage/csi-provisioner`](https://kubernetes-csi.github.io/docs/external-provisioner.html#supported-versions) |
| `quay.io/k8scsi/csi-node-driver-registrar` | [`registry.k8s.io/sig-storage/csi-node-driver-registrar`](https://kubernetes-csi.github.io/docs/node-driver-registrar.html#supported-versions) |
| `quay.io/k8scsi/csi-resizer:` | [`registry.k8s.io/sig-storage/csi-resizer`](https://kubernetes-csi.github.io/docs/external-resizer.html#supported-versions) |

### Helm

Expand All @@ -209,23 +210,27 @@ CSI 驱动在 v0.11.1 及之后版本支持 ARM64 环境的容器镜像,如果
```yaml title="values.yaml"
sidecars:
livenessProbeImage:
repository: k8s.gcr.io/sig-storage/livenessprobe
repository: registry.k8s.io/sig-storage/livenessprobe
tag: "v2.6.0"
csiProvisionerImage:
repository: k8s.gcr.io/sig-storage/csi-provisioner
repository: registry.k8s.io/sig-storage/csi-provisioner
tag: "v2.2.2"
nodeDriverRegistrarImage:
repository: k8s.gcr.io/sig-storage/csi-node-driver-registrar
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
tag: "v2.5.0"
csiResizerImage:
repository: registry.k8s.io/sig-storage/csi-resizer
tag: "v1.8.0"
```

### kubectl

`k8s.yaml` 中部分镜像以及 `provisioner` sidecar 的启动参数进行替换(macOS 请换用 [gnu-sed](https://formulae.brew.sh/formula/gnu-sed)):

```shell
sed --in-place --expression='[email protected]/k8scsi/livenessprobe:[email protected]/sig-storage/livenessprobe:v2.6.0@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-provisioner:[email protected]/sig-storage/csi-provisioner:v2.2.2@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-node-driver-registrar:[email protected]/sig-storage/csi-node-driver-registrar:v2.5.0@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/livenessprobe:[email protected]/sig-storage/livenessprobe:v2.6.0@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-provisioner:[email protected]/sig-storage/csi-provisioner:v2.2.2@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-node-driver-registrar:[email protected]/sig-storage/csi-node-driver-registrar:v2.5.0@' k8s.yaml
sed --in-place --expression='[email protected]/k8scsi/csi-resizer:[email protected]/sig-storage/csi-resizer:v1.8.0@' k8s.yaml
sed --in-place --expression='s@enable-leader-election@leader-election@' k8s.yaml
```

0 comments on commit 0887e5c

Please sign in to comment.