Configurando um aplicativo altamente disponível

Você pode implantar seu aplicativo do IBM Cloud® Code Engine em várias regiões para torná-lo resiliente a falhas regionais. Observe que este exemplo utiliza uma rede global de distribuição de conteúdo (CDN) chamada IBM Cloud Internet Services, mas você pode usar outros provedores. Este exemplo também usa um domínio customizado..

Pré-requisitos

  • Você deve ter um nome de domínio personalizado para seu aplicativo, como example.com. Esse nome de domínio é usado por seu aplicativo Code Engine.
  • Configure uma instância do Cloud Internet Services (CIS).
  • Inclua seu nome de domínio no Cloud Internet Services (CIS). Ao registrar o seu nome de domínio com o Cloud Internet Services (CIS), você está delegando o controle de seu nome de domínio para o Cloud Internet Services (CIS). Observe que esta etapa pode levar um tempo para ser concluída

Criar projetos em diferentes regiões

Crie um projeto Code Engine em três regiões diferentes. Você pode usar um padrão de nomenclatura comum e uma tag compartilhada.

Por exemplo, crie um projeto chamado global-app-project nas regiões au-syd, eu-de e br-sao com a CLI ou por meio de um console

Projetos em várias regiões
Nome Status Marcar Local Grupo de recursos Criado
global-app-project Pronto global-app Sydney (au-syd) padrão
global-app-project Pronto global-app Frankfurt (eu-de) padrão 2 min.
global-app-project Pronto global-app São Paulo (br-sao) padrão 3 min.

Para obter mais informações, consulte Gerenciando projetos..

Implemente seus aplicativos em várias regiões

Agora que seus projetos foram criados em várias regiões, implemente seu aplicativo em cada projeto

Por exemplo, implementar o app codeengine/helloworld.

  1. Na página Projetos Code Engine, clique no nome de um dos projetos criados.

  2. Clique em Aplicativos e, em seguida, clique em Criar para criar um novo aplicativo

  3. Configure o seu app com as configurações a seguir:

    1. Dê o nome de “ global-app ” ao seu aplicativo.
    2. Selecione “Usar uma imagem de contêiner existente ” para indicar uma imagem de contêiner para seu aplicativo.
    3. Insira icr.io/codeengine/helloworld para a sua referência de imagem
    4. Na seção Recursos e ajuste de escala, configure seu número mínimo de instâncias para 1. Configurando seu número mínimo de instâncias como 1, é possível ativar as verificações de funcionamento por meio de sua instância do CIS para monitorar a disponibilidade de conjuntos para que o tráfego possa ser roteado para os funcionais.
    5. Deixe o restante das opções nas configurações padrão e clique em Criar.
  4. Repita essas etapas para criar o aplicativo em cada projeto..

Para obter mais informações sobre a implementação de seu aplicativo, consulte Implementando aplicativos.

Gere um certificado para seu domínio customizado

Em um ambiente corporativo, trabalhe com seu administrador de domínio corporativo para obter os certificados necessários.. No entanto, se o domínio customizado estiver dentro de seu controle e você desejar criar rapidamente um certificado que não seja autocertificado, será possível usar opcionalmente o serviço Let' s Encrypt e o Certbot para obter um certificado.

  1. Instale o Certbot Certbot é um cliente para o protocolo Automatic Certificate Management Environment(ACME) para automatizar interações entre uma CA e um servidor. O serviço Let' s Encrypt usa esse cliente para verificar a propriedade do domínio e emitir certificados. Na página Instruções do Certbot, selecione Other como o software e selecione o sistema operacional para a sua estação de trabalho para obter as informações aplicáveis para instalar a linha de comandos do Certbot

  2. Execute o comando a seguir para criar seu certificado. Este comando de exemplo cria um certificado para os domínios customizados example.com e www.example.com Assegure-se de atualizar o comando para seu próprio domínio customizado.

    certbot certonly --manual --preferred-challenges dns --email webmaster@example.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --domain example.com --domain www.example.com
    
  3. Para verificar se você possui o domínio, configure um registro TXT com seu registro de domínio para os domínios que você solicitou na etapa anterior com valores que foram fornecidos com a saída da ferramenta Certbot; por exemplo, _acme_challenge.example.com e _acme_challenge.ww.example.com. Após configurar o registro TXT, continue com o comando Certbot.

  4. O Certbot recupera o certificado assinado pelo Let' s Encrypt. O local onde o certificado é armazenado é fornecido pela saída Certbot. Localize os arquivos fullchain.pem e privkey.pem..

Criar um segredo do tipo “ TLS ”

Crie um segredo do TLS para armazenar seu certificado em Code Engine.

  1. Na página Projetos Code Engine, clique no nome de um dos projetos criados.
  2. Selecione “Secrets” e “configmaps ”.
  3. Clique em Criar.
  4. Clique em TLS secret.
  5. Insira global-tls como o nome.
  6. Copie o conteúdo do arquivo fullchain.pem no campo Cadeia de certificados.
  7. Copie o conteúdo do arquivo privkey.pem no campo Chave privada.
  8. Clique em Criar.
  9. Repita essas etapas para criar um segredo do tipo “ TLS ” em cada projeto que você criou anteriormente.

