Skip to content

Instantly share code, notes, and snippets.

@pikender
Forked from coco98/kube-registry.yaml
Last active January 4, 2021 00:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pikender/19da9b3b944789442f9bbdcdafe37f8f to your computer and use it in GitHub Desktop.
Save pikender/19da9b3b944789442f9bbdcdafe37f8f to your computer and use it in GitHub Desktop.
Docker registry on minikube
apiVersion: v1
kind: ReplicationController
metadata:
name: kube-registry-v0
namespace: kube-system
labels:
k8s-app: kube-registry
version: v0
spec:
replicas: 1
selector:
k8s-app: kube-registry
version: v0
template:
metadata:
labels:
k8s-app: kube-registry
version: v0
spec:
containers:
- name: registry
image: registry:2.5.1
resources:
# keep request = limit to keep this container in guaranteed class
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 100m
memory: 100Mi
env:
- name: REGISTRY_HTTP_ADDR
value: :5000
- name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
value: /var/lib/registry
volumeMounts:
- name: image-store
mountPath: /var/lib/registry
ports:
- containerPort: 5000
name: registry
protocol: TCP
volumes:
- name: image-store
hostPath:
path: /data/registry/
---
apiVersion: v1
kind: Service
metadata:
name: kube-registry
namespace: kube-system
labels:
k8s-app: kube-registry
spec:
selector:
k8s-app: kube-registry
ports:
- name: registry
port: 5000
protocol: TCP
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: kube-registry-proxy
namespace: kube-system
labels:
k8s-app: kube-registry
kubernetes.io/cluster-service: "true"
version: v0.4
spec:
template:
metadata:
labels:
k8s-app: kube-registry
version: v0.4
spec:
containers:
- name: kube-registry-proxy
image: gcr.io/google_containers/kube-registry-proxy:0.4
resources:
limits:
cpu: 100m
memory: 50Mi
env:
- name: REGISTRY_HOST
value: kube-registry.kube-system.svc.cluster.local
- name: REGISTRY_PORT
value: "5000"
ports:
- name: registry
containerPort: 80
hostPort: 5000

Delete unused repositories

➜  docker-reg-tool git:(master) ✗ cat docker_reg_tool_delete 
#!/bin/bash
set -euo pipefail

repo=nginx-minikube
tag=latest
echo $repo
echo $tag
response=$(curl -v -s -H "Accept:application/vnd.docker.distribution.manifest.v2+json" "http://localhost:5000/v2/$repo/manifests/$tag" 2>&1)
echo $response
digest=$(echo "$response" | grep -i "< Docker-Content-Digest:"|awk '{print $3}')
echo $digest
digest=${digest//[$'\t\r\n']}
echo "DIGEST: $digest"
result=$(curl -s -o /dev/null -w "%{http_code}" -H "Accept:application/vnd.docker.distribution.manifest.v2+json" -X DELETE "http://localhost:5000/v2/$repo/manifests/$digest")
if [ $result -eq 202 ]; then
    echo "Successfully deleted"
    exit 0
else 
    echo "Failed to delete"
    exit 3
fi
  • after delete, curl list shows repositories yet
  • kubectl exec -n kube-system -it kube-registry-v0-vxxtx /bin/ash
    • [garbage collect] /bin/registry garbage-collect /etc/docker/registry/config.yml
    • cd /var/lib/registry/docker/registry/v2
    • ls -la ./repositories
    • (cd repositories/ && rm -rf auth-minikube-service nginx-minikube nginx-minikube vault-init-minikube vaul t-server-minikube pg-minikube)
    • exit
  • check list now
➜  docker-reg-tool git:(master) ✗ curl -X GET http://localhost:5000/v2/_catalog
{"repositories":["minikube-pg"]}

Delete registry kubes

  • kubectl delete daemonset -n kube-system kube-registry-proxy
  • kubectl delete svc -n kube-system kube-registry
  • kubectl delete replicationcontroller -n kube-system kube-registry-v0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment