Vue d'ensemble
Fonctionnalité déployée et prise en charge. Les champs et commandes décrits ici sont stables au sein de la version v1alpha1.
Chaque tenant dispose d'un registre d'images OCI privé, à l'adresse <cluster>.registry.dev.stackngo.fr : l'hôte porte le nom du cluster où vit votre
tenant (par exemple ovh-gra-0.registry.dev.stackngo.fr), celui que choisit sng config use-cluster. Chaque cluster a
son propre registre : il n'y a pas de réplication, une image se pousse sur le registre de chaque
cluster qui la déploie, et une App ne tire que depuis le registre de son propre cluster.
Vous y poussez les images de vos applications avec docker, sng registry ou n'importe quel
client OCI, et vos App les tirent depuis le même registre.
En bref
sng registry create web # 1. déclarer le dépôt (manifeste RegistryRepository)
sng registry login # 2. docker utilise votre session, sans mot de passe
docker build -t ovh-gra-0.registry.dev.stackngo.fr/acme/web:1.0.0 .
docker push ovh-gra-0.registry.dev.stackngo.fr/acme/web:1.0.0
L'image est alors adressable sous ovh-gra-0.registry.dev.stackngo.fr/acme/web:1.0.0, où acme est
votre tenant.
Les notions
| Notion | Ce que c'est | Où c'est décrit |
|---|---|---|
| Image | ovh-gra-0.registry.dev.stackngo.fr/<tenant>/<dépôt>:<tag> | Pousser et tirer |
| Dépôt | Un nom déclaré par un manifeste RegistryRepository. Sans déclaration, le registre refuse tout accès, même avec tous les droits | Dépôts et rétention |
| Droits | Actions registry:pull, registry:push, registry:delete sur repository/<dépôt>, accordées par les policies du tenant | Identité et accès |
| Clé d'accès | Un identifiant machine (RegistryAccessKey) limité à des dépôts et à pull / push, pour que vos App tirent vos images privées ; avec ci: true, lisible par une application du tenant (un job de CI, par exemple) | Clés d'accès au registre |
| Rétention | Les tags à garder (N derniers, N jours, motifs) ; le reste est effacé automatiquement | Dépôts et rétention |
Trois façons de s'authentifier
| Qui | Identifiant | Mot de passe | Usage typique |
|---|---|---|---|
| Vous, sur votre poste | géré par sng registry login | votre session de tenant, renouvelée automatiquement | docker push, docker pull, sng registry |
| Une clé d'accès | accesskey/<tenant>/<nom> | généré et renouvelé par la plateforme | imagePullSecrets d'une App ; variables d'environnement d'une App si ci: true |
| Personne | aucun | aucun | pull d'un dépôt déclaré public: true |
Il n'existe pas de mot de passe propre au registre : une session sng suffit, et ses droits
sont ceux de vos policies.
Qui peut faire quoi
Les policies gérées du tenant couvrent les cas courants :
| Policy | registry:pull | registry:push | registry:delete |
|---|---|---|---|
readonly | oui | non | non |
readwrite | oui | oui | oui |
admin | oui | oui | oui |
Pour un réglage plus fin (par exemple push sur un seul dépôt), écrivez une policy avec la
ressource repository/<dépôt> ; voir Identité et accès.
Déclarer un dépôt ou une clé d'accès passe par sng apply, donc par l'action deploy:write.
Limites de cette version
- Un dépôt est un seul nom sous le tenant :
acme/webest valide,acme/web/cachene l'est pas. - Pas d'interface web du registre.
- Le registre n'analyse pas encore les vulnérabilités des images ;
sng registry buildles analyse sur votre poste avectrivy(voirsng registry build). - La rotation immédiate d'une clé d'accès n'est pas encore disponible ; la rotation périodique l'est (Clés d'accès au registre).