diff --git a/.gitea/workflows/build-runner-images.yml b/.gitea/workflows/build-runner-images.yml deleted file mode 100644 index 9be5692..0000000 --- a/.gitea/workflows/build-runner-images.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: Build and push runner images - -on: - push: - paths: - - 'k8s/infra/forgejo-runner/Dockerfile.golang' - - 'k8s/infra/forgejo-runner/Dockerfile.rust' - - 'k8s/infra/forgejo-runner/Dockerfile.node' - branches: - - main - -jobs: - build-runners: - runs-on: golang - env: - REGISTRY: forgejo.riotpiao.com - IMAGE_BASE: forgejo.riotpiao.com/rock - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Get short SHA - id: sha - run: | - SHORT_SHA=$(git rev-parse --short HEAD) - echo "short_sha=${SHORT_SHA}" >> $GITHUB_OUTPUT - - - name: Registry login - run: | - echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" \ - --username "${REGISTRY_USER}" --password-stdin - env: - REGISTRY_USER: ${{ secrets.FORGEJO_REGISTRY_USER }} - REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }} - - - name: Build and push golang-runner - if: contains(github.event.head_commit.modified, 'Dockerfile.golang') - run: | - docker build -f k8s/infra/forgejo-runner/Dockerfile.golang \ - -t "${IMAGE_BASE}/forgejo-runner-golang:${{ steps.sha.outputs.short_sha }}" \ - -t "${IMAGE_BASE}/forgejo-runner-golang:latest" \ - . - docker push "${IMAGE_BASE}/forgejo-runner-golang:${{ steps.sha.outputs.short_sha }}" - docker push "${IMAGE_BASE}/forgejo-runner-golang:latest" - echo "✓ Pushed golang-runner" - - - name: Build and push rust-runner - if: contains(github.event.head_commit.modified, 'Dockerfile.rust') - run: | - docker build -f k8s/infra/forgejo-runner/Dockerfile.rust \ - -t "${IMAGE_BASE}/forgejo-runner-rust:${{ steps.sha.outputs.short_sha }}" \ - -t "${IMAGE_BASE}/forgejo-runner-rust:latest" \ - . - docker push "${IMAGE_BASE}/forgejo-runner-rust:${{ steps.sha.outputs.short_sha }}" - docker push "${IMAGE_BASE}/forgejo-runner-rust:latest" - echo "✓ Pushed rust-runner" - - - name: Build and push node-runner - if: contains(github.event.head_commit.modified, 'Dockerfile.node') - run: | - docker build -f k8s/infra/forgejo-runner/Dockerfile.node \ - -t "${IMAGE_BASE}/forgejo-runner-node:${{ steps.sha.outputs.short_sha }}" \ - -t "${IMAGE_BASE}/forgejo-runner-node:latest" \ - . - docker push "${IMAGE_BASE}/forgejo-runner-node:${{ steps.sha.outputs.short_sha }}" - docker push "${IMAGE_BASE}/forgejo-runner-node:latest" - echo "✓ Pushed node-runner" diff --git a/k8s/infra/forgejo-runner/Dockerfile.golang b/k8s/infra/forgejo-runner/Dockerfile.golang deleted file mode 100644 index 6e44dd7..0000000 --- a/k8s/infra/forgejo-runner/Dockerfile.golang +++ /dev/null @@ -1,12 +0,0 @@ -FROM code.forgejo.org/forgejo/runner:6 - -# Install Node.js + Docker client (needed for GitHub Actions + docker build) -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - nodejs \ - npm \ - docker.io && \ - rm -rf /var/lib/apt/lists/* - -# Verify installations -RUN docker --version && node --version && git --version diff --git a/k8s/infra/forgejo-runner/Dockerfile.node b/k8s/infra/forgejo-runner/Dockerfile.node deleted file mode 100644 index c40253a..0000000 --- a/k8s/infra/forgejo-runner/Dockerfile.node +++ /dev/null @@ -1,11 +0,0 @@ -FROM code.forgejo.org/forgejo/runner:6 - -# Install Docker client (forgejo/runner base doesn't include it) -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - docker.io && \ - rm -rf /var/lib/apt/lists/* - -# Verify installations -RUN node --version && docker --version && git --version -# Trigger node-runner build with docker diff --git a/k8s/infra/forgejo-runner/Dockerfile.rust b/k8s/infra/forgejo-runner/Dockerfile.rust deleted file mode 100644 index 621b301..0000000 --- a/k8s/infra/forgejo-runner/Dockerfile.rust +++ /dev/null @@ -1,16 +0,0 @@ -FROM code.forgejo.org/forgejo/runner:6 - -# Install Node.js + Rust (needed for GitHub Actions checkout@v4, etc.) -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - nodejs \ - npm && \ - rm -rf /var/lib/apt/lists/* - -# Install Rust -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - -ENV PATH="/root/.cargo/bin:${PATH}" - -# Verify installations -RUN docker --version && node --version && git --version && rustc --version diff --git a/k8s/infra/forgejo-runner/templates/configmap.yaml b/k8s/infra/forgejo-runner/templates/configmap.yaml index c73d992..30334e9 100644 --- a/k8s/infra/forgejo-runner/templates/configmap.yaml +++ b/k8s/infra/forgejo-runner/templates/configmap.yaml @@ -36,3 +36,4 @@ data: valid_volumes: - /docker-certs/client network: host + docker_host: automount diff --git a/k8s/infra/forgejo-runner/templates/deployment.yaml b/k8s/infra/forgejo-runner/templates/deployment.yaml index 6b11c26..f60ab36 100644 --- a/k8s/infra/forgejo-runner/templates/deployment.yaml +++ b/k8s/infra/forgejo-runner/templates/deployment.yaml @@ -70,6 +70,8 @@ spec: mountPath: /data - name: docker-certs mountPath: /docker-certs + - name: docker-sock + mountPath: /run - name: homelab-ca mountPath: /etc/ssl/certs/homelab-ca.pem subPath: ca.crt @@ -89,6 +91,8 @@ spec: volumeMounts: - name: docker-certs mountPath: /docker-certs + - name: docker-sock + mountPath: /run - name: dind-storage mountPath: /var/lib/docker - name: homelab-ca @@ -113,6 +117,8 @@ spec: claimName: {{ .Release.Name }}-dind - name: docker-certs emptyDir: {} # DinD regenerates mTLS certs on each start + - name: docker-sock + emptyDir: {} # Shared docker socket between dind and runner - name: homelab-ca # homelab-ca is a ConfigMap (public CA trust bundle), not a Secret. # The volumeMounts use subPath: ca.crt to project the single cert file. diff --git a/k8s/infra/forgejo-runner/values-node.yaml b/k8s/infra/forgejo-runner/values-node.yaml index 2015d39..e75a0aa 100644 --- a/k8s/infra/forgejo-runner/values-node.yaml +++ b/k8s/infra/forgejo-runner/values-node.yaml @@ -2,15 +2,14 @@ # runner instance. Only runner.name and runner.labels differ -- everything # else (image, dind, persistence, tolerations, nodeSelector) is shared. # -# node:22-bookworm ships Node natively. Docker client installed via workflow step if needed. -# (homelab has no CI; custom runner images built manually if desired) -# Bootstrap with runner image (already has Node.js), CI builds custom +# Label image: node:22-bookworm — Debian, root, apt-get, Node.js, npm, git. +# Install docker in workflow steps as needed. runner: image: repository: code.forgejo.org/forgejo/runner tag: "6" name: node-runner - labels: "node:docker://code.forgejo.org/forgejo/runner:6" + labels: "node:docker://node:22-bookworm" # GC CronJob renders only from the default (golang) values to avoid duplicates gc: diff --git a/k8s/infra/forgejo-runner/values-rust.yaml b/k8s/infra/forgejo-runner/values-rust.yaml index 3e56586..b645cf3 100644 --- a/k8s/infra/forgejo-runner/values-rust.yaml +++ b/k8s/infra/forgejo-runner/values-rust.yaml @@ -2,13 +2,14 @@ # runner instance. Only runner.name and runner.labels differ -- everything # else (image, dind, persistence, tolerations, nodeSelector) is shared. # -# Bootstrap with runner image, CI builds custom with Node.js+Rust +# Label image: rust:1-bookworm — Debian, root, apt-get, Rust, cargo, git. +# Install Node.js/docker in workflow steps as needed. runner: image: repository: code.forgejo.org/forgejo/runner tag: "6" name: rust-runner - labels: "rust:docker://code.forgejo.org/forgejo/runner:6" + labels: "rust:docker://rust:1-bookworm" diff --git a/k8s/infra/forgejo-runner/values.yaml b/k8s/infra/forgejo-runner/values.yaml index 71aea9d..adb07b0 100644 --- a/k8s/infra/forgejo-runner/values.yaml +++ b/k8s/infra/forgejo-runner/values.yaml @@ -1,9 +1,12 @@ runner: image: repository: code.forgejo.org/forgejo/runner - tag: "6" # Bootstrap with runner image, CI builds custom with Node.js + tag: "6" name: golang-runner - labels: "golang:docker://code.forgejo.org/forgejo/runner:6" + # Label image is what workflow steps run in (NOT the runner daemon image). + # golang:1.26-bookworm: Debian, root, apt-get, Go, git. + # Install Node.js/docker in workflow steps as needed. + labels: "golang:docker://golang:1.26-bookworm" forgejoUrl: http://forgejo-gitea-http.cicd.svc.cluster.local:3000 tokenSecret: runner-token resources: diff --git a/terraform/files/coredns/Corefile b/terraform/files/coredns/Corefile index 6df1c75..03b2fbf 100644 --- a/terraform/files/coredns/Corefile +++ b/terraform/files/coredns/Corefile @@ -35,6 +35,7 @@ rewrite name longhorn.riotpiao.com ingress-nginx-controller.ingress-nginx.svc.cluster.local rewrite name paperless.riotpiao.com ingress-nginx-controller.ingress-nginx.svc.cluster.local rewrite name img.riotpiao.com ingress-nginx-controller.ingress-nginx.svc.cluster.local + rewrite name api.riotpiao.com ingress-nginx-controller.ingress-nginx.svc.cluster.local rewrite name riotpiao.com ingress-nginx-controller.ingress-nginx.svc.cluster.local kubernetes cluster.local in-addr.arpa ip6.arpa {