Implantar contêineres no Cloud Run

Se você usar o gerenciador de serviços aprimorado do Linux, oferecido por padrão para migrar as cargas de trabalho, implante o contêiner no Cloud Run sem precisar fazer outras alterações no contêiner.

Para implantar o contêiner no Cloud Run, siga estas etapas:

  1. Instale a versão 1.15.0 do Migrate to Containers.

  2. Adicione uma origem de migração e crie uma migração como você faz hoje com o ambiente de execução atual.

  3. Personalize seu plano de migração conforme necessário.

    1. Faça o download do plano de migração. O plano de migração é representado por WindowsGenerateArtifacts:

      Por exemplo, para uma migração chamada "my-migration":

      migctl migration get my-migration
    2. Edite o plano de migração transferido por download, my-migration.yaml, em um editor de texto.

    3. Verifique o gerenciador de serviços aprimorado do Linux. A sinalização v2kServiceManager é definida como true por padrão. No entanto, se o Migrate to Containers detectar um serviço do sistema que não é compatível com o gerenciador de serviços, você receberá um alerta e a sinalização v2kServiceManager será definida como false. Quando a sinalização for false, a migração usará um ambiente de execução legado compatível com o serviço.

      O seguinte alerta é exibido junto com o serviço incompatível:

      Service is not supported by v2k service manager, therefore legacy runtime
      will be used instead of v2k service manager, and migrated workload would
      not fit running on Autopilot clusters of Cloudrun.

      Quando um serviço incompatível é encontrado, também é possível definir a sinalização manualmente como true. Nesse caso, você pode manter o serviço incompatível na imagem gerada em que ele não pode ser executado ou excluí-lo do plano de migração.

      Para ativar o novo gerenciador de serviços, redefina a sinalização para true:

      v2kServiceManager: true
      
    4. Realize outras personalizações necessárias para a migração conforme descrito em Personalizar o plano de migração.

    5. Quando as edições estiverem concluídas, salve o arquivo editado.

    6. Faça upload do plano de migração editado:

      migctl migration update my-migration --main-config my-migration.yaml
  4. Gere e revise os artefatos de migração como você faz hoje com o ambiente de execução atual.

  5. Edite o novo arquivo services-config.yaml para configurar as propriedades de inicialização do contêiner. Salve o arquivo e recrie sua imagem de contêiner para aplicar as alterações.

    Consulte Como usar o services-config.yaml para mais informações sobre como editar o arquivo services.yaml.

  6. Depois de gerar os artefatos de migração, abra o arquivo deployment_spec.yaml em um editor para determinar o local da imagem do contêiner. Por exemplo, você verá algo semelhante ao seguinte:

    spec:
      containers:
      - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL

    Em que gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL especifica o local da imagem do contêiner.

  7. Use o seguinte comando para implantar o contêiner no Cloud Run:

    gcloud run deploy my-runtime
        --image gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
        --region REGION --platform managed
        --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port PORT 

    A propriedade --set-env-vars define a variável de ambiente HC_V2K_SERVICE_MANAGER como true para ativar o gerenciador de serviços aprimorado do Linux.

    A propriedade --port especifica a porta em que as solicitações são enviadas para o contêiner. A porta padrão é 8080.

Exemplo: como implantar o contêiner do Guia de início rápido no Cloud Run

Use o Guia de início rápido atual para migrar um contêiner que contém um servidor da Web simples e implantá-lo no Cloud Run. As únicas alterações necessárias no processo do Guia de início rápido são:

  1. Na etapa 3 de Como migrar a VM, em que você revisa o plano de migração, defina v2kServiceManager como true no plano de migração e salve o plano:

    v2kServiceManager: true
    
  2. Após a conclusão da migração, abra o arquivo deployment_spec.yaml em um editor para determinar o local do contêiner. Por exemplo, você verá algo semelhante ao seguinte:

    spec:
      containers:
      - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
  3. Na seção Como implantar a carga de trabalho migrada, implante a imagem do contêiner no Cloud Run usando o comando:

    gcloud run deploy my-runtime
        --image gcr.io/PROJECT_NAME/quickstart-instance:LABEL
        --region REGION --platform managed
        --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port 80 

    O servidor da Web no contêiner migrado detecta solicitações na porta 80. Portanto, certifique-se de especificar essa porta ao implantar o contêiner.

    Você verá a seguinte resposta, que inclui o URL do serviço do Cloud Run:

    Allow unauthenticated invocations to [my-runtime] (y/N)?  y
    
    Deploying container to Cloud Run service [my-runtime] in project [PROJECT_NAME] region [REGION]
    Deploying new service... Done.
      ✓ Creating Revision…
      ✓ Routing traffic…
        Setting IAM Policy…
    Done.
    Service [my-runtime] revision [my-runtime-00001-sas] has been deployed and is serving 100 percent of traffic.
    Service URL: https://my-runtime-s5ahdq-uc.a.run.app
  4. No Cloud Shell, faça uma solicitação ao contêiner usando o URL de serviço, transmitindo suas credenciais:

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app

    Você verá a página "Hello World!".

A seguir