Preparar seu app do Kubernetes do Terraform para o Google Cloud Marketplace

Antes de integrar seu app do Kubernetes do Terraform pelo Portal do Produtor, recomendamos que você prepare seu ambiente Google Cloud e seu app do Kubernetes do Terraform para o Google Cloud Marketplace.

Antes de começar

Para ter acesso ao Portal do Produtor, verifique se você preencheu o Formulário de informações do projeto do Cloud Marketplace.

Criar o espaço de trabalho

Recomendamos que você crie um novo projeto no Google Cloud console, com um ID do projeto que termine em -public, principalmente para seus produtos do Cloud Marketplace. Para instruções detalhadas, consulte Como criar e gerenciar projetos.

Se você já tiver um projeto configurado para vender no Cloud Marketplace, verifique se as funções do Identity and Access Management (IAM) foram concedidas corretamente para o Kubernetes e pule diretamente para Configurar o Artifact Registry neste documento.

Conceder papéis do Identity and Access Management e especificar um contato de segurança para seu projeto

Para conceder papéis do Identity and Access Management (IAM) e especificar um contato de segurança para seu projeto, siga estas etapas:

  1. Conceda os seguintes papéis do IAM no nível do projeto:

    • Editor do projeto, para cloud-commerce-marketplace-onboarding@twosync-src.google.com
    • Administrador do Service Management (roles/servicemanagement.serviceAdmin), para cloud-commerce-marketplace-onboarding@twosync-src.google.com e managed-services@cloud-marketplace.iam.gserviceaccount.com
    • Editor de configuração (roles/servicemanagement.configEditor) para cloud-commerce-producer@system.gserviceaccount.com

    Para instruções detalhadas, consulte Como conceder, alterar e revogar acesso a recursos.

  2. Conceda os seguintes papéis, no nível do serviço, a cloud-commerce-procurement@system.gserviceaccount.com:

    • Consumidor de serviços (roles/servicemanagement.serviceConsumer)
    • Controlador de serviço (roles/servicemanagement.serviceController)

    Para ver as etapas de concessão de acesso no nível do serviço, consulte Como conceder e revogar acesso à API.

  3. Especifique um contato de segurança. Para saber mais, consulte Como gerenciar contatos para notificações.

Configurar o Artifact Registry

Para configurar o Artifact Registry, siga estas etapas:

  1. Instale a CLI da gcloud. Para atualizar uma instalação, execute o comando gcloud components update. Observação: no Ubuntu, use o pacote Debian para instalar a CLI gcloud. O pacote snap da CLI gcloud não inclui kubectl ou extensões para autenticação com o Artifact Registry usando a CLI gcloud.
  2. Instale o Docker se ele ainda não estiver instalado.
  3. Ative a API Artifact Registry, que permite fazer push para o Artifact Registry.
    Ativar a API
  4. Crie um repositório de teste do Artifact Registry. Para etapas detalhadas, consulte Armazenar imagens de contêiner do Docker no Artifact Registry.
  5. Ative o Artifact Analysis, que permite a verificação de segurança, para seu repositório do Artifact Registry.
  6. Marque e envie as imagens que você quer distribuir no app para o repositório de teste do Artifact Registry.

Marcar e enviar imagens

Para adicionar tags e enviar as imagens ao Artifact Registry, siga estas etapas:

  1. Escolha o caminho do repositório de teste do Artifact Registry. Recomendamos que seu repositório use a seguinte estrutura: us-docker.pkg.dev/YOUR_PARTNER_ID/YOUR_SOLUTION_ID. O repositório de preparação precisa estar em us-docker.pkg.dev. O Cloud Marketplace não oferece suporte a outras regiões ou domínios gcr.io, como europe-docker.pkg.dev, gcr.io ou eu.gcr.io, para apps do Kubernetes do Terraform.
  2. Salve ou copie o caminho do repositório de teste para criar o produto no Portal do Produtor.
  3. Crie a imagem que você quer enviar para o repositório de teste do Artifact Registry.
  4. Use o Docker para marcar a imagem com o número da versão, como 1.0:

    docker tag IMAGE_NAME STAGING_REPO_PATH:VERSION_NUMBER
    

    Por exemplo, este comando pode ser: docker tag test-image us-docker.pkg.dev/testpartner/testsolution:1.0.

  5. Use gcloud para enviar a imagem:

    gcloud docker push STAGING_REPO_PATH:tag
    
  6. Repita as etapas anteriores para cada tag ou imagem que você quer adicionar ao seu repositório de teste. É possível adicionar várias tags a uma única imagem.

