2017-05-31 5 views
0

Peut-être que je ne reçois pas quelque chose correctement, mais mon ImageStream retourne "! Error: Import failed (Unauthorized): vous n'avez pas accès au Docker image "my_registry: 5000/projet/mon_image: dernier" ".Openshift imagestream "Import failed (Unauthorized)" pour un registre sécurisé externe privé

J'ai mis en place toutes les étapes nécessaires pour me connecter au registre externe (créé secret et ajouté aux comptes de service/compte par défaut et de service/compte de projet). Tous les modules de configuration de déploiement avec image: my_registry:5000/project/my_image:latest fonctionnent très bien, le noeud peut réussir à extraire l'image et à créer un module.

Mais quand je fais flux d'images avec:

from: 
     kind: DockerImage 
     name: my_registry:5000/project/my_image:latest 

J'obtiens l'erreur que je ne suis pas autorisé.

Alors qu'est-ce que je fais mal? Y at-il un compte supplémentaire que je devrais donner des droits pour tirer?

oc describe sa/builder 
Name:   builder 
Namespace:  nginx 
Labels:   <none> 

Image pull secrets:  builder-dockercfg-8ogvt 
         my_registry 

Mountable secrets:  builder-token-v6w8q 
         builder-dockercfg-8ogvt 
         my_registry 

Tokens:     builder-token-0j8p5 
         builder-token-v6w8q 

et

oc describe sa/default 
Name:   default 
Namespace:  nginx 
Labels:   <none> 

Image pull secrets:  default-dockercfg-wmm1h 
          my_registry 

Mountable secrets:  default-token-st7k9 
         default-dockercfg-wmm1h 

Tokens:     default-token-m2aoq 
         default-token-st7k9 

Répondre

0

La solution dépend de la configuration de votre infrastructure particulière, mais voici quelques conseils qui ont travaillé pour moi -

  1. En supposant que votre registre externe privé a des certificats, s'il vous plaît vérifier Si ces certificats sont correctement importés, si ce n'est pas le cas, veuillez ajouter le registre comme non sécurisé.
  2. Docker pull, build config, imagetream pull - tout fonctionne de manière différente.
  3. Il est également recommandé que le nom de la clé secrète pull soit le même que le nom d'hôte du point de fin de l'authentification du registre. (Si vous n'utilisez pas de registre non sécurisé).
  4. Par ex. Nom FQDN du registre: 5000/yourapp: latest (Les certificats ont besoin de ceci pour fonctionner correctement).

S'il vous plaît jeter un oeil here

oc secrets link default <pull_secret_name> --for=pull 
+0

Merci pour la réponse! J'ai un registre privé avec des certificats, et ils sont correctement impotés (sinon je ne serais pas capable de tirer docker) - mais peut-être que je dois les importer dans openshift, et la confiance sur le système d'exploitation des hôtes n'est pas suffisante? –

+0

Le nom secret est le même nom FQDN. J'utilise le lien oc secrets - ça n'aide pas ((Pouvez-vous préciser comment le pull config de déploiement diffère de pull de l'image stream? –

0

je suis tombé sur le même problème quand j'ai essayé d'importer une image à partir d'un registre docker hébergé dans un autre groupe OpenShift. Après un certain débogage j'ai trouvé le problème: Impossible de trouver un secret pour correspondre https://docker-dev.xxxx.com:443/openshift/token (docker-dev.xxxx.com:443/openshift/token)

Le registre OpenShift Docker est d'utiliser OAuth de OpenShift. Vous devez donc créer un secret dans lequel le --docker-server pointe vers le point de terminaison /openshift/token. par exemple:

oc secrets new-dockercfg registry.example.com \ 
    --docker-server=https://registry.example.com:443/openshift/token \ 
    --docker-username=default/puller-sa \ 
    --docker-password=<token> \ 
    [email protected]