1# Secret data.2# You will need to retrive this from the web UI, and your Forgejo instance must be running v1.21+3# Alternatively, create this with4# kubectl create secret generic runner-secret --from-literal=token=your_offline_token_here5apiVersion: v16stringData:7 token: your_offline_secret_here8kind: Secret9metadata:10 name: runner-secret11---12apiVersion: apps/v113kind: Deployment14metadata:15 labels:16 app: forgejo-runner17 name: forgejo-runner18spec:19 # Two replicas means that if one is busy, the other can pick up jobs.20 replicas: 221 selector:22 matchLabels:23 app: forgejo-runner24 strategy: {}25 template:26 metadata:27 creationTimestamp: null28 labels:29 app: forgejo-runner30 spec:31 restartPolicy: Always32 volumes:33 - name: docker-certs34 emptyDir: {}35 - name: runner-data36 emptyDir: {}37 # Initialise our configuration file using offline registration38 # https://forgejo.org/docs/v1.21/admin/actions/#offline-registration39 initContainers:40 - name: runner-register41 image: code.forgejo.org/forgejo/runner:3.2.042 command: ["forgejo-runner", "register", "--no-interactive", "--token", $(RUNNER_SECRET), "--name", $(RUNNER_NAME), "--instance", $(FORGEJO_INSTANCE_URL)]43 env:44 - name: RUNNER_NAME45 valueFrom:46 fieldRef:47 fieldPath: metadata.name48 - name: RUNNER_SECRET49 valueFrom:50 secretKeyRef:51 name: runner-secret52 key: token53 - name: FORGEJO_INSTANCE_URL54 value: http://forgejo-http.forgejo.svc.cluster.local:300055 resources:56 limits:57 cpu: "0.50"58 memory: "64Mi"59 volumeMounts:60 - name: runner-data61 mountPath: /data62 containers:63 - name: runner64 image: code.forgejo.org/forgejo/runner:3.0.065 command: ["sh", "-c", "while ! nc -z localhost 2376 </dev/null; do echo 'waiting for docker daemon...'; sleep 5; done; forgejo-runner daemon"]66 env:67 - name: DOCKER_HOST68 value: tcp://localhost:237669 - name: DOCKER_CERT_PATH70 value: /certs/client71 - name: DOCKER_TLS_VERIFY72 value: "1"73 volumeMounts:74 - name: docker-certs75 mountPath: /certs76 - name: runner-data77 mountPath: /data78 - name: daemon79 image: docker:23.0.6-dind80 env:81 - name: DOCKER_TLS_CERTDIR82 value: /certs83 securityContext:84 privileged: true85 volumeMounts:86 - name: docker-certs87 mountPath: /certs