46f5ccfc55
Update StarlingX applications during Kubernetes upgrades according to their metadata. Applications are updated if they have "k8s_upgrades:auto_update" set to true on their metadata.yaml file. The ones that have "k8s_upgrades:timing" set to "pre" are updated during the "kube-upgrade-start" phase. The ones that set "k8s_upgrades:timing" to "post" are updated during the "kube-upgrade-complete" phase. In order to better support application updates during kube-upgrade-start, two new statuses were added: 'upgrade-starting' and 'upgrade-starting-failed'. The 'upgrade-starting' state is the new initial state when triggering a Kubernetes upgrade. If starting the upgrade fails, then the status is updated to 'upgrade-starting-failed' and users can either abort the upgrade (only available in simplex loads) or try starting it again. No changes were made to kube-upgrade-complete in that regard because at that point a new Kubernetes version is already in place. A review was raised to nfv-vim to reflect the new statuses on the Kubernetes orchestrated upgrade code: https://review.opendev.org/c/starlingx/nfv/+/906594 Application auto updates can be retried when restarting a Kubernetes upgrade that previously failed due to a failing app. A bug that was preventing the k8s_upgrade metadata section from being parsed was fixed by this commit as well. Test Plan: PASS: build-pkgs -a && build-image PASS: Create a new platform-integ-apps tarball adding "k8s_upgrades:auto_update=true" and "k8s_upgrades:timing=pre" to metadata.yaml. Add the new tarball to /usr/local/share/applications/helm/. Run kube-upgrade-start. Check if platform-integ-apps was correctly updated. Check if no other apps were updated. PASS: Create a new metrics-server tarball adding "k8s_upgrades:auto_update=true" and "k8s_upgrades:timing=post" to to metadata.yaml. Add the new tarball to /usr/local/share/applications/helm/. Run kube-upgrade-complete. Check if metrics-server was correctly updated. Check if no other apps were updated. PASS: Create a new platform-integ-apps tarball adding "k8s_upgrades:auto_update=true" and "k8s_upgrades:timing=pre" to metadata.yaml. Add the new tarball to /usr/local/share/applications/helm/. Restart sysinv to update the database. Replace the platform-integ-apps tarball with another tarball that does not have a metadata.yaml file. Check if an error is logged when running kube-upgrade-start reporting that platform-integ-apps failed to be updated. Confirm that the Kubernetes upgrade was not started. Abort Kubernetes upgrade Check if upgrade was successfully aborted PASS: Create a new metrics-server tarball adding "k8s_upgrades:auto_update=true" and "k8s_upgrades:timing=post" to to metadata.yaml. Add the new tarball to /usr/local/share/applications/helm/. Restart sysinv to update the database. Replace the snmp tarball with another tarball that does not have a metadata.yaml file. Check if an error is logged when running kube-upgrade-complete reporting that metrics-server failed to be updated. Check if the Kubernetes upgrade was marked as completed. PASS: AIO-SX fresh install Manual upgrade to Kubernetes v1.27.5 Check if upgrade was successfuly done PASS: AIO-SX fresh install Orchestrated upgrade to Kubernetes v1.27.5 Check if upgrade was successfuly done PASS: AIO-SX fresh install with Kubernetes v1.24.4 Orchestrated upgrade to Kubernetes v1.27.5 Check if upgrade was successfuly done Story: 2010929 Task: 49416 Change-Id: I31333bf44501c7ad1688635b75c7fcef11513026 Signed-off-by: Igor Soares <Igor.PiresSoares@windriver.com> |
||
---|---|---|
api-ref/source | ||
config-gate | ||
controllerconfig | ||
devstack | ||
doc | ||
releasenotes | ||
storageconfig | ||
sysinv | ||
tmp/patch-scripts/EXAMPLE_SYSINV/scripts | ||
tools/docker/images | ||
tsconfig | ||
workerconfig | ||
.gitignore | ||
.gitreview | ||
.yamllint | ||
.zuul.yaml | ||
CONTRIBUTORS.wrs | ||
LICENSE | ||
README.rst | ||
bindep.txt | ||
centos_build_layer.cfg | ||
centos_dev_wheels.inc | ||
centos_iso_image.inc | ||
centos_pkg_dirs | ||
centos_pkg_dirs_containers | ||
centos_stable_wheels.inc | ||
debian_build_layer.cfg | ||
debian_iso_image.inc | ||
debian_pkg_dirs | ||
debian_stable_wheels.inc | ||
test-requirements.txt | ||
tox.ini |
README.rst
config
The starlingx/config repository handles the StarlingX configuration management services.
Its key component is the System Inventory Service (Sysinv), which provides the system command-line interface (CLI)1.
This repository is not intended to be developed standalone, but rather as part of the StarlingX Source System, which is defined by the StarlingX manifest2.