kubezero/docs/Upgrade.md

109 lines
3.9 KiB
Markdown
Raw Normal View History

2020-11-26 17:37:10 +00:00
# Upgrade to KubeZero V2(Argoless)
2020-12-01 15:56:22 +00:00
## (optional) Upgrade control plane nodes / worker nodes
- Set kube version in the controller config to eg. `1.18`
- Update kube-controller and worker stacks with latest CFN code
- terminate controller node(s)
- once all controller nodes successfully upgraded replace worker nodes in a rolling fashion via. drain / terminate / rinse-repeat
## ArgoCD
- disable all auto-sync and "prune" features to prevent that eg. namespaces from previous apps get removed
2020-12-01 15:46:04 +00:00
- either remove auto-sync from old values.yaml and run deploy one last time, trigger kubezero sync !
- or disable manual via Argo UI starting with Kubezero app itself
2020-11-26 17:37:10 +00:00
2020-12-01 15:56:22 +00:00
- uninstall argo helm chart:
`helm uninstall kubezero -n argocd`
- remove all "argocd.argoproj.io/instance" labels from namespaces to prevent namespace removal later on:
`./scripts/remove_argo_ns.sh`
2020-11-26 17:37:10 +00:00
2020-12-01 15:56:22 +00:00
## KubeZero - Part 1
2020-11-30 17:30:06 +00:00
- migrate values.yaml to new structure, adapt as needed
2020-12-01 15:46:04 +00:00
& update new central kubezero location in git and merge cluster configs
2020-11-26 17:37:10 +00:00
2020-12-01 15:56:22 +00:00
- upgrade all CRDs:
2020-12-01 15:46:04 +00:00
`./bootstrap.sh crds all clusters/$CLUSTER ../../../kubezero/charts`
2020-12-01 15:56:22 +00:00
- upgrade first components:
2020-12-01 15:46:04 +00:00
`./bootstrap.sh deploy calico,cert-manager,kiam,aws-ebs-csi-driver,aws-efs-csi-driver clusters/$CLUSTER ../../../kubezero/charts`
2020-12-01 16:27:06 +00:00
## Istio
Due to changes of the ingress namespace resource the upgrade will cause a brief (~3-5 min) ingress service interruption !
2020-12-01 15:56:22 +00:00
2020-12-01 15:46:04 +00:00
- delete istio operators, to remove all pieces, remove operator itself
`./scripts/delete_istio_17.sh`
- deploy istio and istio-ingress via bootstrap.sh
2020-12-01 16:08:32 +00:00
`./bootstrap.sh deploy istio,istio-ingress clusters/$CLUSTER ../../../kubezero/charts`
2020-12-01 15:46:04 +00:00
- patch all VirtualServices via script to new namespace
`./scripts/patch_vs.sh`
2020-12-01 16:27:06 +00:00
Ingress service interruption ends.
2020-12-01 15:56:22 +00:00
## KubeZero - Part 2
- push kubezero & cluster config to git
2020-12-04 14:10:15 +00:00
- if logging incl. ElasticSearch is installed remove the old ECK operator first:
`./scripts/remove_old_eck.sh`
2020-12-01 15:56:22 +00:00
- upgrade all remaining components and install new ArgoCD:
2020-12-01 15:46:04 +00:00
`./bootstrap.sh deploy all clusters/$CLUSTER ../../../kubezero/charts`
2020-12-01 15:56:22 +00:00
## Verification / Tests
2020-12-01 15:46:04 +00:00
- verify argocd incl. kubezero app
2020-12-01 15:56:22 +00:00
- verify all argo apps status
2020-12-01 15:46:04 +00:00
- verify all the things
2020-11-30 17:30:06 +00:00
2020-12-01 15:56:22 +00:00
# Changelog
## Kubernetes 1.18
https://sysdig.com/blog/whats-new-kubernetes-1-18/
2020-11-26 17:37:10 +00:00
## High level / Admin changes
2020-12-01 16:08:32 +00:00
- ArgoCD is now optional and NOT required nor used during initial cluster bootstrap
- the bootstrap process now uses the same config and templates as the optional ArgoCD applications later on
- the bootstrap is can now be restarted at any time and considerably faster
- the top level KubeZero config for the ArgoCD app-of-apps is now also maintained via the gitops workflow. Changes can be applied by a simple git push rather than manual scripts
2020-11-26 17:37:10 +00:00
2020-11-30 17:30:06 +00:00
## Individual changes
2020-11-26 17:37:10 +00:00
2020-12-01 16:08:32 +00:00
### Calico
- version bump
2020-11-26 17:37:10 +00:00
### Cert-manager
2020-12-01 16:08:32 +00:00
- local issuers are now cluster issuer to allow them being used across namespaces
- all cert-manager resources moved into the cert-manager namespace
- version bump to 1.10
2020-11-26 17:37:10 +00:00
### Kiam
2020-12-01 16:08:32 +00:00
- set priorty class to cluster essential
- certificates are now issued by the cluster issuer
### EBS / EFS
- version bump
### Istio
- istio operator removed, deployment migrated to helm, various cleanups
- version bump to 1.8
- all ingress resources are now in the dedicated new namespace istio-ingress ( deployed via separate kubezero chart istio-ingress)
- set priorty class of ingress components to cluster essential
2020-11-26 17:37:10 +00:00
### Logging
2020-12-10 14:36:26 +00:00
- ES/Kibana version bump to 7.10
- ECK operator is now installed on demand in logging ns
- Custom event fields configurable via new fluent-bit chart
e.g. clustername could be added to each event allowing easy filtering in case multiple clusters stream events into a single central ES cluster
2020-11-26 17:37:10 +00:00
### ArgoCD
- version bump, new app of app architecure
### Metrics
- version bump
2020-12-01 16:08:32 +00:00
- all servicemonitor resources are now in the same namespaces as the respective apps to avoid namespace spanning deployments
2020-11-26 17:37:10 +00:00