Créer des dépôts distants

Cette page explique comment créer des dépôts distants Artifact Registry.

Les dépôts distants stockent des artefacts provenant de sources externes prédéfinies, Docker Hub, Maven Central, l'index de packages Python (PyPI), Debian ou CentOS en tant que ainsi que les sources définies par l'utilisateur pour les formats compatibles. A un dépôt distant fait office de proxy pour la source externe afin que vous ayez plus de contrôler vos dépendances externes. La première fois que vous demandez d'un package, Artifact Registry télécharge et met en cache le package dans le référentiel distant. La prochaine fois que vous la même version du package, Artifact Registry diffuse la copie mise en cache.

Les autres modes de dépôt sont les suivants:

  • Standard: mode de dépôt par défaut. Vous importez ou publiez des artefacts tels que des packages privés directement dans des dépôts standards. Bien que vous puissiez télécharger directement à partir de dépôts standards individuels, accéder à des groupes de dépôts via un dépôt virtuel simplifie configuration de l'outil.
  • Virtual: dépôt agissant comme un accès unique pour plusieurs dépôts en amont, y compris les dépôts des dépôts.

Pour plus d'informations sur le fonctionnement des dépôts distants, consultez la Présentation du dépôt distant

Avant de commencer

  1. Activez Artifact Registry. y compris l'activation de l'API Artifact Registry et l'installation de la Google Cloud CLI.
  2. Facultatif: configurez des valeurs par défaut pour les commandes de gcloud CLI.
  3. Si vous avez besoin de clés de chiffrement gérées par le client (CMEK) pour chiffrer le contenu du dépôt, créer et activer une clé dans Cloud KMS pour le dépôt.
  4. Si vous souhaitez vous authentifier auprès d'un dépôt en amont, activez le API Secret Manager.

    gcloud services enable secretmanager.googleapis.com \
        --project=PROJECT_ID
    
  5. Si Artifact Registry se trouve dans un périmètre de service VPC Service Controls, activer l'API Access Context Manager si elle n'est pas déjà activée.

    gcloud services enable accesscontextmanager.googleapis.com \
        --project=PROJECT_ID
    

Rôles requis

Pour obtenir les autorisations dont vous avez besoin pour gérer les dépôts, demandez à votre administrateur de vous accorder le rôles IAM suivants:

  • Créez des dépôts distants et accordez l'accès à chaque dépôt: Administrateur Artifact Registry (roles/artifactregistry.admin) sur le projet
  • Enregistrez les identifiants de votre dépôt en amont dans une version secrète: Administrateur Secret Manager (roles/secretmanager.admin) sur le projet
  • Accordez l'accès aux sources en amont situées en dehors d'un périmètre de service VPC Service Controls: Éditeur Access Context Manager (roles/accesscontextmanager.policyEditor) sur le projet, le dossier ou l'organisation où la règle d'accès est appliquée.

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Créer un dépôt distant

Lorsque vous créez un dépôt distant, vous devez configurer les paramètres suivants : qui ne peut plus être modifié une fois le dépôt créé:

  • Format de l'artefact.
  • Le mode du dépôt est défini sur "remote".
  • Source en amont prédéfinie ou définie par l'utilisateur dans un dépôt distant.
  • Emplacement du dépôt.
  • Chiffrement à l'aide de clés appartenant ou gérées à Google clés de chiffrement gérées par le client. Artifact Registry utilise Clés de chiffrement détenues et gérées par Google par défaut.

Artifact Registry applique des contraintes liées aux règles d'administration qui nécessitent une clé CMEK pour chiffrer les ressources ou limiter Cloud KMS peuvent être utilisées pour la protection CMEK.

