Aller au contenu

Quay

Quay Quay est un registre d'images de conteneurs dans lequel vous pouvez stocker des images de conteneurs dans un emplacement central.

En tant qu'utilisateur, vous pouvez créer des référentiels pour organiser vos images et ajouter sélectivement des accès en lecture (pull) et en écriture (push) aux référentiels que vous contrôlez.


Note

Dans ce tutoriel, remplacez les valeurs suivantes comme suit :

  • ZONE_NAME à remplacer par le nom de votre zone d'administration (commence par ocb-).

Accéder à Quay

Dans votre environnement d'administration, le service Quay service est situé à l'adresse suivante :

https://docker-registry.ZONE_NAME.caascad.com

Interface Web

L'interface Web (web UI) vous permet de gérer les organisations, les repositories et d'autres fonctionnalités comme les permissions, les robots accounts, le fait de définir les repositories publics ou privés, etc...

Connexion

Pour pouvoir vous connecter à l'interface web de Quay, vous avez d'abord besoin de vos informations d'identification Keycloak. Pour plus d'informations sur Keycloak, consultez la page Authentification.

Lors de votre première connexion à Quay, votre utilisateur sera créé automatiquement. Pour ce faire, vous devez cliquer sur "Sign in with Keycloak" :

Puis complétez votre User / Password:

Une fois connecté, vous arriverez sur cette page :

Confirmez ensuite votre nom d'utilisateur :

Vous êtes désormais prêt à utiliser Quay.

Jetons "application tokens"

Pour des raisons de sécurité, les comptes locaux sur les registres Docker sont désactivés. Donc, si vous voulez récupérer (pull) ou envoyer (push) des images Docker via la CLI Docker, vous devez créer un jeton "application token".

Pour cela, rendez-vous sur le registre (docker-registry.ZONE_NAME.caascad.com) et connectez-vous avec Keycloak.

Une fois connecté, cliquez sur votre nom d'utilisateur -> Account Settings en haut à droite :

Accédez aux paramètres utilisateur "user settings" :

Cliquez sur "Create Application Token" :

Choisissez un nom pour votre jeton (token), cela peut être ce que vous voulez :

Cliquez sur le jeton que vous venez de créer :

Sélectionnez "Docker Login" et copiez la commande fournie :

Enfin, ouvrez un terminal et collez la commande fournie par le jeton :

