From 3d44fbce238dd0a3c3520364695d0c62f237225d Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Mon, 19 May 2025 15:10:12 +0200 Subject: syz-cluster: use kubectl for one-off fetch kernels run Refactor the cron job that pulls the base kernels once in a while to enable its manual triggering without installing the Argo CLI utility. --- syz-cluster/kernel-disk/fetch-kernels-cron.yaml | 64 +------------------- syz-cluster/kernel-disk/fetch-kernels-once.yaml | 10 ++++ .../kernel-disk/fetch-kernels-template.yaml | 70 ++++++++++++++++++++++ syz-cluster/kernel-disk/kustomization.yaml | 1 + 4 files changed, 83 insertions(+), 62 deletions(-) create mode 100644 syz-cluster/kernel-disk/fetch-kernels-once.yaml create mode 100644 syz-cluster/kernel-disk/fetch-kernels-template.yaml (limited to 'syz-cluster/kernel-disk') diff --git a/syz-cluster/kernel-disk/fetch-kernels-cron.yaml b/syz-cluster/kernel-disk/fetch-kernels-cron.yaml index 640bb0f38..b5d1b956b 100644 --- a/syz-cluster/kernel-disk/fetch-kernels-cron.yaml +++ b/syz-cluster/kernel-disk/fetch-kernels-cron.yaml @@ -11,65 +11,5 @@ spec: concurrencyPolicy: "Replace" startingDeadlineSeconds: 0 workflowSpec: - entrypoint: main - podMetadata: - labels: - tier: workflow - serviceAccountName: argo-executor-ksa - templates: - - name: main - parallelism: 1 - steps: - - - name: query-trees - template: query-trees-template - - - name: iterate-trees - template: process-tree - arguments: - parameters: - - name: tree - value: "{{item}}" - withParam: "{{=jsonpath(steps['query-trees'].outputs.result, '$.trees')}}" - continueOn: - failed: true - - name: query-trees-template - http: - url: "http://controller-service:8080/trees" - method: "GET" - - name: process-tree - inputs: - parameters: - - name: tree - volumes: - - name: git-repo - persistentVolumeClaim: - claimName: base-kernel-repo-pv-claim - container: - image: alpine/git:latest - imagePullPolicy: IfNotPresent - volumeMounts: - - name: git-repo - mountPath: /repo.git - resources: - requests: - cpu: 4 - memory: 8G - limits: - cpu: 8 - memory: 16G - command: - - "/bin/sh" - - "-c" - - | - cd /repo.git - if [ ! -d "refs" ]; then - git init --bare - fi - NAME="{{=jsonpath(inputs.parameters.tree, '$.name')}}" - REPO="{{=jsonpath(inputs.parameters.tree, '$.URL')}}" - BRANCH="{{=jsonpath(inputs.parameters.tree, '$.branch')}}" - echo "${NAME}: ${REPO}/${BRANCH}" - if ! git config --get remote.${NAME}.url > /dev/null; then - git remote add ${NAME} ${REPO} - fi - git fetch ${NAME} ${BRANCH} --tags - git tag -f ${NAME}-head ${NAME}/${BRANCH} + workflowTemplateRef: + name: fetch-kernels-workflow-template diff --git a/syz-cluster/kernel-disk/fetch-kernels-once.yaml b/syz-cluster/kernel-disk/fetch-kernels-once.yaml new file mode 100644 index 000000000..1bef9e681 --- /dev/null +++ b/syz-cluster/kernel-disk/fetch-kernels-once.yaml @@ -0,0 +1,10 @@ +# Copyright 2025 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + generateName: fetch-kernels-manual- +spec: + workflowTemplateRef: + name: fetch-kernels-workflow-template diff --git a/syz-cluster/kernel-disk/fetch-kernels-template.yaml b/syz-cluster/kernel-disk/fetch-kernels-template.yaml new file mode 100644 index 000000000..4f485708b --- /dev/null +++ b/syz-cluster/kernel-disk/fetch-kernels-template.yaml @@ -0,0 +1,70 @@ +# Copyright 2025 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +apiVersion: argoproj.io/v1alpha1 +kind: WorkflowTemplate +metadata: + name: fetch-kernels-workflow-template +spec: + entrypoint: main + podMetadata: + labels: + tier: workflow + serviceAccountName: argo-executor-ksa + templates: + - name: main + parallelism: 1 + steps: + - - name: query-trees + template: query-trees-template + - - name: iterate-trees + template: process-tree + arguments: + parameters: + - name: tree + value: "{{item}}" + withParam: "{{=jsonpath(steps['query-trees'].outputs.result, '$.trees')}}" + continueOn: + failed: true + - name: query-trees-template + http: + url: "http://controller-service:8080/trees" + method: "GET" + - name: process-tree + inputs: + parameters: + - name: tree + volumes: + - name: git-repo + persistentVolumeClaim: + claimName: base-kernel-repo-pv-claim + container: + image: alpine/git:latest + imagePullPolicy: IfNotPresent + volumeMounts: + - name: git-repo + mountPath: /repo.git + resources: + requests: + cpu: 4 + memory: 8G + limits: + cpu: 8 + memory: 16G + command: + - "/bin/sh" + - "-c" + - | + cd /repo.git + if [ ! -d "refs" ]; then + git init --bare + fi + NAME="{{=jsonpath(inputs.parameters.tree, '$.name')}}" + REPO="{{=jsonpath(inputs.parameters.tree, '$.URL')}}" + BRANCH="{{=jsonpath(inputs.parameters.tree, '$.branch')}}" + echo "${NAME}: ${REPO}/${BRANCH}" + if ! git config --get remote.${NAME}.url > /dev/null; then + git remote add ${NAME} ${REPO} + fi + git fetch ${NAME} ${BRANCH} --tags + git tag -f ${NAME}-head ${NAME}/${BRANCH} diff --git a/syz-cluster/kernel-disk/kustomization.yaml b/syz-cluster/kernel-disk/kustomization.yaml index 9963b1cf5..f25926eaa 100644 --- a/syz-cluster/kernel-disk/kustomization.yaml +++ b/syz-cluster/kernel-disk/kustomization.yaml @@ -2,4 +2,5 @@ # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. resources: + - fetch-kernels-template.yaml - fetch-kernels-cron.yaml -- cgit mrf-deployment