apiVersion: apps/v1 kind: Deployment metadata: name: registry namespace: registry labels: app: registry spec: replicas: 1 selector: matchLabels: app: registry template: metadata: labels: app: registry spec: containers: - name: registry image: registry:2 ports: - containerPort: 5000 env: - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY value: /var/lib/registry volumeMounts: - name: data mountPath: /var/lib/registry resources: requests: cpu: 50m memory: 64Mi limits: cpu: 200m memory: 128Mi readinessProbe: httpGet: path: /v2/ port: 5000 initialDelaySeconds: 5 periodSeconds: 10 volumes: - name: data persistentVolumeClaim: claimName: registry-data --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: registry-data namespace: registry spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: v1 kind: Service metadata: name: registry namespace: registry spec: selector: app: registry ports: - port: 5000 targetPort: 5000 # ClusterIP is fine if you port-forward from dev machine to push. # Change to NodePort or add an Ingress if you want external push access. type: ClusterIP --- apiVersion: v1 kind: Namespace metadata: name: registry