Créer un dépôt distant à l'aide de la console Google Cloud

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Cliquez sur Créer un dépôt.

  3. Spécifiez le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.

  4. Dans la section Format, sélectionnez le format du dépôt.

  5. Dans la section Mode du dépôt, sélectionnez Distant.

  6. Dans la section Remote dépôt source (Source du dépôt distant), sélectionnez prédéfini en amont ou personnalisé si vous voulez utiliser définie par l'utilisateur pour la partie en amont.

  7. Facultatif. Si vous utilisez un dépôt personnalisé en amont, dans le dépôt personnalisé saisissez l'URL du dépôt personnalisé. L'URL ne peut pas être modifiée après la d'un dépôt de secours est créé.

  8. Dans le champ Mode d'authentification du dépôt distant, choisissez l'une des options suivantes:

    • Authentifié: vous permet de saisir votre nom d'utilisateur et votre code secret pour l'authentification. vers votre dépôt en amont.
    • Non authentifié: permet de passer l'authentification dans le dépôt en amont.
  9. Facultatif. Si vous avez sélectionné Authentifié, saisissez les informations suivantes:

    • Dans le champ Nom d'utilisateur, saisissez votre nom d'utilisateur pour la session en amont. un dépôt de clés.
    • Dans le champ Secret, saisissez la version du secret dans laquelle vous avez enregistré le pour le dépôt en amont.

    Vous pouvez modifier ces valeurs après avoir créé le dépôt. Pour plus sur l'authentification auprès des dépôts distants en amont, voir Configurez l'authentification auprès des dépôts distants en amont.

  10. Dans la section Type d'emplacement, choisissez l'emplacement du dépôt:

    1. Choisissez le type d'emplacement : régional ou multirégional. La liste des emplacements change pour refléter votre sélection.

    2. Dans la liste Région ou Multirégional, sélectionnez un emplacement.

    Pour en savoir plus sur les types d'emplacements et les emplacements pris en charge, consultez la page Emplacements des dépôts

  11. Ajoutez une description pour le dépôt. Les descriptions aident à identifier l'objectif du dépôt et le type d'artefacts qu'il contient.

    N'incluez pas de données sensibles, car les descriptions de dépôts non chiffrées.

  12. Si vous souhaitez utiliser des libellés pour organiser vos cliquez sur Ajouter une étiquette, puis saisissez la paire clé-valeur libellé. Vous pouvez ajouter, modifier ou supprimer des libellés après avoir créé le un dépôt de clés.

  13. Dans la section Chiffrement, choisissez le mécanisme de chiffrement du dépôt.

    • Clé gérée par Google : chiffrez le contenu du dépôt à l'aide d'une Clé appartenant à Google et gérée par Google.
    • Clé gérée par le client : chiffre le contenu du dépôt à l'aide d'une clé que vous contrôlez via Cloud Key Management Service. Pour obtenir des instructions sur la configuration de la clé, consultez la page Configurer des CMEK pour les dépôts.
  14. Si vous souhaitez utiliser des règles de nettoyage pour supprimer les artefacts inutilisés, dans le Section Règles de nettoyage:

    1. Sélectionnez Simulation pour tester votre règle avant de l'appliquer.
    2. Cliquez sur Ajouter une règle pour ajouter une règle de conservation ou de suppression à votre dépôt.
    3. Attribuez un nom descriptif à votre règle de nettoyage dans le champ Nom.
    4. Dans la section Type de règle, sélectionnez l'une des options suivantes:

      • Suppression conditionnelle: supprime des artefacts en fonction des conditions que vous définir.
      • Conservation conditionnelle: conserve les artefacts en fonction de conditions que vous définissez.
      • Conserver les versions les plus récentes: conserve un nombre défini de versions les plus récentes. par package.

      Pour en savoir plus sur les règles de nettoyage, consultez Configurez des règles de nettoyage.

  15. Cliquez sur Créer.

Artifact Registry crée le dépôt et l'ajoute à la liste des dépôts.

Une fois le dépôt créé:

Créer un dépôt distant à l'aide de la gcloud CLI

Pour créer un dépôt, exécutez la commande correspondant au format de dépôt approprié:

Docker

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=docker \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-docker-repo=UPSTREAM

Remplacez les éléments suivants :

  • REMOTE-REPOSITORY-NAME par le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.
  • PROJECT_ID par l'ID du projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
  • LOCATION avec l'emplacement régional ou multirégional emplacement du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Afficher une liste des emplacements compatibles, exécutez la commande gcloud artifacts locations list.

  • DESCRIPTION par une description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de référentiel ne sont pas chiffrées.

  • REMOTE-REPOSITORY-DESCRIPTION avec une description pour la configuration du dépôt externe pour ce dépôt distant.

  • USERNAME éventuellement, si vous utilisez l'authentification, avec votre nom d'utilisateur pour vous authentifier auprès du dépôt en amont.

  • SECRET_VERSION (facultatif), si vous utilisez l'authentification : avec la version du secret contenant le mot de passe du dépôt en amont.

  • UPSTREAM par le nom de la valeur prédéfinie ou l'URL définie par l'utilisateur de en amont. Pour en savoir plus sur les valeurs prédéfinies en amont et en amont pris en charge et définis par l'utilisateur, consultez la page Formats acceptés.

Par exemple, la commande suivante crée un dépôt distant nommé my-repo dans la région us-east1 du projet Google Cloud my-project et peut s'authentifier auprès du dépôt en amont à l'aide de le nom d'utilisateur my-username et la version du secret projects/my-project/secrets/my-secret/versions/1

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=docker \
    --location=us-east1 \
    --description="Remote Docker repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Docker Hub" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-docker-repo=DOCKER-HUB

Pour en savoir plus sur l'authentification auprès des dépôts Docker Hub en amont, voir Configurez l'authentification du dépôt distant sur Docker Hub.

Maven

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=maven \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-mvn-repo=UPSTREAM

Remplacez les éléments suivants :

  • REMOTE-REPOSITORY-NAME par le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.
  • PROJECT_ID par l'ID du projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
  • LOCATION avec l'emplacement régional ou multirégional emplacement du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Afficher une liste des emplacements compatibles, exécutez la commande gcloud artifacts locations list.

  • DESCRIPTION par une description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de référentiel ne sont pas chiffrées.

  • REMOTE-REPOSITORY-DESCRIPTION avec une description pour la configuration du dépôt externe pour ce dépôt distant.

  • USERNAME éventuellement, si vous utilisez l'authentification, avec votre nom d'utilisateur pour vous authentifier auprès du dépôt en amont.

  • SECRET_VERSION (facultatif), si vous utilisez l'authentification : avec la version du secret contenant le mot de passe du dépôt en amont.

  • UPSTREAM par le nom de la valeur prédéfinie ou l'URL définie par l'utilisateur de en amont. Pour en savoir plus sur les valeurs prédéfinies en amont et en amont pris en charge et définis par l'utilisateur, consultez la page Formats acceptés.

Par exemple, la commande suivante crée un dépôt distant nommé my-repo dans la région us-east1 du projet Google Cloud my-project et peut s'authentifier auprès du dépôt en amont à l'aide de le nom d'utilisateur my-username et la version du secret projects/my-project/secrets/my-secret/versions/1

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=maven \
    --location=us-east1 \
    --description="Remote Maven repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Maven Central" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-mvn-repo=MAVEN-CENTRAL

npm

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=npm \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-npm-repo=UPSTREAM

Remplacez les éléments suivants :

  • REMOTE-REPOSITORY-NAME par le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.
  • PROJECT_ID par l'ID du projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
  • LOCATION avec l'emplacement régional ou multirégional emplacement du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Afficher une liste des emplacements compatibles, exécutez la commande gcloud artifacts locations list.

  • DESCRIPTION par une description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de référentiel ne sont pas chiffrées.

  • REMOTE-REPOSITORY-DESCRIPTION avec une description pour la configuration du dépôt externe pour ce dépôt distant.

  • USERNAME éventuellement, si vous utilisez l'authentification, avec votre nom d'utilisateur pour vous authentifier auprès du dépôt en amont.

  • SECRET_VERSION (facultatif), si vous utilisez l'authentification : avec la version du secret contenant le mot de passe du dépôt en amont.

  • UPSTREAM par le nom de la valeur prédéfinie ou l'URL définie par l'utilisateur de en amont. Pour en savoir plus sur les valeurs prédéfinies en amont et en amont pris en charge et définis par l'utilisateur, consultez la page Formats acceptés.

Par exemple, la commande suivante crée un dépôt distant nommé my-repo dans la région us-east1 du projet Google Cloud my-project et peut s'authentifier auprès du dépôt en amont à l'aide de le nom d'utilisateur my-username et la version du secret projects/my-project/secrets/my-secret/versions/1

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=npm \
    --location=us-east1 \
    --description="Remote npm repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Public npm registry" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-npm-repo=NPMJS

Python

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=python \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-python-repo=UPSTREAM

Remplacez les éléments suivants :

  • REMOTE-REPOSITORY-NAME par le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.
  • PROJECT_ID par l'ID du projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
  • LOCATION avec l'emplacement régional ou multirégional emplacement du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Afficher une liste des emplacements compatibles, exécutez la commande gcloud artifacts locations list.

  • DESCRIPTION par une description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de référentiel ne sont pas chiffrées.

  • REMOTE-REPOSITORY-DESCRIPTION avec une description pour la configuration du dépôt externe pour ce dépôt distant.

  • USERNAME éventuellement, si vous utilisez l'authentification, avec votre nom d'utilisateur pour vous authentifier auprès du dépôt en amont.

  • SECRET_VERSION (facultatif), si vous utilisez l'authentification : avec la version du secret contenant le mot de passe du dépôt en amont.

  • UPSTREAM par le nom de la valeur prédéfinie ou l'URL définie par l'utilisateur de en amont. Pour en savoir plus sur les valeurs prédéfinies en amont et en amont pris en charge et définis par l'utilisateur, consultez la page Formats acceptés.

Par exemple, la commande suivante crée un dépôt distant nommé my-repo dans la région us-east1 du projet Google Cloud my-project et peut s'authentifier auprès du dépôt en amont à l'aide de le nom d'utilisateur my-username et la version du secret projects/my-project/secrets/my-secret/versions/1

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=python \
    --location=us-east1 \
    --description="Remote Python repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="PyPI" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-python-repo=PYPI

Apt (preview)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=apt \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-apt-repo=APT_REPOSITORY_BASE \
    --remote-apt-repo-path="APT_REPOSITORY_PATH"

Remplacez les éléments suivants :

  • REMOTE_REPOSITORY_NAME par le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.
  • PROJECT_ID par l'ID du projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
  • LOCATION avec l'emplacement régional ou multirégional emplacement du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Afficher une liste des emplacements compatibles, exécutez la commande gcloud artifacts locations list.
  • DESCRIPTION par une description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de référentiel ne sont pas chiffrées.
  • REMOTE_REPOSITORY_DESCRIPTION avec une description facultative pour la configuration du dépôt externe pour ce dépôt distant.
  • APT_REPOSITORY_BASE par l'un des dépôts compatibles de base répertoriés dans le Package d'OS pris en charge en amont pour Apt Remote des dépôts.
  • APT_REPOSITORY_PATH par le reste de l'URL en amont que vous souhaitez mettre en cache dans votre dépôt distant à la base du dépôt.

Par exemple, la commande suivante crée un dépôt distant nommé my-repo pour mettre en cache le dépôt Debian buster dans la région us-east1 dans le projet Google Cloud my-project. L'URL complète de l'élément en amont est http://deb.debian.org/debian/dists/buster.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=apt \
    --location=us-east1 \
    --description="Apt remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Debian buster distribution" \
    --remote-apt-repo=DEBIAN \
    --remote-apt-repo-path="debian/dists/buster"

Yum (preview)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=yum \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-yum-repo=YUM_REPOSITORY_BASE \
    --remote-yum-repo-path="YUM_REPOSITORY_PATH"

Remplacez les éléments suivants :

  • REMOTE_REPOSITORY_NAME par le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.
  • PROJECT_ID par l'ID du projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
  • LOCATION avec l'emplacement régional ou multirégional emplacement du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Afficher une liste des emplacements compatibles, exécutez la commande gcloud artifacts locations list.
  • DESCRIPTION par une description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de référentiel ne sont pas chiffrées.
  • REMOTE_REPOSITORY_DESCRIPTION avec une description facultative pour la configuration du dépôt externe pour ce dépôt distant.
  • YUM_REPOSITORY_BASE par l'un des dépôts compatibles de base répertoriés dans le Package d'OS pris en charge en amont pour l'appareil distant Yum des dépôts.
  • YUM_REPOSITORY_PATH par le reste de l'URL en amont que vous souhaitez mettre en cache dans votre dépôt distant à la base du dépôt.

Par exemple, la commande suivante crée un dépôt distant pour les packages Yum. nommé my-repo dans la région us-east1 du projet Google Cloud my-project pour le dépôt en amont centos/8-stream/BaseOs/x86_64/os.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=yum \
    --location=us-east1 \
    --description="Yum remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="CentOS 8 x86" \
    --remote-yum-repo=CENTOS \
    --remote-yum-repo-path="centos/8-stream/BaseOs/x86_64/os"

Artifact Registry crée votre dépôt. Exécutez la commande suivante pour afficher une description du dépôt:

gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
    --location=LOCATION

Après avoir créé le dépôt, procédez comme suit:

Créer un dépôt distant à l'aide de Terraform

Utiliser la ressource google_artifact_registry_repository pour créer des dépôts. Version de terraform-provider-google Veuillez indiquer une version ultérieure de 5.0.0.

Si vous débutez avec Terraform pour Google Cloud, consultez le la page Get Started - Google Cloud (Premiers pas - Google Cloud) de la site Web HashiCorp.

L'exemple suivant définit le fournisseur et un dépôt distant avec le fichier Nom de ressource Terraform my-repo.

