ProofedMesh/deploy/approval-service/20-deployment.yaml

121 lines
4 KiB
YAML
Raw Normal View History

apiVersion: apps/v1
kind: Deployment
metadata:
name: approval-service
namespace: agent-trust
labels:
app.kubernetes.io/name: approval-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: approval-service
template:
metadata:
labels:
app.kubernetes.io/name: approval-service
app.kubernetes.io/part-of: proofedmesh
app.kubernetes.io/component: trust-core
spec:
serviceAccountName: approval-service
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 65532
runAsGroup: 65532
fsGroup: 65532
seccompProfile:
type: RuntimeDefault
containers:
- name: approval-service
image: harbor.basicstack.de/basicstack/approval-service:main
imagePullPolicy: IfNotPresent
args:
- "-listen=:8080"
- "-signing-url=http://signing-service.agent-trust.svc.cluster.local:8081"
- "-signing-key-ref=trust-api/approval-signer-2026-q4"
- "-tlog-url=http://transparency-log.agent-trust.svc.cluster.local:8080"
- "-session-ttl=15m"
- "-challenge-ttl=2m"
env:
# ---- Pocket-ID OIDC issuer for attestation `issuer` field +
# future auth middleware discovery (DEV-614). ----
- name: APPROVAL_POCKET_ID_ISSUER
value: "https://auth.basicstack.de"
- name: APPROVAL_POCKET_ID_CLIENT
valueFrom:
secretKeyRef:
name: approval-service-dev
key: APPROVAL_POCKET_ID_CLIENT
# ---- Pocket-ID client secret (OIDC authorization_code +
# client_credentials; Phase 2 middleware consumes it). ----
- name: APPROVAL_POCKET_ID_SECRET
valueFrom:
secretKeyRef:
name: approval-service-dev
key: APPROVAL_POCKET_ID_SECRET
# ---- WebAuthn RP config (DEV-608): must match the browser
# origin reached via Pangolin/Traefik. ----
- name: APPROVAL_WEBAUTHN_RP_ID
valueFrom:
secretKeyRef:
name: approval-service-dev
key: APPROVAL_WEBAUTHN_RP_ID
- name: APPROVAL_WEBAUTHN_RP_ORIGIN
valueFrom:
secretKeyRef:
name: approval-service-dev
key: APPROVAL_WEBAUTHN_RP_ORIGIN
# ---- Bearer the approval-service presents to signing-service. ----
- name: APPROVAL_SIGNING_TOKEN
valueFrom:
secretKeyRef:
name: approval-service-dev
key: APPROVAL_SIGNING_TOKEN
ports:
- name: http
containerPort: 8080
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: "500m"
memory: "256Mi"
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app.kubernetes.io/name: approval-service