Implante aplicativos no Serverless App Engine (SAE) a partir de código ou imagens de contêiner. O SAE gerencia os recursos computacionais e oferece suporte a Auto Scaling baseado em tráfego e implantação multizona.
Visão geral da solução
Você implantará um conjunto de aplicativos de microsserviços que se registram mutuamente, chamam métodos entre services e atendem ao tráfego da internet. O diagrama a seguir ilustra a arquitetura de exemplo.
Este tutorial usa um microsserviço Java como exemplo, mas o SAE suporta qualquer linguagem ou arquitetura : sites estáticos , aplicativos front-end e back-end , aplicativos monolíticos e aplicativos de microsserviços .
Neste tutorial, você:
Implanta aplicativos: implante aplicativos provedores e consumidores com imagens de exemplo. O Nacos integrado do SAE cuida do registro e da descoberta de services, permitindo que o consumidor chame o provedor.
Acesse o aplicativo pela internet: configure um endpoint público para o aplicativo consumidor.
Pré-requisitos
Procedimento
O SAE oferece diversos métodos de implantação. Escolha o console ou o saectl (compatível com kubectl) para concluir este tutorial.
Console
1. Implantar aplicativos
-
Implante o aplicativo provedor: faça login no console do SAE. Selecione . Escolha uma região (este tutorial usa China (Hangzhou)). Clique em Create Application, configure os parâmetros abaixo e clique em Create Application Now para ignorar as Advanced Settings.
Se não estiver no painel de navegação, selecione .
Caso o sistema solicite uma edição, selecione Standard Edition . A Lightweight Edition e a Professional Edition estão em beta apenas por convite. As diferenças entre edições não afetam este tutorial.
Insira um Application Name personalizado, como
provider.Defina Namespace Type como
System-created. Essa opção usa o namespace padrão e provisiona automaticamente recursos de rede (VPC, vSwitch e grupo de segurança).Defina Deployment Method como
Deploy Using Image. Clique em Set Image. Na aba Demo Image, selecione Microservice Application - Provider com Image Versionmicroservice-java-provider-v1.0e clique em OK.Em Capacity Settings, defina a Instance Specification e o Number of Instances do aplicativo.
-
Implante o aplicativo consumidor: repita as etapas anteriores com as seguintes alterações.
Insira um Application Name personalizado, como
consumer.Ao definir a imagem (Set Image), localize Microservice Application - Consumer e defina Image Version como
microservice-java-consumer-v1.0.
-
Verifique o resultado da implantação: aguarde cerca de um minuto até a conclusão.
Visualize os aplicativos na página Application List. Clique em um aplicativo para abrir seus detalhes.
Selecione Basic Information no painel de navegação. Na aba Instance List, visualize as instâncias do aplicativo.
2. Habilitar acesso público
Vincule uma instância CLB voltada para a internet ao aplicativo consumidor para permitir o acesso público.
-
Vincule uma instância CLB voltada para a internet ao aplicativo consumidor: na página de detalhes do aplicativo consumidor, acesse a aba Application Information. Em Application Access Settings, selecione CLB-based Access. Clique em Add internet-facing CLB, configure os parâmetros a seguir e clique em OK.
Para CLB Instance, selecione Create CLB Instance.
Na aba HTTP Protocol, defina HTTP Port como
80e container port como18082.
-
Verifique o resultado: após o SAE criar e vincular a instância CLB, o console exibirá o public endpoint do aplicativo.
Abra
http://<public_endpoint>/consumer-echo/hellono navegador, substituindo<public_endpoint>pelo valor real.Na página , visualize a topologia de chamadas entre os aplicativos consumidor e provedor.
3. Limpar recursos
Exclua os recursos criados neste tutorial para evitar cobranças desnecessárias.
-
Exclua os aplicativos: na página de detalhes de cada aplicativo, selecione e siga as instruções.
A instância CLB criada pelo SAE é liberada automaticamente ao excluir o aplicativo.
-
(Opcional) Exclua recursos de rede: o SAE criou automaticamente uma VPC, um vSwitch e um grupo de segurança durante a implantação.
Visualize a VPC: selecione e clique em default. Em Basic Information, clique no link da VPC para abrir sua página de detalhes.
Visualize o vSwitch e o grupo de segurança: na aba Resource Management da VPC, clique nos links para suas respectivas páginas de detalhes.
Exclua os recursos em suas respectivas páginas de detalhes.
Ferramenta saectl
1. Instalar e configurar o saectl
Instale o saectl e configure as credenciais da sua conta Alibaba Cloud. Para mais informações, consulte Instalar e configurar o saectl.
2. Implantar os aplicativos
-
Crie arquivos de configuração de recursos: crie os seguintes arquivos no mesmo diretório. Nota: substitua
image: ...cn-hangzhou...pela sua região de implantação.-
O arquivo
deployment-provider.yamlconfigura o aplicativo provedor:apiVersion: apps/v1 kind: Deployment metadata: annotations: sae.aliyun.com/new-sae-version: std # Select the application edition. 'std' indicates Standard Edition. The Lightweight and Professional editions are in invite-only beta. This selection does not affect the tutorial. name: provider # Customizable application name. namespace: default # Select the system-created default namespace, which automatically creates and associates network resources like VPCs, vSwitches, and security groups. spec: replicas: 2 # Number of application instances. selector: matchLabels: sae.aliyun.com/app-name: provider # Must be the same as the application name defined in metadata. template: metadata: labels: sae.aliyun.com/app-name: provider # Must be the same as the application name defined in metadata. spec: containers: - name: main # We recommend that you name the container 'main' to avoid conflicts. image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0 # The sample image for the provider application. Replace cn-hangzhou with your deployment region. resources: # Specification for a single application instance. 'limits' and 'requests' must have the same configuration. limits: cpu: "2" memory: 4Gi requests: cpu: "2" memory: 4Gi -
O arquivo
deployment-consumer.yamlconfigura o aplicativo consumidor:apiVersion: apps/v1 kind: Deployment metadata: annotations: sae.aliyun.com/new-sae-version: std # Select the application edition. 'std' indicates Standard Edition. The Lightweight and Professional editions are in invite-only beta. This selection does not affect the tutorial. name: consumer # Customizable application name. namespace: default # Select the system-created default namespace, which automatically creates and associates network resources like VPCs, vSwitches, and security groups. spec: replicas: 2 # Number of application instances. selector: matchLabels: sae.aliyun.com/app-name: consumer # Must be the same as the application name defined in metadata. template: metadata: labels: sae.aliyun.com/app-name: consumer # Must be the same as the application name defined in metadata. spec: containers: - name: main # We recommend that you name the container 'main' to avoid conflicts. image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-consumer-v1.0 # The sample image for the consumer application. Replace cn-hangzhou with your deployment region. resources: # Specification for a single application instance. 'limits' and 'requests' must have the same configuration. limits: cpu: "2" memory: 4Gi requests: cpu: "2" memory: 4Gi
-
Implante os aplicativos: execute
saectl apply -f deployment-provider.yaml -f deployment-consumer.yamlno diretório que contém os arquivos de configuração.-
Verifique o resultado:
-
Visualize os aplicativos: execute
saectl get deployments -n default. A flag-n defaultespecifica o namespace padrão. Na saída:STATERUNNINGindica que o aplicativo está em execução.PUBLISHINGsignifica que a implantação está em andamento.O campo
READYexiben/m, que representanumber of ready instances / desired number of instances.
-
Visualize as instâncias do aplicativo: execute
saectl get pods -n default. Na saída:STATUSRUNNINGindica que o contêiner está funcionando normalmente.ContainerCreatingsignifica que o contêiner está sendo criado.O campo
READYexiben/m, que representanumber of ready containers / total number of containers.
-
3. Habilitar acesso público
Vincule uma instância CLB voltada para a internet ao aplicativo consumidor para permitir o acesso público.
-
Crie um arquivo de configuração de recursos: crie um arquivo
svc.yamlpara configurar um Service que exponha o aplicativo consumidor à internet por meio de um CLB voltado para a internet:apiVersion: v1 kind: Service metadata: annotations: sae.aliyun.com/loadbalancer-address-type: internet # Address type. 'internet' for public and 'intranet' for private. name: internet-consumer # Fixed format: ${address-type}-${app-name} spec: ports: - name: port-80 # Fixed format: port-${external-port} port: 80 protocol: HTTP targetPort: 18082 # Container port of the consumer application. selector: sae.aliyun.com/app-name: consumer # Application name. type: LoadBalancer Implante o service: execute
saectl apply -f svc.yamlno diretório que contém o arquivo de configuração.-
Verifique o resultado:
-
Visualize o service: execute
saectl get services -n default. Na saída:EXTERNAL-IPmostra o endereço IP público.<pending>indica que o service ainda está sendo criado.PORT(S)exibe a porta de acesso configurada.
Acesse o aplicativo pela internet: execute
curl http://<public_endpoint>:<access_port>/consumer-echo/hello, substituindo<public_endpoint>e<access_port>pelos valores reais. A saída confirma que o consumidor está chamando o provedor.
-
4. Limpar recursos
Exclua os recursos criados neste tutorial para evitar cobranças desnecessárias.
Exclua os aplicativos: execute saectl delete -f deployment-provider.yaml -f deployment-consumer.yaml.
A instância CLB criada pelo SAE é liberada automaticamente ao excluir o aplicativo.
Próximos passos
-
Para implantar seus próprios aplicativos, o SAE oferece os seguintes métodos:
Implantar um aplicativo a partir de uma imagem (Recomendado): empacote seu aplicativo em uma imagem, envie-a para um repositório de imagens e implante-o no SAE.
Implantar um aplicativo a partir de um pacote de código: o SAE fornece runtimes para versões específicas de Java, PHP, Python e .NET Core. Crie um pacote de código compatível com os requisitos do SAE e implante-o diretamente.
-
Além do Nacos integrado do SAE, utilizado neste tutorial, o SAE suporta outros métodos de comunicação entre aplicativos:
Usar um registro MSE Nacos (Recomendado): um registro gerenciado com alto desempenho, escalabilidade e disponibilidade. Não requer auto-hospedagem.
Usar um registro de service autogerenciado: use seu registro existente (Nacos, ZooKeeper, etc.) com o SAE. Garanta a conectividade de rede e configure o endereço do registro no código do aplicativo.
Configurar acesso a services de aplicativos com base no Kubernetes Service: atribua um nome de domínio fixo dentro do cluster SAE para acesso entre aplicativos.
Além de vincular uma instância CLB, você pode vincular uma instância NLB ou configurar uma rota de gateway para acesso de entrada. Para acesso de saída a recursos externos, configure um NAT gateway ou vincule um EIP às instâncias.
Use namespaces personalizados para isolar ambientes (desenvolvimento, teste, produção). Cada namespace se vincula a uma VPC. Selecione vSwitches em diferentes zonas de disponibilidade para implantar em várias zonas.
Dimensione aplicativos ao ajustar a quantidade de instâncias e a especificação das instâncias, ou configure políticas de Auto Scaling com base no tráfego e no uso de recursos. Reduza custos ao ativar o modo ocioso.