2.8 KiB
Upgrade to KubeZero V2.20 / Kubernetes 1.20
CloudBender
Changes
Single node control plane
- Control
Upgrade
-
Set the specific wanted Kubernetes version in the controller config to eg.
v1.20.2
-
configure your AWS CLI profile as well as your kubectl context to cluster you want to upgrade.
-
verify your config ...
-
run ./scripts/upgrade_120.sh
-
update the CFN stack for kube-control-plane
Single node control plane
- will automatically be upgraded and the controller node replaced as part of the CFN update
Clustered control plane
-
replace controller instances one by one in no particular order
-
once confirmed that the upgraded 1.20 control plane is working as expected update the clustered control plane CFN stack once more with
LBType: none
to remove the AWS NLB fronting the Kubernetes API which is not required anymore. -
replace worker nodes in a rolling fashion via. drain / terminate / rinse-repeat
KubeZero
New features
NATS
Deploy NATS services
TimeCapsule
Providing backup solutions for KubeZero clusters:
- scheduled snapshots for EBS backed PVCs incl. custome retention and restore
Changes
General
- various version bumps
- removed deprecated nodeLabels from
failure-domain.beta.kubernetes.io/[region|zone]
totopology.kubernetes.io/[region|zone]
please adapt existing affinity rules !
Istio
- hardened and optimized settings for Envoy gateway proxies
- improved deployment strategy to reduce errors during upgrades
- Added various Grafana Dashboards
Metrics
- Added various dashboards for KubeZero modules
- Updated / improved dashboard organization incl. folders and tags
- Grafana Dashboards are now all provided via configmaps, no more state required, no manual changes persisted
- Grafana allows anonymous read-only access
- all dashboards ndefault to now-1h and prohibit less than 30s refresh
- Custom dashboards can easily be provided by simple installing a ConfigMap along with workloads in any namespace
Upgrade - Without ArgoCD
-
Update CRDs of all enabled components:
./bootstrap.sh crds all clusters/$CLUSTER
-
Prepare upgrade
- Remove legacy monitoring configmaps
- Remove previous Grafana stateful config
- Remove legacy Istio Enovyfilter
kubectl delete cm -n monitoring -l grafana_dashboard=1
kubectl delete pvc metrics-grafana -n monitoring
kubectl delete envoyfilter -A -l operator.istio.io/version=1.6.9
- Upgrade all components
./bootstrap.sh deploy all clusters/$CLUSTER
Upgrade - ArgoCD
- ArgoCD itself:
./bootstrap.sh deploy argocd clusters/$CLUSTER
- push latest cluster config to your git repo
- trigger sync in ArgoCD incl. prune starting with the KubeZero root app
( only if auto-sync is not enabled )
Verification / Tests
- check if all pods are RUNNING
- check any Ingress services
- ...