Perguntas mais frequentes de Migrando aplicativos Cloud Foundry para o Code Engine

Respostas a perguntas comuns sobre a migração de seus aplicativos Cloud Foundry para o Code Engine.

Posso usar uma URL customizada com o Code Engine?

Sim! Você pode mapear seu próprio URL personalizado para um aplicativo Code Engine criando um mapeamento de domínio personalizado no console Code Engine. Você também pode atribuir um URL personalizado por meio de um provedor de serviços de Internet, como IBM Cloud Internet Services. Para obter mais informações sobre a implementação de um aplicativo com um domínio personalizado por meio do site IBM Cloud Internet Services, consulte Configuração de um aplicativo altamente disponível. Para obter mais informações sobre a implantação de um aplicativo com um domínio personalizado por meio do site Cloud Internet Services (CIS), consulte Obtenção de um domínio personalizado e seu certificado TLS e chave privada.

Meu app contém uma rota específica. Posso usar a mesma rota?

É possível usar a mesma rota ou domínio customizado, desde que você o controle Se a rota for de outra origem, por exemplo, uma rota fornecida pelo IBM, como mybluemix.net, deve-se usar o domínio fornecido pelo Code Engine ou mapear um novo domínio customizado para seu app.

Posso parar meu aplicativo?

Não é possível parar seu app diretamente, mas é possível evitar que ele receba tráfego configurando sua visibilidade para project e permitindo que ele escale para 0. Para obter mais informações, consulte Como posso impedir que meu app receba tráfego?....

Por que tenho tantas instâncias do app?

Ao atualizar seu app, o Code Engine cria automaticamente uma nova revisão. Quando a revisão está disponível, o tráfego é roteado para as novas instâncias Enquanto a revisão aumenta a capacidade e o tráfego é transferido para ela, a instância do app original continua a manipular o tráfego Quando a revisão é escalada e todo o tráfego é roteado para ela, o aplicativo original é reduzido. Seu aplicativo também aumenta e desce automaticamente conforme o tráfego requer. Verifique novamente mais tarde para ter certeza de que seu app está executando o número correto de instâncias.. Para obter mais informações, consulte Configurando o ajuste de escala do aplicativo.

Por que meus apps são lentos para responder?

Seu aplicativo é escalonado para zero por padrão e, portanto, pode ser mais lento para responder enquanto é escalonado novamente. É possível mudar esse comportamento atualizando seu aplicativo e configurando a escala mínima como 1 no console ou na CLI.

Por exemplo, para configurar a escala mínima como 1 para um aplicativo chamado myapp por meio da CLI,

ibmcloud ce app update --name myapp --min-scale 1

Após as atualizações do aplicativo, uma única instância está sempre em execução. Esteja ciente de que encargos podem ser aplicados. Para obter mais informações, consulte Precificação para Code Engine.

Posso encaminhá solicitações para uma instância de aplicativo específica?

Não, essa funcionalidade não é suportada atualmente. Você pode aproximar essa funcionalidade usando divisão de tráfego Knative. Para obter mais informações sobre o uso da Knative com Code Engine, consulte Usando a Knative com Code Engine.

Eu uso um balanceador de carga global com meu app Cloud Foundry. Posso migrá-lo para o Code Engine?

Sim, será possível atualizar seu balanceador de carga global para apontar para seu app Code Engine, se for possível acessar a cadeia de certificados e a chave privada correspondente. As etapas a seguir assumem que você esteja usando o Cloud Internet Services (CIS); no entanto, é possível adaptar essas etapas para seu próprio balanceador de carga global.

Essas etapas usam o Console.

  1. Crie um mapeamento de domínio para o seu app Ao criar seu mapeamento de domínio, forneça sua chave privada e a cadeia de certificados completa do (s) domínio (s). Para obter mais informações, consulte Configurando mapeamentos de domínio customizado para o seu app Aguarde até que os mapeamentos de domínio em todos os projetos estejam mostrando um estado Ready

  2. Abra os detalhes de cada mapeamento de domínio e registre o valor de CNAME, por exemplo, custom.<your-random-id>.us-south.codeengine.appdomain.cloud ou custom.<your-other-random-id>.us-east.codeengine.appdomain.cloud.

  3. Navegue para a página de detalhes de cada aplicativo e selecione a guia Mapeamentos de domínio e, em seguida, selecione No external system domain mapping na seção de mapeamentos de domínio do sistema Esta etapa assegura que seus aplicativos sejam acessíveis apenas por meio dos domínios customizados quando chamados de fora desse projeto

  4. Em sua instância do Cloud Internet Services (CIS), navegue para Confiabilidade. > Balanceadores de carga globais> Conjuntos de origem e edite os conjuntos de origem existentes, mudando o endereço de origem para o CNAME que você registrou anteriormente

Seu balanceador de carga global agora está apontando para seu app Code Engine.

O meu aplicativo precisa seguir alguma especificação?

Seu app deve seguir a Metodologia do app de 12 fatores

Quais tipos de cargas de trabalho estão disponíveis com o Code Engine?

O Code Engine suporta dois tipos de cargas de trabalho: aplicativos e tarefas em lote.

Um aplicativo ou app executa o seu código para entregar solicitações de HTTP. Além das solicitações de HTTP tradicionais, o IBM Cloud® Code Engine também suporta aplicativos que usam WebSockets como seu protocolo de comunicações. O número de instâncias em execução de um aplicativo é automaticamente aumentado ou reduzido (para zero) com base nas solicitações recebidas e em suas definições de configuração. Um app contém uma ou mais revisões. Uma revisão representa uma versão imutável das propriedades de configuração do app. Cada atualização de uma propriedade de configuração do app cria uma nova revisão do app.

Um trabalho executa uma ou mais instâncias de seu código executável em paralelo. Ao contrário dos aplicativos, que manipulam solicitações de HTTP, as tarefas são projetadas para executar uma vez e encerrar. Ao criar uma tarefa, é possível especificar informações de configuração de carga de trabalho que são usadas cada vez que a tarefa é executada.

Determinando o tipo de cargas de trabalho que você deseja

A maioria dos aplicativos Cloud Foundry podem migrar para o Code Engine. No entanto, se o seu aplicativo Cloud Foundry não esperar por uma solicitação HTTP recebida, as tarefas provavelmente serão a melhor escolha. Para mais discussão e exemplos, consulte Planejamento para Code Engine.

Eu uso arquivos manifest. Existem opções semelhantes disponíveis com o Code Engine?

Se você usar arquivos manifest para seus aplicativos Cloud Foundry, mapeie seus atributos de manifest para os recursos ou a opção da CLI correspondentes do Code Engine.

CodificaçãoMarkdown para tabelas
Atributo de manifest Equivalente do Code Engine nos comandos ibmcloud ce app create ou app update
command Opção --command
disk_quota Configurado implicitamente pelo Code Engine.
docker Não necessário no Code Engine.
health-check-http-endpoint Não necessário no Code Engine. Por padrão uma análise TCP é usada para saber quando o aplicativo está funcional e pronto.
health-check-invocation-timeout Não necessário no Code Engine.
instances Opções --min-scale e --max-scale
memory Opção --memory
metadata Não suportado atualmente.
no-route Com a opção --cluster-local, o aplicativo ainda é acessível a partir de outras cargas de trabalho dentro do projeto, mas não inclui um URL acessível voltado para a Internet associado ao aplicativo.
path Não aplicável atualmente.
processes Não necessário no Code Engine. O aplicativo pode criar processos adicionais em tempo de execução.
random-route Não necessário no Code Engine. Cada projeto possui um subdomínio exclusivo e uma vez que o nome do aplicativo faz parte da URL, a URL tem a garantia de ser exclusiva.
routes Rotas personalizadas não são suportadas atualmente, mas você pode usar o IBM Cloud Internet Service(CIS)ou Cloudflare para fronte a sua aplicação com um domínio personalizado.
sidecars Não suportado atualmente.
stack Gerenciado implicitamente pelo Code Engine.
timeout Não necessário no Code Engine.
Variáveis de ambiente Opção -env
Serviços Veja o comando ibmcloud ce app bind.

O Code Engine suporta muitas opções que não estão disponíveis no Cloud Foundry, como a maneira de gerenciar o ajuste automático de escala. Veja Trabalhando com apps no Code Engine e Configurando o ajuste de escala de aplicativos.

Eu sei como implementar um app com o Cloud Foundry. O que eu preciso saber para implementar um app no Code Engine?

Se você souber implementar um app com o Cloud Foundry, localize o que você precisa saber para implementar um app no Code Engine.

Código de push

