J'ai un problème avec kubernetes (minikube) et extrait les images du référentiel d'images local sur docker .
docker run --entrypoint htpasswd registry:2 -Bbn zordon examplePassword > /mnt/LINUX/auth/htpasswd
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /mnt/LINUX/dockerreg:/var/lib/registry \
-v /mnt/LINUX/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry:2
Ensuite, je veux créer un simple pod avec une image qui a été chargée avec succès dans un référentiel local:
curl localhost:5000/v2/_catalog
{"repositories":["car/configuration"]}
J'ai aussi créé secret sur le cluster minikube avec:
kubectl create secret docker-registry docregkey --docker-server=localhost:5000 --docker-username=zordon --docker-password=examplePassword [email protected]
et définir un Pod simple:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: car/configuration:latest
imagePullPolicy: Always
restartPolicy: Always
imagePullSecrets:
- name: docregkey
malheureusement je reste immobile:
Échec d'extraction de l'image "voiture/configuration: dernière": erreur rpc: code = Unknown desc = Réponse d'erreur du démon: accès bloqué refusé pour voiture/configuration, le référentiel n'existe pas ou peut nécessiter un menu fixe s'identifier'
Comment je peux résoudre ce problème?
Le problème est lié à la stratégie d’extraction d’image - vous avez défini thist sur Always (paramètre par défaut), ce qui signifie que docker deamon tente toujours d’extraire une image du registre de docker externe - et vous souhaitez utiliser l’image locale à la place.
essayez de vous ajouter --image-pull-policy=Never
lors de la création du déploiement
bon tutoriel d'utilisation de l'image créée localement est ici (cela m'a aidé):
https://kubernetes.io/docs/tutorials/hello-minikube/#create-a-docker-container-image
Le problème concerne le nom de l'image que vous mentionnez dans le fichier POD yaml.
image: voiture/configuration: dernière
Cela tentera d'extraire du registre global plutôt que du registre local.Changez le nom de l'image pour inclure également le référentiel.
image: localhost: 5000/car/configuration: dernière
Et assurez-vous que vous avez inclus le registre non sécurisé dans la configuration de votre démon docker si ce dernier n'est pas sécurisé.
Registre privé dans Minikube
kubectl create -f kube-registry.yaml
(Prenez kube-registry.yaml de ce Gist sur github.)
et vous avez besoin d'un minikube à transfert de port sur localhost (il suffit de créer une image)
kubectl port-forward --namespace kube-system \
$(kubectl get po -n kube-system | grep kube-registry-v0 | \
awk '{print $1;}') 5000:5000
Après cela, de l'hôte curl localhost:5000
devrait renvoyer une réponse valide du registre de docker s'exécutant sur minikube
Repo: http: // localhost: 5000/v2/_catalog
Pull image: localhost: 5000/nom_image: image_tag
Référence: https://blog.hasura.io/sharing-a-local-registry-for-minikube-37c7240d0615
Je voulais une solution d'une ligne à exécuter dans mon terminal. Tout le reste que j'ai essayé était trop complexe pour autoriser ecr avec minikube.
C'est ma commande pour la connexion à aws ecr que je lance chaque jour car le jeton expire. Les exemples ci-dessous concernent Debian 9 avec AWS ECR.
Coquille
kubectl create secret docker-registry aws-ecr-credentials \
--docker-server=$ECR_REGISTRY \
--docker-username=AWS \
--docker-password=$(aws ecr get-login | awk '{print $6}') \
--docker-email=$IAM_EMAIL \
--namespace=$KUBE_NAMESPACE
template.yml
spec:
imagePullSecrets:
- name: aws-ecr-credentials