Skip to content

Commit

Permalink
Updated upgrade documentation
Browse files Browse the repository at this point in the history
Signed-off-by: Roberto Bonafiglia <roberto.bonafiglia@suse.com>
  • Loading branch information
rbrtbnfgl committed Mar 30, 2023
1 parent 21e46b7 commit bec43b3
Showing 1 changed file with 28 additions and 8 deletions.
36 changes: 28 additions & 8 deletions Documentation/upgrade.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,37 @@

Flannel upgrade/downgrade procedure

There are two ways of changing flannel version in the running cluster:
There are different ways of changing flannel version in the running cluster:

*1. Remove old resources definitions and install a new one.*
## Remove old resources definitions and install a new one.
* Pros: Cleanest way of managing resources of the flannel deployment and no manual validation required as long as no additional resources was created by administrators/operators
* Cons: Massive networking outage within a cluster during the version change

To follow that approach one just needs to have a definition of the current version of flannel and the new one. kubectl delete -f <old>.yaml and kubectl create -f <new>.yaml will do the thing

*2. On the fly version*

*1. Delete all the flannel resources using kubectl*
```bash
kubectl -n kube-flannel delete daemonset kube-flannel-ds
kubectl -n kube-flannel delete configmap kube-flannel-cfg
kubectl -n kube-flannel delete serviceaccount flannel
kubectl delete clusterrolebinding.rbac.authorization.k8s.io flannel
kubectl delete clusterrole.rbac.authorization.k8s.io flannel
kubectl delete namespace kube-flannel
```

*2. Install the newer version of flannel and reboot the nodes*

## On the fly version
* Pros: Less disruptive way of changing flannel version, easier to do
* Cons: Some version may have changes which can't be just replaced and may need resources cleanup and/or rename, manual resources comparison required

To do on the fly update both old and new yaml should be compared. Resources in the new yaml with the same name or new ones can be left as is. Resources which exist in old yaml but are missing in the new yaml need to be removed right after the version change. After all of the changes are validated one can just use kubectl create -f <new>.yaml and check that version changed. After that resources which are missing a new applied version can be safely deleted.

If the update is done from newer version as 0.20.2 it can be done using kubectl
```bash
kubectl apply -f /~https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
```
In case of error on the labeling follow the previous way.

## Using the helm repository

From version 0.21.4 flannel is deployed on an helm repository at `https://flannel-io.github.io/flannel/` it will be possible to manage the update directly with helm.
```bash
helm upgrade flannel --set podCidr="10.244.0.0/16" --namespace kube-flannel flannel/flannel
```

0 comments on commit bec43b3

Please sign in to comment.