Envoyer (push) et tirer (pull) des artefacts à l’aide d’un registre de conteneurs Azure
Vous pouvez utiliser un registre de conteneurs Azure pour stocker et gérer des artefacts OCI (Open Container Initiative) ainsi que des images conteneur Docker et OCI.
Pour illustrer cette fonctionnalité, cet article montre comment utiliser l’interface CLI ORAS (OCI Registry as Storage) pour envoyer un exemple d’artefact (un fichier texte) à un registre de conteneurs Azure. Ensuite, l’artefact est tiré (pull) du registre. Vous pouvez gérer divers artefacts OCI dans un registre de conteneurs Azure à l’aide de différents outils en ligne de commande adaptés à chaque artefact.
Prérequis
- Azure Container Registry : créez un Registre de conteneur dans votre abonnement Azure. Par exemple, utilisez le portail Azure ou az acr create.
- Azure CLI : la version
2.29.1
ou ultérieure est exigée. Pour obtenir des informations sur l’installation et/ou la mise à niveau, consultez Installer Azure CLI. - ORAS CLI : la version
v0.16.0
est exigée. Consultez Installation d’ORAS. - Docker (facultatif) : bien que Docker Desktop ne soit pas obligatoire, l’interface CLI
oras
utilise le magasin d’informations d’identification de Docker Desktop pour stocker les informations d’identification. Si Docker Desktop est installé, il doit être exécuté pouroras login
.
Configurer un registre
Configurez les variables d’environnement pour copier-coller facilement des commandes dans votre interpréteur de commandes. Les commandes peuvent être exécutées localement ou dans Azure Cloud Shell.
ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io
Se connecter à un registre
Authentifiez-vous avec votre identité Microsoft Entra individuelle à l’aide d’un jeton AD. Utilisez toujours « 000... » pour USER_NAME
car le jeton est analysé par le biais de la variable PASSWORD
.
# Login to Azure
az login
# Login to ACR, using a token based on your Azure identity
USER_NAME="00000000-0000-0000-0000-000000000000"
PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
Notes
ACR et ORAS prennent en charge plusieurs options d’authentification pour les utilisateurs et l’automatisation du système. Cet article utilise une identité individuelle à l’aide d’un jeton Azure. Pour plus d’options d’authentification, consultez S’authentifier auprès d’un registre de conteneurs Azure.
Se connecter avec ORAS
Fournissez les informations d’identification à oras login
.
oras login $REGISTRY \
--username $USER_NAME \
--password $PASSWORD
Envoyer un artefact racine
Un artefact racine est un artefact qui n’a pas de parent subject
. Les artefacts racine peuvent être une image conteneur, un graphique helm ou un fichier lisez-moi pour le référentiel. Les artefacts de référence, décrits dans Attacher, envoyer et tirer des artefacts de chaîne logistique, sont des artefacts qui font référence à un autre artefact. Les artefacts de référence peuvent être une signature, une nomenclature logicielle, un rapport d’analyse ou d’autres types évolutifs.
Pour cet exemple, créez un contenu représentant un fichier Markdown :
echo 'Readme Content' > readme.md
L’étape suivante envoie le fichier readme.md
à <myregistry>.azurecr.io/samples/artifact:readme
.
- Le registre est identifié par le nom de registre complet
<myregistry>.azurecr.io
(tout en minuscules), suivi de l’espace de noms et du référentiel :/samples/artifact
. - L’artefact est étiqueté
:readme
, ce qui l’identifie de manière unique parmi les autres artefacts listés dans le référentiel (:latest, :v1, :v1.0.1
). - Le paramètre
--artifact-type readme/example
différencie l’artefact d’une image conteneur, qui utiliseapplication/vnd.oci.image.config.v1+json
. ./readme.md
identifie le fichier chargé et:application/markdown
représente lemediaType
IANA du fichier.
Pour plus d’informations, consultez Conseils pour les auteurs d’artefacts OCI.
Utilisez la commande oras push
pour envoyer le fichier à votre registre.
Linux, WSL2 ou macOS
oras push $REGISTRY/samples/artifact:readme \
--artifact-type readme/example \
./readme.md:application/markdown
Windows
.\oras.exe push $REGISTRY/samples/artifact:readme ^
--artifact-type readme/example ^
.\readme.md:application/markdown
La sortie d’un envoi réussi ressemble à ce qui suit :
Uploading 2fdeac43552b readme.md
Uploaded 2fdeac43552b readme.md
Pushed <myregistry>.azurecr.io/samples/artifact:readme
Digest: sha256:e2d60d1b171f08bd10e2ed171d56092e39c7bac1aec5d9dcf7748dd702682d53
Envoyer un artefact racine multifichier
Quand des artefacts OCI sont envoyés à un registre avec ORAS, chaque référence de fichier est envoyée en tant qu’objet blob. Pour envoyer des objets blob distincts, référencez les fichiers individuellement ou un répertoire contenant une collection de fichiers.
Pour plus d’informations sur la façon d’envoyer une collection de fichiers, consultez Envoyer des artefacts avec plusieurs fichiers.
Créez une documentation pour le référentiel :
echo 'Readme Content' > readme.md
mkdir details/
echo 'Detailed Content' > details/readme-details.md
echo 'More detailed Content' > details/readme-more-details.md
Envoyez l’artefact multifichier :
Linux, WSL2 ou macOS
oras push $REGISTRY/samples/artifact:readme \
--artifact-type readme/example\
./readme.md:application/markdown\
./details
Windows
.\oras.exe push $REGISTRY/samples/artifact:readme ^
--artifact-type readme/example ^
.\readme.md:application/markdown ^
.\details
Découvrir le manifeste
Pour afficher le manifeste créé à la suite de oras push
, utilisez oras manifest fetch
:
oras manifest fetch --pretty $REGISTRY/samples/artifact:readme
La sortie doit ressembler à ceci :
{
"mediaType": "application/vnd.oci.artifact.manifest.v1+json",
"artifactType": "readme/example",
"blobs": [
{
"mediaType": "application/markdown",
"digest": "sha256:2fdeac43552b71eb9db534137714c7bad86b53a93c56ca96d4850c9b41b777fc",
"size": 15,
"annotations": {
"org.opencontainers.image.title": "readme.md"
}
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:0d6c7434a34f6854f971487621426332e6c0fda08040b9e6cc8a93f354cee0b1",
"size": 189,
"annotations": {
"io.deis.oras.content.digest": "sha256:11eceb2e7ac3183ec9109003a7389468ec73ad5ceaec0c4edad0c1b664c5593a",
"io.deis.oras.content.unpack": "true",
"org.opencontainers.image.title": "details"
}
}
],
"annotations": {
"org.opencontainers.artifact.created": "2023-01-10T14:44:06Z"
}
}
Tirer un artefact racine
Création d’un répertoire propre pour le téléchargement
mkdir ./download
Exécutez la commande oras pull
pour tirer (pull) l’artefact de votre registre.
oras pull -o ./download $REGISTRY/samples/artifact:readme
Afficher les fichiers tirés
tree ./download
Supprimer l’artefact (facultatif)
Pour supprimer l’artefact de votre registre, utilisez la commande oras manifest delete
.
oras manifest delete $REGISTRY/samples/artifact:readme
Étapes suivantes
- En savoir plus sur les références d’artefacts, l’association de signatures, la nomenclature logicielle et les autres types de références
- En savoir plus sur le projet ORAS, notamment la configuration d’un manifeste pour un artefact
- Visiter le dépôt OCI Artifacts pour obtenir des informations de référence sur les nouveaux types d’artefacts