Kubernetes Docker Registry
Из примера с katacoda:
https://www.katacoda.com/javajon/courses/kubernetes-pipelines/registries
$ {
minikube --profile my-profile config set memory 8192
minikube --profile my-profile config set cpus 4
minikube --profile my-profile config set vm-driver virtualbox
// minikube --profile my-profile config set vm-driver docker
minikube --profile my-profile config set kubernetes-version v1.14.1
minikube start --profile my-profile
}
// Удалить
// $ minikube --profile my-profile stop && minikube --profile my-profile delete
$ minikube --profile my-profile ssh
$ sudo mkdir -p /usr/local/bin/
$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
$ export PATH=$PATH:/usr/local/bin/
$ sudo su -
/bin/toolbox
# dnf install -y curl
Инсталляция пакетов с помощью helm
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
$ helm repo update
$ helm install private stable/docker-registry --namespace kube-system \
--set image.tag=2.7.1 \
--set service.type=NodePort \
--set service.nodePort=31500
$ kubectl get service --namespace kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 4m31s
private-docker-registry NodePort 10.102.167.234 <none> 5000:31500/TCP 15s
$ kubectl port-forward --namespace kube-system \
$(kubectl get po -n kube-system | grep private-docker-registry | \
awk '{print $1;}') 5000:5000 &
$ export REGISTRY=127.0.0.1:31500
$ kubectl get deployments private-docker-registry --namespace kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
private-docker-registry 1/1 1 1 3m16s
$ curl $REGISTRY/v2/_catalog
Pull and push a container
$ docker pull replicated/dockerfilelint
$ docker tag replicated/dockerfilelint $REGISTRY/dockerfilelint
$ docker push $REGISTRY/dockerfilelint
$ curl $REGISTRY/v2/_catalog
Registry Web Interface
$ cat << EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: registry-ui-deployment
labels:
app: registry-ui
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: registry-ui
template:
metadata:
labels:
app: registry-ui
spec:
containers:
- name: reg-ui
image: joxit/docker-registry-ui:static
env:
- name: REGISTRY_URL
value: "http://private-docker-registry:5000"
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: registry-ui
labels:
app: registry-ui
namespace: kube-system
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 31000
protocol: TCP
selector:
app: registry-ui
EOF
Push the Container
$ cd ~/
$ git clone https://github.com/IBM/MAX-Breast-Cancer-Mitosis-Detector.git && cd MAX-Breast-Cancer-Mitosis-Detector
$ docker build -t $REGISTRY/max-breast-cancer-mitosis-detector .
$ docker push $REGISTRY/max-breast-cancer-mitosis-detector
$ curl $REGISTRY/v2/_catalog
{"repositories":["dockerfilelint","max-breast-cancer-mitosis-detector"]}
Pull the Container
$ cd ~ && envsubst < max-breast-cancer-mitosis-detector.yaml > max-breast-cancer-mitosis-detector-modified.yaml
$ kubectl apply -f max-breast-cancer-mitosis-detector-modified.yaml
$ kubectl get deployments,pods,services
$ export APP=http://127.0.0.1:32500/
$ cd ~/MAX-Breast-Cancer-Mitosis-Detector
$ curl -F [email protected]/true.png -XPOST “${APP}model/predict”
$ curl -F [email protected]/false.png -XPOST “${APP}model/predict”