ProofedMesh/deploy/verification-service/20-deployment.yaml
CTO 5d2bf73d84
Some checks failed
build-images / signing-service image (push) Successful in 23s
build-images / verification-service image (push) Successful in 48s
build-images / dummy-sink image (push) Successful in 49s
validate / JSON Schema (ajv) (push) Successful in 23s
validate / Rego (opa fmt + opa test) (push) Successful in 15s
phase1-smoke / Phase 1 end-to-end smoke (push) Successful in 1m0s
validate / DB (migrate up/down dry-run) (push) Successful in 24s
validate / Go (vet + test) (push) Has been cancelled
deploy: verification-service + dummy-sink Phase-1 manifests (DEV-615)
ServiceAccount, Deployment, Service, and NetworkPolicy per
sub-directory, matching the signing-service template (non-root,
read-only rootfs, distroless, agent-trust namespace).

verification-service — NetworkPolicy allows ingress only from
approval-service, testagent-transform, and dummy-sink, and egress
only to transparency-log, trust-pg, Pocket-ID JWKS (HTTPS/443),
and kube-dns.

dummy-sink — adds a 1Gi longhorn PVC `dummy-sink-data` mounted at
/data/dummy-sink, projected trust-api SA token at
/var/run/secrets/tokens/trust-api, Pocket-ID client creds from a
dev Secret, strategy Recreate (RWO PVC). NetworkPolicy allows
ingress from testagent-transform and egress to verification-service,
signing-service, transparency-log, HTTPS/443 (Pocket-ID OIDC), and
kube-dns.

build-images workflow — adds verification-service and dummy-sink
jobs mirroring signing-service's BuildKit + Harbor pipeline.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-25 21:09:14 +00:00

98 lines
3 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: verification-service
namespace: agent-trust
labels:
app.kubernetes.io/name: verification-service
app.kubernetes.io/part-of: proofedmesh
app.kubernetes.io/component: trust-core
spec:
replicas: 2
revisionHistoryLimit: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app.kubernetes.io/name: verification-service
template:
metadata:
labels:
app.kubernetes.io/name: verification-service
app.kubernetes.io/part-of: proofedmesh
app.kubernetes.io/component: trust-core
spec:
serviceAccountName: verification-service
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 65532
runAsGroup: 65532
fsGroup: 65532
seccompProfile:
type: RuntimeDefault
containers:
- name: verification-service
image: harbor.basicstack.de/basicstack/verification-service:dev
imagePullPolicy: IfNotPresent
args:
- "-listen=:8084"
- "-backend=memory"
env:
- name: TLOG_URL
value: "http://transparency-log.agent-trust.svc.cluster.local"
# Keyids are the Phase-1 defaults; override via the Secret
# below if a different key rotation lands.
- name: APPROVAL_SIGNER_KEY_ID
value: "trust-api/approval-signer-2026-q4"
- name: TRANSFORM_SIGNER_KEY_ID
value: "trust-api/agent-testagent-transform-2026-q4"
# Public-key material for the DSSE validators. The Secret
# name resolves per environment (see 10-secret-dev.example.yaml
# for the shape).
- name: VERIFICATION_SIGNER_KEYS
valueFrom:
secretKeyRef:
name: verification-service-dev
key: VERIFICATION_SIGNER_KEYS
ports:
- name: http
containerPort: 8084
protocol: TCP
readinessProbe:
httpGet:
path: /healthz
port: http
initialDelaySeconds: 2
periodSeconds: 10
failureThreshold: 3
livenessProbe:
httpGet:
path: /healthz
port: http
initialDelaySeconds: 10
periodSeconds: 20
failureThreshold: 3
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "1000m"
memory: "512Mi"
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app.kubernetes.io/name: verification-service