Para obter mais informações, consulte Trabalhando com segredos..

Configure os mapeamentos de domínio customizados..

Depois que seus apps forem implementados, configure um mapeamento de domínio customizado para eles

  1. Na página Projetos Code Engine, clique no nome de um dos projetos criados.
  2. Selecione “Aplicativos ”.
  3. Selecione o seu aplicativo global-app
  4. Selecione Mapeamentos de domínio
  5. Selecione Público para sua visibilidade.
  6. Clique em Criar para criar um mapeamento de domínio customizado..
  7. Clique em “Selecionar” para escolher um segredo existente do TLS e selecione global-tls.
  8. Insira seu nome completo do domínio; por exemplo, www.example.com
  9. Observe o valor de destino CNAME. Esse valor é necessário para configurar o roteamento para seu domínio no CIS.
  10. Verifique se o nome do app é global-app
  11. Clique em Criar.
  12. Repita essas etapas para criar um mapeamento de domínio customizado para cada aplicativo criado.

Configurar uma verificação de funcionamento

Ao criar seus aplicativos, você configura o Número mínimo de instâncias como 1. Como sempre há uma instância de seu app em execução em cada região, é possível configurar uma verificação de funcionamento de sua instância do CIS para monitorar a disponibilidade de conjuntos. Configurando uma verificação de funcionamento, o tráfego é sempre roteado para uma instância em execução, tornando seu app altamente disponível.

  1. Em sua instância do CIS, navegue para Confiabilidade> balanceadores de carga globais> Verificações de funcionamento.
  2. Clique em Criar.
  3. Nomeie sua verificação de funcionamento da mesma forma que o nome do aplicativo: global-app.
  4. Configure o Tipo de Monitor como HTTPS e a Portas como 443
  5. Aceite os valores padrão para as demais opções. Observe que se você estiver usando um aplicativo diferente do codeengine/helloworld, ajuste quaisquer opções que seu aplicativo requer.
  6. Clique em Criar.

Para obter informações adicionais, consulte Configurando verificações de funcionamento.

Configure o balanceador de carga Cloud Internet Services (CIS)

Depois que seus mapeamentos de domínio customizados estiverem em um estado Ready, configure o balanceador de carga do Cloud Internet Services (CIS) para seu terminal global do aplicativo. Para obter mais informações, consulte Configurando um balanceador de carga global.

  1. Acesse a página de Confiabilidade no console do Cloud Internet Services (CIS).

  2. Selecione Conjuntos de origem e clique em Criar.

    1. Nomeie seu conjunto global-app-au-syd.
    2. Configure o Endereço de origem para o destino CNAME do mapeamento de nome de domínio.
    3. Configure o cabeçalho Host para seu nome de domínio.
    4. Na Verificação de funcionamento, selecione Verificação de funcionamento existente e, em seguida, selecione global-app.
    5. Clique em Salvar.
    6. Repita essas etapas para cada região que contém o seu app implementado Altere o nome para refletir a região que você está destinando. Por exemplo, global-app-de-eu e global-app-br-sao
  3. Selecione Carregar balanceadores e clique em Criar.

    1. Nomeie seu balanceador de carga. Observe que esse nome aparece em seu domínio personalizado URL. Por exemplo, se seu domínio personalizado for global-app.example.com e você nomear seu balanceador de carga como global-app, seu URL será global-app.example.com.
    2. Configure Direcção de tráfego para Geo.
    3. Inclua suas rotas de Geo É possível escolher criar uma rota para todas as regiões do CIS ou apenas algumas regiões.
      • Se você criar uma rota para todas as regiões do CIS, em cada rota que você criar, inclua todos os conjuntos de origem criados anteriormente. Classifique-os para que uma região que contenha seu app em execução e esteja mais próxima da rota da região que você está configurando Por exemplo, se você criou apps em au-syd, eu-de e br-sao, então para Oceana, coloque au-syd primeiro. Para a Europa Oriental e Ocidental, coloque de-eu primeiro. E para a América do Norte e do Sul, coloque br-sao em primeiro lugar.
      • Se você criar uma rota apenas para algumas regiões do CIS, inclua uma rota para a região Padrão Essa rota é o fallback a ser usado quando uma região especificada não está disponível
    4. Clique em “Criar” para criar o balanceador de carga.

Verifique se seu aplicativo está disponível

Abra um navegador e insira seu nome do balanceador de carga mais seu nome de domínio customizado; por exemplo www.global-app.example.com

Agora, seus aplicativos estão altamente disponíveis

Limpando seu tutorial

  1. Exclua os balanceadores de carga globais e os conjuntos de origem do CIS
  2. Exclua seus registros DNS do CIS. Para obter mais informações, consulte Excluindo registros DNS.
  3. Exclua cada projeto criado. Quando você exclui um projeto, todos os componentes contidos nesse projeto também são excluídos Para obter mais informações, consulte Excluir um projeto.

Observe que seu domínio customizado não foi excluído, mas não está mais associado ao aplicativo criado.