Prepare a sua app Kubernetes do Terraform para o Google Cloud Marketplace

Antes de integrar a sua app Kubernetes do Terraform através do Producer Portal, recomendamos que prepare o seu ambiente e a sua app Kubernetes do Terraform para o Google Cloud Marketplace. Google Cloud

Antes de começar

Para aceder ao Producer Portal, certifique-se de que preencheu o formulário de informações do projeto do Google Cloud Marketplace.

Crie o seu espaço de trabalho

Recomendamos que crie um novo projeto na Google Cloud consola, com um ID do projeto que termine em -public, principalmente para os seus produtos do Cloud Marketplace. Para ver instruções detalhadas, consulte o artigo Criar e gerir projetos.

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

Conceda funções de gestão de identidade e de acesso e especifique um contacto de segurança para o seu projeto

Para conceder funções de gestão de identidade e de acesso (IAM) e especificar um contacto de segurança para o seu projeto, conclua os seguintes passos:

  1. Conceda as seguintes funções de IAM ao nível do projeto:

    • Editor de projeto, para cloud-commerce-marketplace-onboarding@twosync-src.google.com
    • Administrador de gestão de serviços (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 obter instruções detalhadas, consulte o artigo Conceder, alterar e revogar o acesso a recursos.

  2. Conceda as seguintes funções, ao nível do serviço, a cloud-commerce-procurement@system.gserviceaccount.com:

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

    Para ver os passos para conceder acesso ao nível do serviço, consulte o artigo Conceder e revogar o acesso à API.

  3. Especifique um contacto de segurança. Para mais informações, consulte o artigo Gerir contactos para notificações.

Configure o Artifact Registry

Para configurar o Artifact Registry, conclua os seguintes passos:

  1. Instale a CLI gcloud. Para atualizar uma instalação existente, execute o comando gcloud components update. Nota: no Ubuntu, use o pacote Debian para instalar a CLI gcloud. O pacote snap da CLI gcloud não inclui o kubectl nem extensões para autenticação com o Artifact Registry através da CLI gcloud.
  2. Instale o Docker se ainda não estiver instalado.
  3. Ative a API Artifact Registry, que lhe permite enviar conteúdo para o Artifact Registry.
    Ative a API
  4. Crie um repositório de preparação do Artifact Registry. Para ver passos detalhados, consulte o artigo Armazene imagens de contentores Docker no Artifact Registry.
  5. Ative a análise de artefactos, que permite a análise de segurança, para o seu repositório do Artifact Registry.
  6. Etiquete e envie as imagens que quer distribuir na sua app para o repositório de preparação do Artifact Registry.

Etiquete e envie as suas imagens

Para etiquetar e enviar as suas imagens para o Artifact Registry, conclua os seguintes passos:

  1. Escolha o caminho do repositório de preparação do Artifact Registry. Recomendamos que o seu repositório use a seguinte estrutura: us-docker.pkg.dev/YOUR_PARTNER_ID/YOUR_SOLUTION_ID. O repositório de preparação tem de estar dentro do limite de us-docker.pkg.dev. O Cloud Marketplace não suporta outras regiões nem domínios gcr.io, como europe-docker.pkg.dev, gcr.io ou eu.gcr.io, para apps Kubernetes do Terraform.
  2. Guarde ou copie o caminho do repositório de preparação para quando criar o produto no Producer Portal.
  3. Crie a imagem que quer enviar para o repositório de preparação do Artifact Registry.
  4. Use o Docker para etiquetar a imagem com o respetivo número de 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 sua imagem:

    gcloud docker push STAGING_REPO_PATH:tag
    
  6. Para cada etiqueta ou imagem adicional que queira adicionar ao repositório de preparação, repita os passos anteriores. Pode adicionar várias etiquetas a uma única imagem.

O envio de uma imagem para o repositório de preparação não a torna automaticamente visível para os utilizadores. As suas imagens ficam visíveis para os utilizadores depois de as publicar.

Crie um cluster de desenvolvimento no Kubernetes Engine

Usa o Google Kubernetes Engine para gerir e dimensionar clusters do Kubernetes. Para criar um cluster de teste e implementar uma app básica no mesmo, siga o início rápido do Google Kubernetes Engine.

Organize os seus lançamentos

Em geral, todas as versões da sua app têm de adotar a versão semântica 2.0, que segue a convenção de numeração MAJOR.MINOR.PATCH. Cada versão tem de ter um número de versão 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. Pode usar modificadores de pré-lançamento para armazenar e realçar quaisquer informações adicionais que considere úteis, como datas de compilação que indicam quando as versões foram criadas.

Recomendamos que lance o seu software em faixas. Cada faixa é uma série de versões com atualizações retrocompatíveis. As faixas de lançamento devem basear-se em versões secundárias, como 4.1.x. Evite usar nomes de versões genéricos, como newest.

Por exemplo, se estiver a lançar a versão 2.0 da sua app no Cloud Marketplace e esperar que as versões 2.0.1, 2.0.5 e posteriores sejam retrocompatíveis com a versão 2.0, organize estes lançamentos na faixa de lançamento 2.0.

Quando lança uma versão da sua app que não é retrocompatível ou uma versão que requer que os utilizadores sigam passos de migração manuais, lance-a numa nova faixa para que os utilizadores possam planear as respetivas atualizações.

Crie e carregue o wrapper do módulo do Terraform para o Cloud Storage

Tem de fornecer um módulo Terraform que os utilizadores do Cloud Marketplace possam usar para implementar a sua app Kubernetes Terraform. Este módulo usa o fornecedor Helm para implementar os gráficos Helm que forneceu. Para ver os passos para criar um módulo Terraform compatível com a sua app Terraform Kubernetes, consulte o guia de parceiros do Terraform Kubernetes no GitHub.

Escolha os identificadores dos seus produtos

Tem de selecionar os seguintes identificadores para a sua empresa, produto e imagens de contentores, que são usados para criar os URLs do Cloud Marketplace e os URIs das suas imagens de contentores:

  • O nome da sua empresa. Por exemplo, se o nome da sua empresa for Examplesoft Inc., pode 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 ver detalhes, consulte o artigo Organize os seus lançamentos, anteriormente nesta página.

Exemplos de identificadores de produtos

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

Nome Identificador
Empresa Examplesoft Inc examplesoft
Produto Exemplo Pro example-pro
Gráfico de leme Gráfico de leme gráfico
Imagem [1] Base de dados de exemplo example-db
Imagem [2] Fila de exemplos example-queue
Faixa de lançamento [1] Versão 4.x.x 4,0
Faixa de lançamento [2] Versão 5.x.x 5.0

A partir destes identificadores, são geradas automaticamente as seguintes informações:

  • 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

O que se segue?

Depois de configurar o seu Google Cloud ambiente para apps do Terraform Kubernetes, continue a preparar as suas apps para publicação concluindo os seguintes passos: