Skip to content

Original source: https://input.scs.community/scs-operator-hackathon-warmup#

Yaook SCS Operator Hackathon - Warm-Up

There is a bug in the Tempest job image - Tempest jobs will not start. Let's see how we can deal with that.

Running a modified Tempest operator

We modify the existing operator and hook it into the Yaook cluster.

Connection overview:

🧑‍💻 your laptop ↦ 🔧 "helper" jumphost VM ↦ ☁️ k8s cluster ↦ 🐺 Yaook namespace & pods

Preparing your workstation & cluster

If you don't have your own Yaook instance to work with from your own machine, Dataport kindly prepared a number of jumphost VMs with attached K8s clusters running a minimal "Quickstart" Yaook.

Log in via SSH as helper, password Secret2026!. Please add your names to the table to avoid collisions. You can use tmux to collaborate!

domain group
hackaton-helper-001.dsecurecloud.de group 1 - Tomek, Valentin, Armin, Max, Max
hackaton-helper-002.dsecurecloud.de Tempest Group
hackaton-helper-003.dsecurecloud.de group 3 - Fabian, Matthias H., Max, David
hackaton-helper-004.dsecurecloud.de group 4 - Till, Robert, Stefan, Felix

Clone the Yaook operator repo and enter the directory: git clone --branch operator-template https://gitlab.com/yaook/operator.git && cd operator

Install the upstream Tempest operator chart to your cluster: helm upgrade --install -n yaook --version 1.2.1 tempest-operator yaook.cloud/tempest-operator

Downgrade the image used for Tempest jobs

The images operators use in the manifests they manage are defined in yaook/assets/pinned_version.yml. The last working image version for all Tempest versions was 1.0.139.

Starting a devpod

In tools you'll find generate_devpod.sh. It generates a combined manifest to run a pod with the necessary roles to execute an operator on it. Create and apply it for tempest: ./generate-devpod.sh tempest && kubectl apply -n yaook -f devpod-tempest.yaml

Have a look via k9s (:namespace, select yaook, press l on devpod-tempest-0) and watch it start up.

Stopping the upstream operator

Scale down the Tempest operator Deployment via k9s, or by running kubectl -n yaook scale --replicas=0 deployment/tempest-operator

Getting your code into the devpod

Run a port forwarding towards the devpod in the background: kubectl port-forward svc/devpod-tempest -n yaook 2222:22 &

Upload your code (from within ~/operator) to it: rsync -e 'ssh -p 2222 -i ~/.ssh/id_devpod' -zraHEAXSP --exclude .git --exclude .direnv --exclude .mypy_cache --delete --exclude _build ./ root@localhost:/data/src/

Attach to the devpod

Either use k9s to get a shell there, or use ssh: ssh -p 2222 -i ~/.ssh/id_devpod root@localhost

Install requirements and operator

Go to /data/src/. We need an HTTP proxy within the Dataport clusters: https_proxy="http://10.65.117.35:3128" pip install -e .

Run the operator

Finally! python3 -m yaook.op -vvv tempest run

Verify that it's working

Start a TempestJob (from the jumphost VM): kubectl apply -n yaook -f https://gitlab.com/yaook/operator/-/raw/devel/docs/user/explanations/examples/tempest_with_loadlist.yaml

You should see it starting and can follow it's logs with k9s. But don't wait for it to finish, it won't pass all checks anyhow.

Fallback - modifying the Tempest operator deployment

Patch the operator deployment:

1      containers:
2      - args:
3        - tempest
4        - run
5        env:
6+        - name: YAOOK_OP_VERSIONS_OVERRIDE
7+          value: |
8+            registry.yaook.cloud/yaook/tempest-41.0.0: registry.yaook.cloud/yaook/tempest-41.0.0:1.0.131