Como migrar um serviço do Knative serving para o Cloud Run

Use este guia para migrar suas cargas de trabalho para o Cloud Run. Em geral, a migração das cargas de trabalho exige que você faça a portabilidade de qualquer um dos recursos baseados no Kubernetes, para depois reimplantar cada um dos serviços atuais no Cloud Run.

Principais benefícios da migração para o Cloud Run:

  • Produto sem servidor totalmente gerenciado que implementa a especificação da API do Knative Serving e adere ao contrato do contêiner.

  • A API Admin v1 do Cloud Run foi projetada para maximizar a portabilidade com o Knative serving.

  • A experiência do usuário é semelhante no Cloud Run e no Knative serving:

    • O grupo de comandos gcloud run é usado nos dois produtos.
    • Layout e comportamento semelhantes da interface do usuário no Console do Google Cloud.

Antes de começar

Os recursos do Google Kubernetes Engine a seguir não são compatíveis com o Cloud Run, incluindo:

Considerações sobre a migração

Você precisa analisar e entender as seguintes diferenças entre os produtos para garantir que seja possível transferir todas as dependências e requisitos.

Secrets

No Cloud Run, é possível optar por ativar secrets como variáveis ou volumes de ambiente, mas os secrets com informações confidenciais precisam ser armazenados no Secret Manager.

Diferenças importantes entre secrets no Secret Manager e secrets do Kubernetes:

Recurso secrets do Secret Manager. Secrets do Kubernetes
Caracteres permitidos nos nomes [a-zA-Z0-9_-]{1,255} [a-z0-9-.]{1,253}
Controle de versões Os secrets têm controle de versões Sem suporte
Payload do secret Único []byte Mapa: <string, string>

Saiba como usar o Secret Manager para criar secrets com controle de versões para as chaves de secret dos seus serviços do Knative serving.

Rede

Use as informações a seguir para ajudá-lo na portabilidade da sua configuração de rede para o Cloud Run.

Pontos de extremidade de serviço
O Endpoints do Kubernetes dos seus serviços do Knative serving não são compatíveis com o Cloud Run. Saiba mais sobre os endpoints exclusivos no Cloud Run.
Mapeamentos de domínios
O Cloud Run API DomainMapping é compatível com o Knative serving. No entanto, o Cloud Run oferece mapeamento de domínio em um subconjunto dos locais do Cloud Run disponíveis. Uma alternativa recomendada é aproveitar o balanceador de carga HTTP(S) global para seus domínios personalizados.
Conectividade VPC
Os serviços do Cloud Run estão fora da sua VPC. Para se comunicar com os recursos em uma VPC, use o conector de acesso VPC sem servidor.
Controles de entrada
Se o serviço do Knative serving estiver configurado para um serviço interno particular rede e usa um balanceador de carga interno (ILB), é possível configurar Serviço do Cloud Run para Ingress = Internal. Configurar os serviços como internal restringe o acesso na VPC ou em outros serviços do Cloud Run. Saiba mais sobre a comunicação entre serviços.

Como migrar um serviço

Para migrar um serviço, exporte seu serviço do Knative serving, edite o arquivo YAML exportado e implantar o serviço reconfigurado no Cloud Run.

  1. Exporte o serviço de veiculação do Knative serving para um arquivo YAML local executando o seguinte comando:

    gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yaml
    

    Substitua:

    • SERVICE pelo nome do serviço do Knative serving.
    • NAMESPACE pelo namespace em que o serviço está sendo executado.
    • CLUSTER pelo nome do cluster em que o serviço está em execução.
    • FILENAME por um nome de arquivo exclusivo da sua escolha.
  2. Modifique o arquivo FILENAME.yaml exportado para o Cloud Run:

    • Pesquise e substitua o namespace do Kubernetes pelo ID do projeto do Google Cloud. Por exemplo, você precisa substituir namespace:default por namespace:my-unique-id.
    • Você precisa atualizar todas as configurações para qualquer um dos recursos incompatíveis.
    • Você precisa excluir qualquer um dos seguintes atributos e os valores deles:

      • metadata.annotations.kubectl.kubernetes.io/last-applied-configuration
      • metadata.managedFields
      • spec.template.spec.containers.readinessProbes
      • spec.template.spec.enableServiceLinks

      Por exemplo, talvez seja necessário remover a seguinte configuração dos atributos spec: > template: > spec: > containers::

      ...
       readinessProbe:
         successThreshold: 1
         tcpSocket: {}
      ...
      
  3. Implante o arquivo .yaml modificado no Cloud Run usando a sinalização --platform managed. Saiba mais sobre a implantação.

    É possível usar o mesmo projeto do Google Cloud para o Cloud Run.

    gcloud run services replace FILENAME.yaml --platform managed --region REGION
    

    Substitua:

  4. Configure o acesso ao serviço do Cloud Run:

  5. No Console do Google Cloud, na página de serviços, clique no link do URL exibido para abrir o endpoint exclusivo e estável do serviço implantado.

    Acessar o Cloud Run

Como migrar o tráfego para o serviço

Depois de testar os serviços recém-implantados e estar pronto para migrar todo o tráfego de produção, configure o domínio personalizado e atualize os registros DNS com seu registrador. Siga as instruções em Como mapear domínios personalizados.