Implemente contentores no Cloud Run
Se usar o gestor de serviços do Linux melhorado que é oferecido por predefinição para migrar as cargas de trabalho do contentor, pode implementar o contentor no Cloud Run sem ter de fazer alterações adicionais ao contentor.
Para implementar o contentor no Cloud Run:
Adicione uma origem de migração e crie uma migração tal como faz atualmente com o tempo de execução existente.
Personalize o seu plano de migração conforme necessário.
Transfira o plano de migração. O plano de migração é representado por AppXGenerateArtifactsFlow.
Por exemplo, para uma migração denominada "my-migration":
migctl migration get my-migration
Abra o plano de migração transferido,
my-migration.yaml
, num editor de texto.Valide o gestor de serviços Linux melhorado. A sinalização
v2kServiceManager
está predefinida comotrue
. No entanto, se a ferramenta Migrate to Containers detetar um serviço do sistema que não é suportado pelo gestor de serviços, recebe um alerta e a flagv2kServiceManager
é definida comofalse
. Quando a flag éfalse
, a migração usa um tempo de execução antigo que suporta o seu serviço.O seguinte alerta é apresentado juntamente com o serviço não suportado:
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 é encontrado um serviço não suportado, também pode optar por definir manualmente a flag como
true
. Neste caso, pode optar por manter o serviço não suportado na imagem gerada, onde pode não ser executado, ou pode excluir o serviço removendo-o do plano de migração.Para ativar o novo gestor de serviços, reponha a flag para
true
:v2kServiceManager: true
Faça outras personalizações necessárias para a sua migração, conforme descrito no artigo Personalize o plano de migração.
Quando terminar as edições, guarde o ficheiro editado.
Carregue o plano de migração editado:
migctl migration update my-migration --main-config my-migration.yaml
Gere e reveja os artefactos de migração tal como faz atualmente com o tempo de execução existente.
Edite o novo ficheiro
services-config.yaml
para configurar as propriedades de inicialização do contentor. Guarde o ficheiro e recrie a imagem do contentor para aplicar as alterações.Consulte o artigo Usar services-config.yaml para obter mais informações sobre como editar o ficheiro
services.yaml
.Depois de gerar os artefactos de migração, abra o ficheiro
deployment_spec.yaml
num editor para determinar a localização da imagem do contentor. Por exemplo, deve ver algo semelhante ao seguinte:spec: containers: - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
Onde
gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
especifica a localização da imagem do contentor.Use o seguinte comando para implementar o contentor 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 ambienteHC_V2K_SERVICE_MANAGER
comotrue
para ativar o gestor de serviços do Linux melhorado.A propriedade
--port
especifica a porta para a qual os pedidos são enviados para o contentor. A porta predefinida é 8080.
Exemplo: implementar o contentor de início rápido no Cloud Run
Use o guia de início rápido atual para migrar um contentor que contenha um servidor Web simples e, em seguida, implemente-o no Cloud Run. As únicas alterações que tem de fazer ao processo de início rápido são:
No passo 3 da migração da VM, onde revê o plano de migração, defina
v2kServiceManager
comotrue
no plano de migração e, em seguida, guarde o plano:v2kServiceManager: true
Após a conclusão da migração, abra o ficheiro
deployment_spec.yaml
num editor para determinar a localização do contentor. Por exemplo, deve ver algo semelhante ao seguinte:spec: containers: - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
Na secção Implementar a carga de trabalho migrada, implemente a imagem do contentor no Cloud Run através do 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 Web no contentor migrado deteta pedidos na porta 80. Por isso, certifique-se de que especifica essa porta quando implementar o contentor.
Deverá 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
No Cloud Shell, faça um pedido ao contentor através do respetivo URL do serviço, transmitindo as suas credenciais:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app
Agora, deve ver a página "Hello World!".
O que se segue?
- Saiba como usar o services-config.yaml.