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.
- O grupo de comandos
Antes de começar
Os recursos do Google Kubernetes Engine a seguir não são compatíveis com o Cloud Run, incluindo:
- recursos de cluster e pod, por exemplo, sondagens para inicialização, atividade e prontidão e descoberta de serviços.
- Configuração:
- ConfigMaps: é possível transformar seus ConfigMaps em secrets com o Secret Manager.
- GPUs NVIDIA
Controles de acesso:
Use o IAM no Cloud Run para ter o mesmo controle sobre o acesso aos recursos. Considere também usar a identidade do serviço.
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 comointernal
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.
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.
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
pornamespace:
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: {} ...
- Pesquise e substitua o namespace do Kubernetes pelo ID do
projeto do Google Cloud. Por exemplo, você precisa substituir
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:
FILENAME
pelo nome do arquivo de configuração exportado que você criou.REGION
por um local compatível com o Cloud Run. Exemplo:us-central1
Configure o acesso ao serviço do Cloud Run:
Por padrão, um serviço do Cloud Run não pode ser acessado externamente. Para expor publicamente o serviço à Internet e permitir solicitações não autenticadas, permita o acesso público (não autenticado).
Para configurar esse serviço para acesso interno interno apenas como entre os serviços do Cloud Run, consulte Como autenticar serviço a serviço.
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.
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.