Preparar una aplicación de Kubernetes de Terraform para Google Cloud Marketplace

Antes de incorporar tu aplicación de Terraform Kubernetes a través del Portal del productor, te recomendamos que prepares tu Google Cloud entorno y tu aplicación de Terraform Kubernetes para Google Cloud Marketplace.

Antes de empezar

Para acceder al Portal del Productor, asegúrese de haber rellenado el formulario de información del proyecto de Cloud Marketplace.

Crear un espacio de trabajo

Te recomendamos que crees un proyecto en la Google Cloud consola con un ID de proyecto que termine en -public, principalmente para tus productos de Cloud Marketplace. Para obtener instrucciones detalladas, consulta el artículo sobre cómo crear y gestionar proyectos.

Si ya tienes un proyecto configurado para vender en Cloud Marketplace, comprueba que los roles de gestión de identidades y accesos (IAM) se hayan concedido correctamente para Kubernetes y ve directamente a la sección Configurar Artifact Registry de este documento.

Asignar roles de Gestión de Identidades y Accesos y especificar un contacto de seguridad para tu proyecto

Para asignar roles de Gestión de Identidades y Accesos (IAM) y especificar un contacto de seguridad para tu proyecto, sigue estos pasos:

  1. Concede los siguientes roles de gestión de identidades y accesos a nivel de proyecto:

    • Editor del proyecto, a cloud-commerce-marketplace-onboarding@twosync-src.google.com
    • Administrador de Service Management (roles/servicemanagement.serviceAdmin), a cloud-commerce-marketplace-onboarding@twosync-src.google.com y managed-services@cloud-marketplace.iam.gserviceaccount.com
    • Editor de configuración (roles/servicemanagement.configEditor) para cloud-commerce-producer@system.gserviceaccount.com

    Para obtener instrucciones detalladas, consulta Conceder, cambiar y revocar el acceso a los recursos.

  2. Asigna los siguientes roles a nivel de servicio a cloud-commerce-procurement@system.gserviceaccount.com:

    • Consumidor de servicio (roles/servicemanagement.serviceConsumer)
    • Controlador de servicio (roles/servicemanagement.serviceController)

    Para saber cómo conceder acceso a nivel de servicio, consulta Conceder y revocar el acceso a la API.

  3. Especifica un contacto de seguridad. Para obtener más información, consulta Gestionar contactos para las notificaciones.

Configurar Artifact Registry

Para configurar Artifact Registry, sigue estos pasos:

  1. Instala gcloud CLI. Para actualizar una instalación, ejecuta el comando gcloud components update. Nota: En Ubuntu, usa el paquete Debian para instalar la CLI de gcloud. El paquete snap de gcloud CLI no incluye kubectl ni extensiones para autenticarte en Artifact Registry con gcloud CLI.
  2. Instala Docker si aún no lo has hecho.
  3. Activa la API de Artifact Registry, que te permite enviar contenido a Artifact Registry.
    Habilita la API.
  4. Crea un repositorio de ensayo de Artifact Registry. Para ver los pasos detallados, consulta Almacenar imágenes de contenedores Docker en Artifact Registry.
  5. Activa Artifact Analysis, que permite analizar la seguridad, en tu repositorio de Artifact Registry.
  6. Etiqueta y envía las imágenes que quieras distribuir en tu aplicación a tu repositorio de ensayo de Artifact Registry.

Etiquetar e insertar imágenes

Para etiquetar tus imágenes y subirlas a Artifact Registry, sigue estos pasos:

  1. Elige la ruta del repositorio de almacenamiento temporal de Artifact Registry. Te recomendamos que tu repositorio tenga la siguiente estructura: us-docker.pkg.dev/YOUR_PARTNER_ID/YOUR_SOLUTION_ID. Tu repositorio de staging debe tener un tamaño máximo de us-docker.pkg.dev. Cloud Marketplace no admite otras regiones ni dominios gcr.io, como europe-docker.pkg.dev, gcr.io o eu.gcr.io, para aplicaciones de Terraform Kubernetes.
  2. Guarda o copia la ruta del repositorio de ensayo para cuando crees tu producto en el Portal del productor.
  3. Crea la imagen que quieras enviar a tu repositorio de almacenamiento provisional de Artifact Registry.
  4. Usa Docker para etiquetar la imagen con su número de versión, como 1.0:

    docker tag IMAGE_NAME STAGING_REPO_PATH:VERSION_NUMBER
    

    Por ejemplo, este comando podría ser: docker tag test-image us-docker.pkg.dev/testpartner/testsolution:1.0.

  5. Usa gcloud para enviar tu imagen:

    gcloud docker push STAGING_REPO_PATH:tag
    
  6. Repite los pasos anteriores por cada etiqueta o imagen adicional que quieras añadir a tu repositorio de staging. Puedes añadir varias etiquetas a una sola imagen.

