action #124385
closedtest and release the rmt containers
0%
Description
Part of the BCI space are the rmt containers.
rmt-helm
- helm chart. Bruno Leon maintainer rmt-server-image
- images, SCC team responsible.
Contact: Natnael Getahun
Refresh strategy for the images would be the usual RPM or description changed.
helm chart could be handled separately, likely needs some kubernetes setup if we want to test it.
Weblinks¶
- https://documentation.suse.com/sles/15-SP5/html/SLES-all/book-rmt.html
- https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/16313 (check the images would be the usual RPM or description changed.
Acceptance criteria¶
- Setup a test run we want to test
rmt-server-image
- Integrate test run in our https://gitlab.suse.de/qac/container-release-bot/ it.
Files
Updated by jlausuch almost 2 years ago
- Project changed from openQA Tests (public) to Containers and images
- Status changed from New to Workable
Updated by jlausuch almost 2 years ago
Updated by ngetahun almost 2 years ago
@jlausuch I see that the PR is merged, what are the next steps?
Updated by jlausuch almost 2 years ago
Ok, there are 2 main blockers:
1) The helm chart is pulling the images from registry.suse.com:
https://github.com/SUSE/helm-charts/blob/main/rmt-helm/values.yaml
So, this is not the images we want to test.
The images we want to test are in IBS before they are released.
So, you would need to do some string replacement in that file to use these images instead:
registry.suse.de/suse/sle-15-sp4/update/cr/totest/images/suse/rmt-mariadb:latest
registry.suse.de/suse/sle-15-sp4/update/cr/totest/images/suse/rmt-mariadb-client:latest
registry.suse.de/suse/sle-15-sp4/update/cr/totest/images/suse/rmt-nginx:latest
registry.suse.de/suse/sle-15-sp4/update/cr/totest/images/suse/rmt-server:latest
I guess that's feasible to do it at test execution time (in openQA).
2) Besides this, the problem with these containers is that there are several containers which are depending on each other:
Our container bot can watch for image updates in individual images, not in batch of images. So, if we take rmt-helm
as the reference image, we would trigger the tests only when this image gets an update, and if tests are green, the bot would release ONLY rmt-helm
image...
@msmeissn I am not sure how to solve this second issue. Any thoughts?
Updated by msmeissn almost 2 years ago
The helm chart uses version tags
registry.suse.com/suse/rmt-mariadb:10.5
registry.suse.com/suse/rmt-mariadb-client:10.5
registry.suse.com/suse/rmt-server:2.8
registry.suse.com/bci/bci-micro:15.3
registry.suse.com/suse/rmt-nginx:1.19
and the tags do not change except when the sources of the helm chart are touched.
so lets try:
containers:
- Have workflows for each rmt container, usual change detection:
In the workflow, use the helm chart from CR (not the released helm chart) but modified to point ToTest :latest containers and wrap testing around that.
If it works, release respective container.
This mapping to :latest allows version upgrades of e.g. rmt-server container or mariadb.... The containers will be released here, already tested but not yet picked up outside.
- Have a workflow for the helm chart on change detection
Use helm chart from ToTest, do not modify it ( so use containers from official registry.suse.com )
If it works, release helm chart.
This should work as the usual workflow will be:
- we update the container sources first
- we update helm chart sources second
Updated by jlausuch over 1 year ago
Meeting with @ngetahun and @ph03nix:¶
- the container-release-bot has the limitation that it treats the images independently from each other. It can't test and release a batch of images at the same time (atomically).
- This is ok, because the only crucial image that needs testing is the
rmt-server-image
. - For now we will enable the pipeline for the
rmt-server-image
image only. The other images don't receive a lot of updates anyway. The most important image that should be tested and updated automatically is the server. - In the future, we can add additional tests for other images (e.g. helm chart) if we need automatic updates for those as well. The tests coverage doesn't need to be the same as for the server, but that's up to the implementer.
AP's:¶
- @ngetahun: make sure we want to target 15-SP5 base RMT images: https://build.suse.de/project/show/SUSE:SLE-15-SP5:Update:CR
- @ngetahun: check why
rmt-helm
image is not in 15-SP5 project: https://build.suse.de/project/show/SUSE:SLE-15-SP5:Update:CR (it exists in 15-SP4 project) - @ngetahun: propose a MR in https://gitlab.suse.de/qac/container-release-bot/-/blob/main/containers/app.yaml adding a new yaml block for the RMT server container
- @ngetahun: check if current test for rmt server cover the needs: https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/tests/containers/containerd_rmt.pm
- @ph03nix to help making sure the test is scheduled in openQA. Since we don't need the full host matrix as for other BCI app images, instead of putting it in the BCI Containers / Application Images sub-group I propose to create a new sub-group for RMT only. Then, we can pick some host (e.g. 15-SP5) to run the containers on.
Open Questions¶
Updated by ph03nix over 1 year ago
- Status changed from Workable to In Progress
- Assignee set to ph03nix
Updated by ph03nix over 1 year ago
Meeting with Natnael - We concluded that from here he will write a simple test proposal (in bash/pseudocode) and based on this proposal we can evaluate how to proceed.
ATM we have the blocker, that Natnael is blocked my missing openQA knowledge and we are blocked due to missing helm knowledge. A basic test setup might help us to resolve this blocker and decide, how to advance.
Updated by ph03nix over 1 year ago
Here's the test that Natnael came up with. We need to create a openQA test for it or see if https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/16313 can be used
export REPO="https://github.com/SUSE/helm-charts/archive/refs/heads/main.zip"
wget --quiet --no-check-certificate $REPO
unzip main.zip
export RMT_HELM_VALUES="https://gitlab.suse.de/QA-APAC-I/testing/-/raw/master/data/rmtcontainer/myvalue.yaml"
wget --no-check-certificate $RMT_HELM_VALUES
helm install rmt ./helm-charts-main/rmt-helm -f myvalue.yaml
helm list
kubectl get pods | grep "rmt" # Should see 3 pods running
The test code looks rather simple. Maybe it's ok if we do it, since we are anyways having some experience with helm and k3s.
Updated by ph03nix over 1 year ago
- Description updated (diff)
- Assignee changed from rbranco to ph03nix
Updated by rbranco over 1 year ago
Updated by rbranco over 1 year ago
Updated by ph03nix over 1 year ago
The rmt-nginx container will be replaces by suse/nginx container image. This should not affect our testing however, as we should be using the provided helm chart, which should be updated as well.
Updated by ph03nix over 1 year ago
Meeting with Ricardo and Natnael¶
RMT image location in IBS: https://build.suse.de/package/show/SUSE:SLE-15-SP5:Update:CR/rmt-server-image
I can't pull the RMT CR image from registry.suse.de/suse/sle-15-sp5/update/cr/totest/images/suse/rmt-server
- this needs to be done Natnael.
Next steps¶
- Natnael will ensure the CR images get published to registry.suse.de
- We need to inject the testing registry link into the helm chart (e.g. using the
--set app.image.repository=
CLI option?) - Ensure openQA test runs with the testing registry are working
- Integrate the testing openQA run into the container-release-bot
Updated by ph03nix over 1 year ago
The container location is in registry.suse.de/suse/sle-15-sp5/update/cr/totest/images/suse/rmt-server:latest
Updated by rbranco over 1 year ago
Testing by image/tag:
https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/17606
Updated by rbranco over 1 year ago
This PR tests all 4 components, not just rmt-server:
https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/17697
Updated by rbranco over 1 year ago
Updated by rbranco over 1 year ago
New PR & MR superseding the above:
https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/17714
https://gitlab.suse.de/qac/container-release-bot/-/merge_requests/180
https://gitlab.suse.de/qac/qac-openqa-yaml/-/merge_requests/1315
Still missing the Container Release Bot glue.
Updated by rbranco over 1 year ago
Fix the issue with the test running on BCI environment:
https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/17729
https://gitlab.suse.de/qac/container-release-bot/-/merge_requests/182
Updated by rbranco over 1 year ago
It's working now:
https://openqa.suse.de/tests/overview?distri=sle&version=15-SP5&build=9.46_rmt-server-image&groupid=445
I need to remove unneeded architectures and distros where it's failing.
Updated by rbranco over 1 year ago
Updated by rbranco over 1 year ago
By Felix:
Add BCI Name:
https://gitlab.suse.de/qac/container-release-bot/-/merge_requests/186
Skip helm-rmt on PPC:
https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/17774
Updated by rbranco over 1 year ago
Hopefully the final PR to skip running on k8s as runtime:
https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/17790