# services/zot/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: zot namespace: zot labels: { app: zot } spec: replicas: 1 selector: matchLabels: { app: zot } template: metadata: labels: { app: zot } spec: nodeSelector: node-role.kubernetes.io/worker: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: hardware operator: In values: ["rpi4","rpi5"] preferredDuringSchedulingIgnoredDuringExecution: - weight: 50 preference: matchExpressions: - key: hardware operator: In values: ["rpi4"] containers: - name: zot image: ghcr.io/project-zot/zot-linux-arm64:v2.1.8 imagePullPolicy: IfNotPresent args: ["serve", "/etc/zot/config.json"] ports: - { name: http, containerPort: 5000 } volumeMounts: - name: cfg mountPath: /etc/zot/config.json subPath: config.json readOnly: true - name: zot-data mountPath: /var/lib/registry readinessProbe: tcpSocket: port: 5000 initialDelaySeconds: 2 periodSeconds: 5 livenessProbe: tcpSocket: port: 5000 initialDelaySeconds: 5 periodSeconds: 10 resources: requests: { cpu: "50m", memory: "64Mi" } volumes: - name: cfg configMap: name: zot-config - name: zot-data persistentVolumeClaim: claimName: zot-data