# Holds the runner's working directory (/data): the .runner registration file # and, optionally, the config file. kind: PersistentVolumeClaim apiVersion: v1 metadata: name: runner-vol spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: standard --- # Holds the rootless Docker daemon's data root, i.e. the images pulled for jobs. # Without it, the image cache is lost whenever the pod is recreated and every job # re-pulls its images. Size it for the images you expect to cache. kind: PersistentVolumeClaim apiVersion: v1 metadata: name: docker-vol spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: standard --- apiVersion: v1 data: # The registration token can be obtained from the web UI, API or command-line. # You can also set a pre-defined global runner registration token for the Gitea instance via # `GITEA_RUNNER_REGISTRATION_TOKEN`/`GITEA_RUNNER_REGISTRATION_TOKEN_FILE` environment variable. token: << base64 encoded registration token >> kind: Secret metadata: name: runner-secret type: Opaque --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: runner name: runner spec: replicas: 1 selector: matchLabels: app: runner strategy: {} template: metadata: labels: app: runner spec: restartPolicy: Always volumes: - name: runner-data persistentVolumeClaim: claimName: runner-vol - name: docker-data persistentVolumeClaim: claimName: docker-vol securityContext: # The dind-rootless image runs as the `rootless` user (UID/GID 1000); # fsGroup makes both volumes writable for it. fsGroup: 1000 containers: - name: runner image: gitea/runner:nightly-dind-rootless imagePullPolicy: Always env: - name: DOCKER_HOST value: tcp://localhost:2376 - name: DOCKER_CERT_PATH value: /certs/client - name: DOCKER_TLS_VERIFY value: "1" - name: GITEA_INSTANCE_URL value: http://gitea-http.gitea.svc.cluster.local:3000 - name: GITEA_RUNNER_REGISTRATION_TOKEN valueFrom: secretKeyRef: name: runner-secret key: token securityContext: privileged: true volumeMounts: - name: runner-data mountPath: /data # The rootless daemon keeps its images here, not under /data. - name: docker-data mountPath: /home/rootless/.local/share/docker