Enviar uma imagem ao repositório de teste não a torna visível aos usuários automaticamente. As imagens ficam visíveis para os usuários depois que você as publica.

Criar um cluster de desenvolvimento no Kubernetes Engine

Você usa o Google Kubernetes Engine para gerenciar e dimensionar clusters do Kubernetes. Para criar um cluster de teste e implantar um aplicativo básico, siga o Guia de início rápido do Google Kubernetes Engine.

Organizar seus lançamentos

Em geral, todas as versões do seu aplicativo devem adotar o Versionamento semântico 2.0, que segue a convenção de numeração MAJOR.MINOR.PATCH. Cada versão precisa ter um número exclusivo, como 1.0.1, 1.0.2 ou 1.3.1. Opcionalmente, para adicionar um modificador de pré-lançamento, use um traço após o número da versão, como 1.3.1-alpha201910. É possível usar modificadores de pré-lançamento para armazenar e destacar qualquer informação adicional que você achar útil, como datas de criação que indicam quando as versões foram criadas.

Recomendamos que você libere seu software em faixas. Cada faixa é uma série de versões com atualizações compatíveis com versões anteriores. As faixas de lançamento precisam ser baseadas em versões secundárias, como 4.1.x. Evite usar nomes genéricos de versão, como newest.

Por exemplo, se você estiver lançando a versão 2.0 do seu app no Cloud Marketplace e esperar que as versões 2.0.1, 2.0.5 e mais recentes sejam compatíveis com versões anteriores com 2.0, organize esses lançamentos na faixa de lançamento 2.0.

Quando você lançar uma versão incompatível com versões anteriores do seu app ou uma versão que exija que os usuários passem pelas etapas de migração manual, libere-a em uma nova faixa, para que os usuários possam planejar as atualizações.

Criar e fazer upload do wrapper do módulo do Terraform para o Cloud Storage

Você precisa fornecer um módulo do Terraform que os usuários do Cloud Marketplace possam usar para implantar seu app do Terraform Kubernetes. Esse módulo usa o provedor Helm para implantar os gráficos do Helm que você forneceu. Para saber como criar um módulo do Terraform compatível com seu app do Terraform Kubernetes, consulte o guia de parceiros do Terraform Kubernetes no GitHub.

Escolher os identificadores de produto

Você precisa selecionar os seguintes identificadores para sua empresa, produto e imagens de contêiner, que são usados para criar seus URLs do Cloud Marketplace e os URIs para suas imagens de contêiner:

  • O nome da empresa. Por exemplo, se o nome da sua empresa for Examplesoft Inc., você poderá usar o identificador examplesoft.
  • O nome do produto. Por exemplo, se o nome do produto for Example Pro, use o identificador example-pro.
  • A faixa de lançamento do seu produto, como 4.0. Para mais detalhes, consulte Organizar suas versões, anteriormente nesta página.

Exemplos de identificadores de produto

Por exemplo, a empresa Examplesoft Inc. escolhe os seguintes identificadores para o produto, Example Pro:

Nome Identificador
Empresa Examplesoft Inc examplesoft
Produto Example Pro example-pro
Gráfico do Helm Gráfico do Helm gráfico
Imagem [1] Exemplo de banco de dados example-db
Imagem [2] Example Queue example-queue
Faixa de lançamento [1] Version 4.x.x 4,0
Faixa de lançamento [2] Version 5.x.x 5.0

Com base nesses identificadores, as seguintes informações são geradas automaticamente:

  • O URL do produto no Cloud Marketplace: https://console.cloud.google.com/marketplace/details/examplesoft/example-pro
  • Os URIs do Artifact Registry no seu projeto:
    • 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

A seguir

Depois de configurar seu ambiente Google Cloud para apps do Terraform Kubernetes, continue preparando seus apps para publicação seguindo estas etapas: