Si usas Terraform para administrar tu infraestructura, puedes usar la versión beta del Proveedor de Google Cloud a fin de definir los siguientes recursos en tu configuración de Terraform.
- Repositorio de Artifact Registry (solo Docker)
- Permisos de administración de identidades y accesos (IAM)
Define tu repositorio y los permisos específicos de este en un módulo de Terraform.
Crea el archivo del módulo
.main.tf
con el proveedor degoogle
y el recurso del repositorio.Mediante la siguiente configuración, se define el proveedor y un repositorio con el nombre del recurso de Terraform
my-repo
.provider "google" { project = "PROJECT-ID" } resource "google_artifact_registry_repository" "my-repo" { provider = google-beta location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "DOCKER" kms_key_name = "KEY" }
Donde
- PROJECT-ID es el ID del proyecto de Google Cloud.
- REPOSITORY es el nombre del repositorio.
- LOCATION es la ubicación del repositorio.
- DESCRIPTION es la descripción opcional del repositorio. No incluyas datos sensibles, ya que las descripciones de los repositorios no están encriptadas.
- KEY es el nombre de la clave de Cloud Key Management Service, si usas claves de encriptación administradas por el cliente (CMEK) para la encriptación. Omite este argumento para usar la configuración predeterminada, las claves de encriptación administradas por Google.
Para otorgar permisos específicos del repositorio en tu módulo, agrega los recursos
google_artifact_registry_repository_iam
. En el siguiente ejemplo, se define una cuenta de servicio con el nombre de recursorepo-account
y se le otorga acceso de lectura a un repositorio con el nombre de recursomy-repo
.provider "google" { project = "PROJECT-ID" } resource "google_artifact_registry_repository" "my-repo" { provider = google-beta location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "DOCKER" } resource "google_service_account" "repo-account" { provider = google-beta account_id = "ACCOUNT-ID" display_name = "Repository Service Account" } resource "google_artifact_registry_repository_iam_member" "repo-iam" { provider = google-beta location = google_artifact_registry_repository.my-repo.location repository = google_artifact_registry_repository.my-repo.name role = "roles/artifactregistry.reader" member = "serviceAccount:${google_service_account.repo-account.email}" }
ACCOUNT-ID es el ID de la cuenta de servicio. Esta es la parte del campo de correo electrónico de la cuenta de servicio antes del símbolo
@
.Para ver ejemplos adicionales, incluida la asignación de permisos con una política de IAM, consulta la documentación de google_artifact_registry_repository_iam.
Inicializa Terraform mediante este comando:
terraform init
Aplica la configuración de Terraform:
terraform apply
Para confirmar que deseas aplicar las acciones, ingresa
yes
.