O Enterprise Distributed Application Service (EDAS) oferece suporte à implantação de aplicativos em clusters Elastic Compute Service (ECS) e Kubernetes (K8s). Ambos os ambientes podem hospedar seus aplicativos, mas oferecem recursos diferentes. Utilize as sugestões e a comparação de recursos abaixo para escolher o ambiente adequado ao seu cenário.
Introdução aos ambientes de implantação
O EDAS disponibiliza dois ambientes de implantação em cluster para aplicativos: ECS e K8s.
Tanto os clusters ECS quanto os K8s suportam hospedagem, administração de serviços e observabilidade para aplicativos Java que utilizam os frameworks de microsserviços Spring Cloud, Dubbo ou High-Speed Service Framework (HSF).
Apenas os clusters K8s oferecem suporte a hospedagem, administração de serviços e observabilidade para aplicativos poliglotas.
Os dois ambientes também diferem em seus requisitos para aplicativos e pilhas de tecnologia, além das capacidades de gerenciamento fornecidas pelo EDAS.
Recomendações para seleção do ambiente de implantação
O ambiente K8s é recomendado para a maioria dos casos de uso. O EDAS possui integração profunda com o Alibaba Cloud Container Service for Kubernetes (ACK), oferecendo uma ampla gama de recursos de gerenciamento de aplicativos e maior utilização de recursos.
Selecione o ambiente apropriado com base no seu cenário.
|
Cenário |
Ambiente |
|
K8s environment |
|
ECS environment |
Caso já utilize o ambiente ECS para gerenciar aplicativos e necessite dos recursos avançados oferecidos pelo K8s, migre os aplicativos para um ambiente K8s.
Comparação de recursos de hospedagem de aplicativos
A tabela a seguir compara os recursos entre os ambientes ECS e K8s. Y = suportado, N = não suportado.
|
Recurso |
Ambiente ECS |
Ambiente K8s |
Observações |
|
Implantar aplicativo |
Y |
Y |
O ambiente K8s suporta mais políticas de agendamento de instâncias e permite implantar vários aplicativos em um único nó. |
|
Iniciar aplicativo |
Y |
Y |
Nenhuma |
|
Parar aplicativo |
Y |
Y |
Nenhuma |
|
Excluir aplicativo |
Y |
Y |
Nenhuma |
|
Dimensionamento de aplicativo |
Y |
Y |
Nenhuma |
|
Redefinir aplicativo |
Y |
N |
Este recurso não é necessário no ambiente K8s. Para redefinir um aplicativo, exclua o pod. |
|
Atualizar ou fazer downgrade de contêiner |
Y |
Y |
Nenhuma |
|
Rollback de aplicativo |
Y |
Y |
Nenhuma |
|
Dimensionamento horizontal automático |
Y |
Y |
Os métodos e regras suportados são diferentes. |
|
Dimensionamento agendado |
N |
Y |
Nenhuma |
|
Lançamento faseado |
Y |
Y |
Nenhuma |
|
Grupo de aplicativos |
Y |
N |
Nenhuma |
|
Configuração de grupo de aplicativos |
Y |
N |
Nenhuma |
|
Log em tempo real |
Y |
Y |
Nenhuma |
|
Diretório de log |
Y |
Y |
Nenhuma |
|
Log do SLS |
Y |
Y |
Nenhuma |
|
Server Load Balancer |
Y |
Y |
Nenhuma |
|
Verificação de integridade |
Y |
Y |
O ambiente K8s suporta sondas de prontidão e atividade, que diferem das verificações de integridade do ambiente ECS. |
|
Configurações de parâmetros da JVM |
Y |
Y |
Nenhuma |
|
Configuração do Tomcat |
Y |
Y |
Nenhuma |
|
Hook de ciclo de vida |
Y |
Y |
O ambiente K8s suporta hooks PostStart e PreStop, diferentes daqueles no ECS. |
|
Variável de ambiente |
Y |
Y |
Nenhuma |
|
Lançamento canário |
Y |
Y |
Nenhuma |
|
Monitoramento de tráfego |
Y |
Y |
Nenhuma |
|
Limitação de taxa e degradação |
Y |
Y |
No ambiente K8s, isso pode ser implementado sem modificar o código do aplicativo. |
|
Consulta à lista de serviços |
Y |
Y |
Nenhuma |
|
Envio de configuração |
Y |
Y |
Nenhuma |
|
Event Center |
Y |
Y |
Nenhuma |
|
Notificações |
Y |
Y |
Nenhuma |
|
Diagnóstico de aplicativos |
Y |
Y |
O K8s oferece capacidades mais integradas de monitoramento, controle e diagnóstico. |
|
Compra de recursos |
Y |
N |
Nenhuma |
|
Service Mesh |
N |
Y |
Nenhuma |
|
Suporte a implantação de imagem |
N |
Y |
Nenhuma |
|
Suporte poliglota |
N |
Y |
Nenhuma |
|
Suporte a NAS |
N |
Y |
Nenhuma |
Perguntas frequentes
Posso implantar várias instâncias de aplicativo em um único nó no ambiente ECS?
Não. Se precisar dessa capacidade, utilize o ambiente K8s.
É possível implantar aplicativos poliglotas em um ambiente ECS?
Não. Caso necessite desse recurso, use o ambiente K8s.
As operações da OpenAPI para os ambientes ECS e K8s são as mesmas?
Não. Para obter uma lista das operações da OpenAPI, consulte Visão geral da API.
Ambos os ambientes ECS e K8s suportam ferramentas de desenvolvedor?
Sim, mas as configurações variam entre os ambientes.
Para mais informações sobre o Cloud Toolkit, consulte Visão geral do Cloud Toolkit.
Para mais detalhes sobre o Maven Plugin, veja Visão geral do toolkit-maven-plugin.
Para saber mais sobre o Terraform, acesse Visão geral do Terraform.
Para informações adicionais sobre o Jenkins, consulte Visão geral do Jenkins.
Os ambientes ECS e K8s suportam o Apsara DevOps?
Sim. O Apsara DevOps 2020 oferece suporte a implantação tanto em ambientes ECS quanto K8s.
Versões anteriores do Apsara DevOps suportam implantação apenas em ambientes ECS. Para implantar em um ambiente K8s, migre para o Apsara DevOps 2020. Para mais informações, consulte Guia de migração para versões anteriores do Apsara DevOps (RDC).
O Apsara DevOps 2020 suporta implantação em ambientes ECS e K8s. Para mais detalhes, veja Apsara DevOps Flow.
Como o ambiente K8s escala horizontalmente os nós mediante compra de recursos?
No ambiente K8s, o dimensionamento elástico refere-se ao escalonamento de pods. Geralmente, isso não envolve a compra de novas instâncias ECS (nós) nem a liberação das existentes.
Utilize os recursos do Container Service for Kubernetes para implementar o dimensionamento elástico de nós.Para mais informações, consulte Dimensionamento automático de nós.
Se eu uso o recurso de script de montagem em um ambiente ECS, como faço a migração para o ambiente K8s?
Os scripts de montagem executam comandos específicos em determinadas etapas do processo de implantação do ECS. É possível associar scripts a quatro estágios do ciclo de vida: Preparar Instância, Iniciar Aplicativo, Parar Aplicativo e Destruir Instância.
Os hooks de ciclo de vida fornecidos pelo ambiente K8s limitam-se a PostStart e PreStop e não correspondem diretamente ao ciclo de vida do aplicativo no ECS. Portanto, ao migrar um aplicativo que utiliza scripts de montagem para o ambiente K8s, algumas modificações são necessárias.
Para scripts de montagem executados antes do estágio Preparar Instância, adicione-os a um Dockerfile e integre-os à imagem.
-
Quanto aos scripts de montagem executados antes do estágio Iniciar Aplicativo, também é possível adicioná-los a um Dockerfile e integrá-los à imagem.
Para um pod, a preparação da instância e o início do aplicativo fazem parte do mesmo processo.
Configure os scripts de montagem executados após o estágio de início no hook PostStart.
Para scripts executados antes do estágio de parada da instância, configure-os no hook PreStop.
Scripts de montagem rodados após o estágio de parada da instância devem realizar tarefas de limpeza durante o processo de desligamento gracioso do aplicativo. Por exemplo, utilize um ShutdownHook do Java ou escute o sinal SIGTERM. Se necessário, mova essas tarefas para o hook PreStop.
-
Execute as tarefas de limpeza dos scripts de montagem anteriores ao estágio de destruição da instância durante o desligamento gracioso do aplicativo. Uma opção é usar um ShutdownHook do Java ou monitorar o sinal SIGTERM. Conforme a necessidade, transfira essas tarefas para o hook PreStop.
Para um pod, destruir a instância e parar a instância fazem parte do mesmo processo.