Al enviar una imagen a tu repositorio de staging, no se hace visible automáticamente para los usuarios. Las imágenes se mostrarán a los usuarios después de que las publiques.

Crear un clúster de desarrollo en Kubernetes Engine

Utilizas Google Kubernetes Engine para gestionar y escalar clústeres de Kubernetes. Para crear un clúster de prueba y desplegar una aplicación básica en él, sigue la guía de inicio rápido de Google Kubernetes Engine.

Organizar tus lanzamientos

Por lo general, todas las versiones de tu aplicación deben adoptar la versión semántica 2.0, que sigue la convención de numeración MAJOR.MINOR.PATCH. Cada versión debe tener un número de versión único, como 1.0.1, 1.0.2 o 1.3.1. Si quieres añadir un modificador de versión preliminar, usa un guion después del número de versión, como 1.3.1-alpha201910. Puedes usar modificadores de versión preliminar para almacenar y destacar cualquier información adicional que te resulte útil, como las fechas de compilación que indican cuándo se crearon las versiones.

Te recomendamos que publiques tu software en pistas. Cada pista es una serie de versiones con actualizaciones retrocompatibles. Tus canales de lanzamiento deben basarse en versiones secundarias, como 4.1.x. Evita usar nombres de versión genéricos, como newest.

Por ejemplo, si vas a lanzar la versión 2.0 de tu aplicación en Cloud Marketplace y esperas que las versiones 2.0.1, 2.0.5 y posteriores sean compatibles con la versión 2.0, organiza estas versiones en la pista de lanzamiento 2.0.

Cuando publiques una versión de tu aplicación que no sea compatible con versiones anteriores o una versión que requiera que los usuarios sigan pasos de migración manuales, publícala en un nuevo canal para que los usuarios puedan planificar sus actualizaciones.

Crear y subir el envoltorio del módulo de Terraform a Cloud Storage

Debes proporcionar un módulo de Terraform que los usuarios de Cloud Marketplace puedan usar para desplegar tu aplicación de Kubernetes de Terraform. Este módulo usa el proveedor de Helm para desplegar los gráficos de Helm que has proporcionado. Para saber cómo crear un módulo de Terraform que sea compatible con tu aplicación de Kubernetes de Terraform, consulta la guía para partners de Kubernetes de Terraform en GitHub.

Elegir los identificadores de producto

Debe seleccionar los siguientes identificadores de su empresa, producto e imágenes de contenedor, que se utilizan para crear las URLs de Cloud Marketplace y los URIs de sus imágenes de contenedor:

  • El nombre de tu empresa. Por ejemplo, si el nombre de tu empresa es Examplesoft Inc., puedes usar el identificador examplesoft.
  • Nombre del producto. Por ejemplo, si el nombre del producto es Example Pro, utilice el identificador example-pro.
  • El canal de lanzamiento de tu producto, como 4.0. Para obtener más información, consulta la sección Organizar las versiones, que se encuentra más arriba en esta página.

Identificadores de producto de muestra

Por ejemplo, la empresa Examplesoft Inc. elige los siguientes identificadores para su producto, Example Pro:

Nombre Identificador
Empresa Examplesoft Inc examplesoft
Producto Example Pro example-pro
Gráfico de Helm Gráfico de Helm gráfico
Imagen [1] Base de datos de ejemplo example-db
Imagen [2] Cola de ejemplo example-queue
Canal de lanzamiento [1] Versión 4.x.x 4.0
Canal de lanzamiento [2] Versión 5.x.x 5,0

A partir de estos identificadores, se genera automáticamente la siguiente información:

  • URL del producto en Cloud Marketplace: https://console.cloud.google.com/marketplace/details/examplesoft/example-pro
  • Los URIs de Artifact Registry de tu proyecto:
    • us-docker.pkg.dev/examplesoft/example-pro/chart:4.0
    • us-docker.pkg.dev/examplesoft/example-pro/example-db:4.0
    • us-docker.pkg.dev/examplesoft/example-pro/example-query:4.0
    • us-docker.pkg.dev/examplesoft/example-pro/chart:5.0
    • us-docker.pkg.dev/examplesoft/example-pro/example-db:5.0
    • us-docker.pkg.dev/examplesoft/example-pro/example-query:5.0

Siguientes pasos

Después de configurar tu Google Cloud entorno para las aplicaciones de Terraform Kubernetes, sigue preparando tus aplicaciones para la publicación completando los siguientes pasos: