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:
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), paracloud-commerce-marketplace-onboarding@twosync-src.google.comemanaged-services@cloud-marketplace.iam.gserviceaccount.com - Editor de configuração (
roles/servicemanagement.configEditor) paracloud-commerce-producer@system.gserviceaccount.com
Para instruções detalhadas, consulte Como conceder, alterar e revogar o acesso a recursos.
- Editor do projeto, para
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 o acesso à API.
- Consumidor de serviços (
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:
- 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 incluikubectlou extensões para autenticação com o Artifact Registry usando a CLI gcloud. - Instale o Docker se ele ainda não estiver instalado.
- Ative a API Artifact Registry, que permite enviar por push para o Artifact Registry.
Ativar a API - Crie um repositório de teste do Artifact Registry. Para etapas detalhadas, consulte Armazenar imagens de contêiner do Docker no Artifact Registry.
- Ative o Artifact Analysis, que permite a verificação de segurança, para seu repositório do Artifact Registry.
- 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:
- 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 emus-docker.pkg.dev. O Cloud Marketplace não oferece suporte a outras regiões ou domíniosgcr.io, comoeurope-docker.pkg.dev,gcr.iooueu.gcr.io, para apps do Kubernetes do Terraform. - Salve ou copie o caminho do repositório de teste para quando você criar seu produto no Portal do Produtor.
- Crie a imagem que você quer enviar para o repositório de teste do Artifact Registry.
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_NUMBERPor exemplo, este comando pode ser:
docker tag test-image us-docker.pkg.dev/testpartner/testsolution:1.0.Use
gcloudpara enviar a imagem:gcloud docker push STAGING_REPO_PATH:tagRepita 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.
(Somente implantação da UI) Criar metadados para seu módulo personalizado do Terraform
Para que seu módulo personalizado ofereça suporte à implantação da UI, crie e adicione metadados que o Cloud Marketplace usa para analisar corretamente o módulo e renderizá-lo na UI para o cliente.
Para criar e adicionar esses metadados, use a ferramenta de linha de comando CFT de código aberto para concluir as seguintes etapas:
Instale a ferramenta de linha de comando (CLI) do CFT. Recomendamos que você especifique o valor de
VERSIONcomolateste definaPLATFORMcomo um dos seguintes valores:linuxwindowsdarwinPara mais informações, consulte a documentação da CLI do CFT.
Execute este comando:
cft blueprint metadata -p TF_PACKAGE_PATH -q -d --nested=falseNesse comando, as flags são usadas da seguinte maneira:
- A flag
-pfornece um caminho para o pacote do Terraform. - A flag
-qgera metadados sem precisar de informações para um repositório remoto. - A flag
-dgera o arquivometadata.display.yaml. - A flag
--nested=falsegera metadados para o módulo raiz, ignorando todos os módulos na pastamodules/.
- A flag
Depois de concluir as etapas anteriores, a ferramenta de CLI do CFT vai gerar os seguintes arquivos:
metadata.yamlmetadata.display.yaml
Personalizar os metadados do módulo personalizado do Terraform
O Cloud Marketplace usa o arquivo metadata.display.yaml para criar o formulário
que os clientes usam para implantar seu produto na UI. Para personalizar a forma como o
formulário aparece para seus clientes, altere os valores dos campos em
metadata.display.yaml. Para detalhes sobre as opções de personalização disponíveis, acesse a documentação da interface do Blueprint (em inglês) de código aberto ou consulte o esquema da interface do Blueprint.
Recomendamos usar a extensão
GooglePropertyExtensions
para alterar seus metadados. O GooglePropertyExtensions permite usar validações específicas para Google Cloud, como garantir que os clientes só possam selecionar redes de nuvem privada virtual (VPC) que já existem no projetoGoogle Cloud . Por exemplo, consulte o
exemplo de módulo personalizado do Terraform.
Validar os metadados do módulo personalizado
Para validar os metadados do seu módulo personalizado, execute o seguinte comando:
cft blueprint metadata -p TF_PACKAGE_PATH -v
No comando anterior, as flags funcionam da seguinte maneira:
- A flag
-pfornece um caminho para o pacote do Terraform. - A flag
-vvalida todos os arquivos de metadados no caminho fornecido com base no esquemaBlueprintMetadata.
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.0us-docker.pkg.dev/examplesoft/example-pro/example-db:4.0us-docker.pkg.dev/examplesoft/example-pro/example-query:4.0us-docker.pkg.dev/examplesoft/example-pro/chart:5.0us-docker.pkg.dev/examplesoft/example-pro/example-db:5.0us-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:
- Adicione seu app do Kubernetes do Terraform ao Portal do Produtor.
- Adicione informações de preços para seu app.
- Configure a implantação do app, incluindo o gráfico do Helm e as imagens de contêiner.