apiVersion: v1 kind: Service metadata: name: woodpecker-mcp namespace: mcp-servers spec: type: ClusterIP ports: - port: 8080 targetPort: 8080 name: mcp selector: app: woodpecker-mcp --- apiVersion: apps/v1 kind: Deployment metadata: name: woodpecker-mcp namespace: mcp-servers labels: app: woodpecker-mcp spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: woodpecker-mcp template: metadata: labels: app: woodpecker-mcp annotations: # Immutable-deploy provenance: this changes on every commit, so the pod # template changes and Kubernetes rolls out automatically (no manual restart). deployment.l-ai/commit: "${CI_COMMIT_SHA}" deployment.l-ai/repository: "woodpecker-mcp" spec: imagePullSecrets: - name: registry-secret # Our image is built for linux/amd64 only; pin to x86 nodes so the pod # never lands on ARM nodes (e.g. deg-pi) with an exec format error. nodeSelector: kubernetes.io/arch: amd64 containers: - name: woodpecker-mcp # Immutable per-commit tag (rendered by envsubst in CI from CI_COMMIT_SHA). # Changing this string is what triggers a rollout on every deploy. image: registry.be.kaien.ru/woodpecker_mcp/woodpecker_mcp:${CI_COMMIT_SHA} imagePullPolicy: IfNotPresent args: - --transport=http envFrom: - secretRef: name: woodpecker-mcp env: - name: WOODPECKER_URL value: "https://ci.be.kaien.ru/" ports: - containerPort: 8080 name: mcp