Com o Code Engine, é possível construir seu código que é originado em um repositório Git ou por meio de um sistema local (somente CLI). Além disso, como com o Cloud Foundry (cf push), é possível construir e implementar o seu app em uma única etapa com a CLI e o console do Code Engine. Para obter mais informações, consulte Como faço para que meu código seja executado como um componente de aplicativo do Code Engine?.

Contexto de implementação

O Cloud Foundry requer um Org e um Space para enviar por push o seu código para um aplicativo. Todos os usuários do Cloud Foundry, por padrão, recebem um Org e Space que são criados para eles. No entanto, para incluir novos, deve-se configurar um destino Org e Space semelhante ao exemplo a seguir.

ibmcloud cf create-org MyOrg
ibmcloud target -o <ORGNAME>
ibmcloud target -s dev

Ao implementar um app com o Cloud Foundry, essa Org e Space são destinados para a implementação.

O Code Engine usa o conceito de um grupo de recursos IBM Cloud e um projeto Code Engine.

ibmcloud target -g <RESOURCE-GROUP>
ibmcloud ce project create --name <PROJECTNAME>

Esses comandos não só criam um projeto, mas o "destinam" também. Todos os comandos subsequentes do Code Engine executados no contexto deste projeto até que um projeto diferente seja destinado usando o comando project select. Para obter mais informações, consulte Gerenciando projetos.

Logs

O Code Engine fornece logs para apps, tarefas e construções para ajudá-lo a determinar o que aconteceu quando as implementações não executaram adequadamente. É possível encontrar logs executando comandos semelhantes aos exemplos a seguir.

ibmcloud ce app logs -n <APPNAME>
ibmcloud ce jobrun logs -n <JOBRUN-NAME>
ibmcloud ce buildrun logs -n <BUILDRUN_NAME>

Você também pode usar o serviço IBM Cloud Logs, que está disponível para persistência mais duradoura das mensagens de registro. Para obter mais informações, consulte Visualizando logs .

Criando um serviço

A criação de uma instância de um serviço gerenciado é semelhante em Cloud Foundry e Code Engine.

Para criar um novo serviço para usar com seu aplicativo Cloud Foundry, use o comando a seguir.

ibmcloud cf create-service cloudantNoSQLDB lite myNameCloudant

Para criar um novo serviço para usar com os aplicativos Code Engine,

ibmcloud resource service-instance-create myNameCOS cloud-object-storage lite global

Ligação de serviços

Depois de criar seu aplicativo, é possível "ligar" seu aplicativo ao serviço.

Com Cloud Foundry, execute o comando a seguir.

ibmcloud cf bind-service appName instanceName

Com o Code Engine,

ibmcloud ce app bind --name appName --service-instance instanceName

As credenciais de instância de serviço (coordenadas) são injetadas no app (ou tarefa) utilizando variáveis de ambiente. O equivalente do Cloud Foundry a VCAP_SERVICES no Code Engine é CE_SERVICES. Para mais informações, consulte Integrando o serviço IBM Cloud com ligação de serviços.

Atualização de um app ou tarefa

Depois de criar seu aplicativo ou tarefa, é possível atualizar as propriedades de sua carga de trabalho usando o comando update. Por exemplo, para atualizar um aplicativo no Code Engine,

ibmcloud ce app update --name <APPNAME> ...

É possível atualizar qualquer uma das propriedades que estão disponíveis quando você cria uma aplicativo ou tarefa. Para obter mais informações,consulte os tópicos a seguir.

Suporte de tempo de execução

Code Engine é compatível com muitos dos tempos de execução suportados pelo Cloud Foundry. Para uma lista de runtimes que são suportados por Code Engine, veja buildpacks Cloud Native. Se quiser usar um tempo de execução que não seja compatível, por exemplo, Swift ou Liberty, você mesmo pode empacotar seu aplicativo como uma imagem de contêiner e implantar essa imagem em Code Engine sem criar a imagem diretamente de Code Engine.

Próximas etapas

  1. Acabou de iniciar a migração? Confira a Introdução.
  2. Comparar a terminologia do Cloud Foundry com o Code Engine.
  3. Experimente o Code Engine com um tutorial de construção local.
  4. O seu aplicativo usa ligações de serviço? Confira Migrando suas ligações de serviços.
  5. Aprenda sobre ajuste de escala e gerenciamento de tráfego.
  6. Encontre equivalentes do Code Engine para comandos do Cloud Foundry.
  7. Perguntas mais frequentes de Migrando aplicativos Cloud Foundry para Code Engine (página atual)

Outras Informações