## We first need to login using the AppToken
➜ docker login -u="\$app" -p="XXXXXXXXXXXXX" docker-registry.ocb-demo.caascad.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/yohann/.docker/config.json.
Configure a credential helper to remove this warning. See [documentation](https://docs.docker.com/engine/reference/commandline/login/#credentials-store){target=_blank}

Login Succeeded

Vous pouvez à présent utiliser les commandes Docker pour push / pull des images sur le registre.

Envoyer une nouvelle image Docker

Pour utiliser le registre via la CLI Docker, vous devez d'abord vous connecter via le jeton "ApplicationToken" comme expliqué ci-dessus.

Pour envoyer ("push") une image dans votre registre, vous devez tagger votre image selon ce modèle URL/ORGANIZATION/IMAGE_NAME:IMAGE_TAG.

Voici un exemple :

## We first need to login using the AppToken
➜ docker login -u="\$app" -p="XXXXXXXXXXXXX" docker-registry.ocb-demo.caascad.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/yohann/.docker/config.json.
Configure a credential helper to remove this warning. See [documentation](https://docs.docker.com/engine/reference/commandline/login/#credentials-store){target=_blank}

Login Succeeded

## Get an image from docker hub or create it via a Dockerfile
➜ docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
Digest: sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

## Tag the image with the schema URL/ORGANIZATION/NAME:TAG
➜ docker tag ubuntu:20.04 docker-registry.ocb-demo.caascad.com/demo/ubuntu:20.04

## Push the image into Quay
➜ docker push docker-registry.ocb-demo.caascad.com/demo/ubuntu:20.04
The push refers to repository [docker-registry.ocb-demo.caascad.com/demo/ubuntu]
f6253634dc78: Pushed
9069f84dbbe9: Pushed
bacd3af13903: Pushed
20.04: digest: sha256:4e4bc990609ed865e07afc8427c30ffdddca5153fd4e82c20d8f0783a291e241 size: 943

Gérer les organisations

Les organisations fournissent un moyen de partager les référentiels sous un namespace commun qui n'appartient pas à un seul utilisateur mais plutôt à plusieurs utilisateurs dans un cadre partagé.

Créer une organisation

Pour créer une organisation, vous devez d'abord vous connecter avec l'interface web. Cliquez ensuite sur l'icone "+" -> "New Organization" en haut à droite :

Puis donnez un nom à votre organisation :

Vous venez de créer votre nouvelle organisation. Depuis cette page vous allez pouvoir gérer les utilisateurs et les équipes, les robots accounts, les permissions par défaut et lire certains logs de cette organisation :

Gérer les équipes

Une équipe est un groupe d'utilisateurs avec des permissions communes dans une organisation.

Pour créer une équipe, rendez-vous sur l'organisation et cliquez sur "Team and Membership" sur la barre latérale de gauche.

Cliquez sur "Create New Team" :

Choisissez un nom pour la nouvelle équipe :

Vous pouvez accorder des permissions (lecture ou écriture) pour chaque référentiel existant. Cliquez sur "No repositories":

Sélectionnez le référentiel sur lequel vous souhaitez accorder des permissions puis choissisez le niveau de permission souhaité :

Enfin, slectionner un rôle pour l'équipe :

  • le rôle Member est le rôle accordant le moins de permissions. Il ne donne à l'équipe que les permissions définies précédemment (lecture ou écriture sur les référentiels existants), et ne permet pas aux utilisateurs de créer de nouveaux référentiels ou même de voir les autres référentiels.

  • le rôle Creator accorde les mêmes persmissions que le rôle Member et autorise les utilisateurs à créer de nouveaux référentiels.

  • le rôle Admin accorde les droits d'accès complets d'administration sur l'organisation. L'utilsateur qui a créé l'organisation dispose du rôle Admin par défaut.

Gérer les droits utilisateurs dans une organisation

Nous devons donner aux utilisateurs l'accès à une organisation avant qu'ils puissent la voir et y travailler. Une bonne façon de le faire est d'ajouter des utilisateurs à une équipe créée auparavant.

Pour ce faire, vous devez vous rendre dans l'organisation, cliquer sur "Teams and Membership" et sélectionner l'équipe souhaitée :

Trouvez les utilisateurs que vous voulez ajouter et cliquez dessus pour ajouter l'utilisateur à l'équipe :

Permissions par défaut

Les permissions accordées ne sont appliquées qu'aux référentiels existants. Si nous voulons appliquer automatiquement les permissions aux nouveaux référentiels, nous devons définir des "Permissions par défaut".

Pour cela, cliquez sur "Default Permissions":

Puis cliquez sur "Create Default Permission":

Ici, vous pouvez sélectionner une permission par défaut (Lecture = Read, Ecriture = Write ou Admin):

Selectionnez ensuite les utilisateurs ou les teams auquels vous souhaitez appliquer cette permission : Attention, les permissions par défaut s'appliquent uniquement aux futurs référentiels, pas aux référentiels existants.

Gérer les comptes robot "robot accounts"

Les comptes robots sont un moyen d'accéder aux référentiels sans avoir besoin d'un compte utilisateur humain. Un compte robot possède ses propres informations d'identification, générées par Quay, et est lié à une organisation. Comme les utilisateurs, ils ont besoin de permissions pour travailler avec les référentiels, ils peuvent donc être ajoutés aux équipes, avoir des permissions pour chaque référentiel ou des permissions par défaut. Les comptes robots sont destinés à l'automatisation, au travers de pipelines par exemple.

Pour créer un compte robot, vous devez vous rendre dans une organisation, cliquer sur "Robot Accounts", puis "Create Robot Account":

Renseignez un nom, et si vous le souhaitez, une description :

Vous pouvez obtenir ses informations d'identification (credentials) en cliquant sur le compte robot :

Par exemple, ci-dessous la commande "docker login" :

Gérez la visibilité des référentiels

Les registres Docker sont accessibles sur Internet, vous devez donc faire attention à la visibilité de vos référentiels. Par défaut, tous les référentiels sont "privés", ce qui signifie que vous devez être connecté et avoir des autorisations pour voir et travailler sur le référentiel. Mais si vous transformez un référentiel en "public", il sera accessible sur Internet sans avoir besoin de se connecter.

Pour transformer un référentiel en public, cliquez sur le référentiel :

Accédez aux paramètres "Settings" :

Et faites défiler la page jusqu'à "Make Public":

Utiliser des images privées sur K8s

Kubernetes peut utiliser des référentiels privés. Pour cela, il vous faut un compte robot disposant à minima des droits de lecture sur le référentiel que vous souhaitez déployer.

Quay fournit la procédure pour créer les secrets nécessaires et ajouter la configuration à votre déploiement K8s.

Cliquez sur le compte robot et sélectionnez "Kubernetes Secret":

Liens utiles