Files
homelab-infra/platform/microvm-runner/deployment.yaml
T
panxiao81 246b5023e7
yaml / yaml (pull_request) Successful in 12s
部署动态 Pod Runner 控制器
2026-09-16 14:34:47 +00:00

153 lines
4.7 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: microvm-runner-controller
namespace: microvm-runner
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: microvm-runner-controller
template:
metadata:
labels:
app.kubernetes.io/name: microvm-runner-controller
spec:
serviceAccountName: microvm-runner-controller
initContainers:
- name: fetch-internal-ca
image: curlimages/curl:8.16.0@sha256:463eaf6072688fe96ac64fa623fe73e1dbe25d8ad6c34404a669ad3ce1f104b6
args:
- --fail
- --silent
- --show-error
- --output
- /trust/ca.pem
- https://bao.ad.ddupan.top:8200/v1/pki/ca/pem
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
readOnlyRootFilesystem: true
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
volumeMounts:
- name: trust
mountPath: /trust
containers:
- name: controller
# Bootstrap import on laptop. Replace with a zot digest after the
# repository's image publishing workflow has a dedicated identity.
image: gitea-microvm-runner-controller:0.3.0-bootstrap
imagePullPolicy: Never
env:
- name: NATS_URL
value: tls://nats.ad.ddupan.top:4222
- name: NATS_CA_FILE
value: /run/trust/ca.pem
- name: NATS_PASSWORD_FILE
value: /run/secrets/nats-password
- name: WEBHOOK_SECRET_FILE
value: /run/secrets/webhook-secret
ports:
- name: http
containerPort: 8787
readinessProbe:
httpGet:
path: /healthz
port: http
periodSeconds: 5
livenessProbe:
httpGet:
path: /healthz
port: http
initialDelaySeconds: 10
periodSeconds: 10
resources:
requests:
cpu: 25m
memory: 32Mi
limits:
cpu: 250m
memory: 128Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 65532
runAsGroup: 65532
seccompProfile:
type: RuntimeDefault
volumeMounts:
- name: secret
mountPath: /run/secrets
readOnly: true
- name: trust
mountPath: /run/trust
readOnly: true
- name: pod-worker
image: gitea-microvm-runner-controller:0.3.0-bootstrap
imagePullPolicy: Never
command: [/venv/bin/gitea-pod-worker]
env:
- name: NATS_URL
value: tls://nats.ad.ddupan.top:4222
- name: NATS_CA_FILE
value: /run/trust/ca.pem
- name: NATS_PASSWORD_FILE
value: /run/secrets/nats-worker-password
- name: RUNNER_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: RUNNER_IMAGE
value: gitea-dynamic-runner:0.3.0-bootstrap
- name: RUNNER_SERVICE_ACCOUNT
value: gitea-dynamic-runner
- name: RUNNER_TOKEN_SECRET
value: microvm-runner-controller
- name: RUNNER_CAPACITY
value: "4"
resources:
requests:
cpu: 25m
memory: 32Mi
limits:
cpu: 250m
memory: 128Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 65532
runAsGroup: 65532
seccompProfile:
type: RuntimeDefault
volumeMounts:
- name: secret
mountPath: /run/secrets
readOnly: true
- name: trust
mountPath: /run/trust
readOnly: true
nodeSelector:
kubernetes.io/hostname: laptop
securityContext:
fsGroup: 65532
fsGroupChangePolicy: OnRootMismatch
seccompProfile:
type: RuntimeDefault
volumes:
- name: secret
secret:
secretName: microvm-runner-controller
defaultMode: 0400
- name: trust
emptyDir:
sizeLimit: 1Mi