Docker

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "docker"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    docker_repository {
      public_repository = "DOCKER_HUB"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • LOCATION est l'emplacement du dépôt.
  • REPOSITORY_ID est l'ID du dépôt.
  • DESCRIPTION est la description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de dépôts non chiffrées.
  • KEY est le nom de la clé Cloud Key Management Service, si vous utilisez des clés de chiffrement gérées par le client (CMEK) pour le chiffrement. Omettez cet argument pour utiliser le paramètre par défaut, à savoir les clés de chiffrement gérées par Google.
  • CONFIG_DESCRIPTION est la description facultative de la télécommande. source.
  • DRY_RUN_STATUS détermine si les règles de nettoyage sont supprimées ou consignez uniquement les artefacts qui seront supprimés si vous définissez de nettoyage dans le dépôt. Omettez cette option si vous ne souhaitez pas effectuer d'ajout. de nettoyage dans le dépôt. * true: définit les règles pour qu'elles s'exécutent en mode de simulation. Aucun artefact n'est supprimé en mode de simulation. * false: applique les règles de nettoyage. Les artefacts sont supprimés ou conservées selon les règles. Pour en savoir plus sur les règles de nettoyage, consultez Configurez des règles de nettoyage.
    • POLICY_NAME est le nom de la règle de nettoyage.
    • TAG_STATE est l'état du tag auquel appliquer la règle. Valeurs sont tagged, untagged et any. any s'applique à la fois aux tags des artefacts sans tag. Si des tags immuables sont activés sur un dépôt, les artefacts ne peuvent pas être supprimés.
    • TAG_PREFIX et TAG_PREFIX_N sont des préfixes de tag auxquelles appliquer la stratégie.
    • PKG_PREFIX et PKG_PREFIX_N sont des préfixes de package. auquel appliquer la stratégie.
    • TIME_SINCE_UPLOAD est le temps écoulé depuis une version d'artefact a été importé dans le dépôt, avec une durée spécifiée. Vous pouvez spécifier durées en secondes, minutes, heures ou jours en ajoutant s, m, h, ou d respectivement.
    • KEEP_COUNT est le nombre de versions par package d'artefact à à conserver dans votre dépôt.

Maven

Si vous ne spécifiez pas de stratégie de version, Artifact Registry crée un dépôt Maven qui stocke instantanés et versions des packages par défaut.

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "maven"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    maven_repository {
      public_repository = "MAVEN_CENTRAL"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • LOCATION est l'emplacement du dépôt.
  • REPOSITORY_ID est l'ID du dépôt.
  • DESCRIPTION est la description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de dépôts non chiffrées.
  • KEY est le nom de la clé Cloud Key Management Service, si vous utilisez des clés de chiffrement gérées par le client (CMEK) pour le chiffrement. Omettez cet argument pour utiliser le paramètre par défaut, à savoir les clés de chiffrement gérées par Google.
  • CONFIG_DESCRIPTION est la description facultative de la télécommande. source.
  • DRY_RUN_STATUS détermine si les règles de nettoyage sont supprimées ou consignez uniquement les artefacts qui seraient supprimés si vous définissez de nettoyage dans le dépôt. Omettez cette option si vous ne souhaitez pas effectuer d'ajout. de nettoyage dans le dépôt. * true: définit les règles pour qu'elles s'exécutent en mode de simulation. Aucun artefact n'est supprimé en mode de simulation. * false: applique les règles de nettoyage. Les artefacts sont supprimés ou conservées selon les stratégies. Pour en savoir plus sur les règles de nettoyage, consultez Configurez des règles de nettoyage.
    • POLICY_NAME est le nom de la règle de nettoyage.
    • TAG_STATE est l'état du tag auquel appliquer la règle. Valeurs sont tagged, untagged et any. any s'applique à la fois aux tags des artefacts sans tag. Si des tags immuables sont activés sur un dépôt, les artefacts ne peuvent pas être supprimés.
    • TAG_PREFIX et TAG_PREFIX_N sont des préfixes de tag auxquelles appliquer la stratégie.
    • PKG_PREFIX et PKG_PREFIX_N sont des préfixes de package. auquel appliquer la stratégie.
    • TIME_SINCE_UPLOAD est le temps écoulé depuis une version d'artefact a été importé dans le dépôt, avec une durée spécifiée. Vous pouvez spécifier durées en secondes, minutes, heures ou jours en ajoutant s, m, h, ou d respectivement.
    • KEEP_COUNT est le nombre de versions par package d'artefact à à conserver dans votre dépôt.

Pour stocker les versions de l'instantané et des versions dans différentes des dépôts, spécifiez une stratégie de version pour à l'aide d'un bloc maven_config. Ce bloc est compatible avec les paramètres suivants:

  • version_policy définit la stratégie de version avec l'une des valeurs suivantes:
    • VERSION_POLICY_UNSPECIFIED: stocker les instantanés et les packages de version Ce est le paramètre par défaut.
    • VERSION: stocker uniquement les packages de version.
    • SNAPSHOT: stocker uniquement les packages d'instantané.
  • allow_snapshot_overwrites configure un dépôt avec un SNAPSHOT. pour accepter les instantanés qui ne sont pas uniques et écrasent les données existantes dans le dépôt.

L'exemple suivant définit un dépôt Maven avec une version .

provider "google" {
project = "my-project"
}

resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta

location = "LOCATION"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
mode = "REMOTE_REPOSITORY"
maven_config {
  version_policy = "RELEASE"
}
}

npm

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "npm"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    npm_repository {
      public_repository = "NPMJS"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • LOCATION est l'emplacement du dépôt.
  • REPOSITORY_ID est l'ID du dépôt.
  • DESCRIPTION est la description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de dépôts non chiffrées.
  • KEY est le nom de la clé Cloud Key Management Service, si vous utilisez des clés de chiffrement gérées par le client (CMEK) pour le chiffrement. Omettez cet argument pour utiliser le paramètre par défaut, à savoir les clés de chiffrement gérées par Google.
  • CONFIG_DESCRIPTION est la description facultative de la télécommande. source.
  • DRY_RUN_STATUS détermine si les règles de nettoyage sont supprimées ou consignez uniquement les artefacts qui seraient supprimés si vous définissez de nettoyage dans le dépôt. Omettez cette option si vous ne souhaitez pas effectuer d'ajout. de nettoyage dans le dépôt. * true: définit les règles pour qu'elles s'exécutent en mode de simulation. Aucun artefact n'est supprimé en mode de simulation. * false: applique les règles de nettoyage. Les artefacts sont supprimés ou conservées selon les stratégies. Pour en savoir plus sur les règles de nettoyage, consultez Configurez des règles de nettoyage.
    • POLICY_NAME est le nom de la règle de nettoyage.
    • TAG_STATE est l'état du tag auquel appliquer la règle. Valeurs sont tagged, untagged et any. any s'applique à la fois aux tags des artefacts sans tag. Si des tags immuables sont activés sur un dépôt, les artefacts ne peuvent pas être supprimés.
    • TAG_PREFIX et TAG_PREFIX_N sont des préfixes de tag auxquelles appliquer la stratégie.
    • PKG_PREFIX et PKG_PREFIX_N sont des préfixes de package. auquel appliquer la stratégie.
    • TIME_SINCE_UPLOAD est le temps écoulé depuis une version d'artefact a été importé dans le dépôt, avec une durée spécifiée. Vous pouvez spécifier durées en secondes, minutes, heures ou jours en ajoutant s, m, h, ou d respectivement.
    • KEEP_COUNT est le nombre de versions par package d'artefact à à conserver dans votre dépôt.

Python

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "python"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    python_repository {
      public_repository = "PYPI"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • LOCATION est l'emplacement du dépôt.
  • REPOSITORY_ID est l'ID du dépôt.
  • DESCRIPTION est la description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de dépôts non chiffrées.
  • KEY est le nom de la clé Cloud Key Management Service, si vous utilisez des clés de chiffrement gérées par le client (CMEK) pour le chiffrement. Omettez cet argument pour utiliser le paramètre par défaut, à savoir les clés de chiffrement gérées par Google.
  • CONFIG_DESCRIPTION est la description facultative de la télécommande. source.
  • DRY_RUN_STATUS détermine si les règles de nettoyage sont supprimées ou consignez uniquement les artefacts qui seraient supprimés si vous définissez de nettoyage dans le dépôt. Omettez cette option si vous ne souhaitez pas effectuer d'ajout. de nettoyage dans le dépôt. * true: définit les règles pour qu'elles s'exécutent en mode de simulation. Aucun artefact n'est supprimé en mode de simulation. * false: applique les règles de nettoyage. Les artefacts sont supprimés ou conservées selon les stratégies. Pour en savoir plus sur les règles de nettoyage, consultez Configurez des règles de nettoyage.
    • POLICY_NAME est le nom de la règle de nettoyage.
    • TAG_STATE est l'état du tag auquel appliquer la règle. Valeurs sont tagged, untagged et any. any s'applique à la fois aux tags des artefacts sans tag. Si des tags immuables sont activés sur un dépôt, les artefacts ne peuvent pas être supprimés.
    • TAG_PREFIX et TAG_PREFIX_N sont des préfixes de tag auxquelles appliquer la stratégie.
    • PKG_PREFIX et PKG_PREFIX_N sont des préfixes de package. auquel appliquer la stratégie.
    • TIME_SINCE_UPLOAD est le temps écoulé depuis une version d'artefact a été importé dans le dépôt, avec une durée spécifiée. Vous pouvez spécifier durées en secondes, minutes, heures ou jours en ajoutant s, m, h, ou d respectivement.
    • KEEP_COUNT est le nombre de versions par package d'artefact à à conserver dans votre dépôt.

Apt (aperçu)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "APT"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    apt_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • LOCATION est l'emplacement du dépôt.
  • REPOSITORY_ID est l'ID du dépôt.
  • DESCRIPTION est la description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de dépôts non chiffrées.
  • CONFIG_DESCRIPTION est la description facultative de la télécommande. source.
  • REPOSITORY_BASE est la base de dépôt public prédéfinie pour Apt. Les valeurs possibles sont DEBIAN et UBUNTU.
  • REPOSITORY_PATH est le dépôt spécifique à partir de la base. Pour exemple debian/dists/buster.

Yum (Preview)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "YUM"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    yum_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • LOCATION est l'emplacement du dépôt.
  • REPOSITORY_ID est l'ID du dépôt.
  • DESCRIPTION est la description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de dépôts non chiffrées.
  • CONFIG_DESCRIPTION est la description facultative de la télécommande. source.
  • REPOSITORY_BASE est la base de dépôt public prédéfinie pour Yum. Les valeurs possibles sont CENTOS, CENTOS_DEBUG, CENTOS_VAULT, CENTOS_STREAM, ROCKY et EPEL.
  • REPOSITORY_PATH est le dépôt spécifique à partir de la base. Pour exemple "centos/8-stream/BaseOS/x86_64/os.

Artifact Registry crée votre dépôt. Exécutez la commande suivante pour afficher une description du dépôt:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

Une fois le dépôt créé:

Modifier les descriptions du dépôt

Vous pouvez modifier la description du dépôt depuis la console Google Cloud ou gcloud CLI.

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt, puis cliquez sur Modifier le dépôt

  3. Modifiez la description du dépôt, puis cliquez sur Enregistrer.

gcloud

Pour mettre à jour la description du dépôt, exécutez la commande suivante:

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT \
    --location=LOCATION \
    --description="DESCRIPTION"

Remplacez les éléments suivants :

  • REPOSITORY : nom du dépôt Si vous avez configuré un dépôt par défaut, vous pouvez ignorer cette option et utiliser le dépôt par défaut.
  • PROJECT : ID de projet Google Cloud. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
  • LOCATION: a régional ou multirégional position. Utilisez cette option pour afficher les dépôts dans un emplacement spécifique. Si vous configuré un emplacement par défaut, vous pouvez omettre cet indicateur pour utiliser la valeur par défaut.
  • DESCRIPTION: description du dépôt.

Accès aux sources en amont dans un périmètre de service

Les services d'un périmètre de service VPC Service Controls sont soumis à des restrictions l'accès à des ressources situées en dehors du périmètre.

Vous pouvez autoriser ou refuser l'accès aux sources en amont dans une plage le projet et l'emplacement Google Cloud.

Par défaut, Artifact Registry refuse l'accès aux sources en amont si vous n'ont pas explicitement accordé l'accès.

Pour Artifact Registry, le rôle requis est celui d'administrateur Artifact Registry (roles/artifactregistry.admin).

Afficher les paramètres des sources en amont

Pour afficher la configuration d'une combinaison de projet/emplacement spécifique, exécutez la commande suivante:

gcloud artifacts vpcsc-config describe \
    --project=PROJECT_ID \
    --location=LOCATION

Par exemple, utilisez la commande suivante pour afficher les paramètres des dépôts distants. dans us-east1 dans le projet my-project:

gcloud artifacts vpcsc-config describe \
    --project=my-project \
    --location=us-east1

Autoriser l'accès aux sources en amont

Pour autoriser l'accès aux sources en amont dans un emplacement spécifié, exécutez la commande suivante:

gcloud artifacts vpcsc-config allow \
    --project=PROJECT_ID \
    --location=LOCATION

Par exemple, utilisez la commande suivante pour autoriser tous les dépôts distants dans us-east1 dans le projet my-project pour accéder à ses sources en amont en dehors du périmètre:

gcloud artifacts vpcsc-config allow \
    --project=my-project \
    --location=us-east1

Refuser l'accès aux sources en amont

Lorsque vous refusez l'accès aux sources en amont, les artefacts mis en cache des ressources distantes des dépôts restent disponibles.

Pour refuser l'accès aux sources en amont dans un emplacement spécifié, exécutez la commande suivante:

gcloud artifacts vpcsc-config deny \
    --project=PROJECT_ID \
    --location=LOCATION

Par exemple, utilisez la commande suivante pour bloquer l'accès aux sources en amont. en dehors du périmètre pour tous les dépôts distants dans us-west1 dans le Projet my-project:

gcloud artifacts vpcsc-config deny \
    --project=my-project \
    --location=us-west1

Étape suivante