Cloud Computing

10 nov, 2017

ASP.NET Core + Docker: aplicações na nuvem com Azure Container Instances

Publicidade

Em artigos anteriores, abordei o uso de containers Docker em conjunto com o ASP.NET Core, empregando para isto, serviços como: Docker Hub, Azure Web App on Linux e Azure Container Registry. Caso deseje saber mais à respeito, acesse os links a seguir:

ASP.NET Core: APIs REST na nuvem com Docker e Azure Web App

ASP.NET Core 2.0: deployment na nuvem com Docker, Azure Container Registry e Azure Web App on Linux

A Microsoft anunciou em Julho/2017 um novo serviço chamado Azure Container Instances. Ainda em modo Preview, esta é uma alternativa que simplifica a utilização de containers Docker na nuvem. Embora dispense o uso de orquestradores (abordagem comum em cenários complexos, nos quais questões como um uso mais intensivo e escalabilidade são preocupações centrais), o Azure Container Instances pode mesmo assim ser integrado a soluções como o Kubernetes.

As próximas seções demonstram como utilizar este serviço, partindo dos exemplos apresentados nos posts indicados no início deste artigo.

Criando um container a partir do Docker Hub

Este primeiro exemplo faz uso de uma API REST para conversão de alturas em pés para o equivalente a metros. Para maiores detalhes sobre a implementação desse projeto baseado no ASP.NET Core 1.1 acesse este link.

A imagem pública que será empregada está disponível no Docker Hub como renatogroffe/apialturas:

No portal do Azure será criado um novo recurso baseado no serviço Azure Container Instances:

Acionar então o botão Criar:

Informar no formulário de criação:

  • O nome/identificação do recurso (apialturascontainer, neste exemplo) em Container name;
  • O tipo da imagem (Public) em Container image type;
  • A imagem em Container image (renatogroffe/apialturas);
  • Um Grupo de Recursos (TesteContainerInstances);
  • A Localização.

Na próxima tela será possível definir o tipo do sistema operacional (Linux em OS Type), número de cores/núcleos, memória, o uso ou não de um IP público (Yes em Public IP address) e a porta (normalmente 80 em se tratando de aplicações Web):

Em Resumo, clicar no botão OK, confirmando a criação de um novo container:

Após alguns segundos o item apialturascontainer-api1 constará na lista de recursos disponíveis:

Ao acessar este item, aparecerá então o recurso apialturarcontainer, com o IP público para acesso a este container, também destacado em vermelho:

Efetuando um teste com a URL http://13.90.204.247/api/conversoralturas/pesmetros/1000, será retornado o valor da conversão de 1000 pés para o equivalente em metros (304,8):

Observação: Além do portal de Azure, novos recursos baseados no serviço Azure Container Instances podem ser criados via Azure CLI 2.0. Para saber mais a respeito consulte este link.

Criando um container a partir do Azure Container Registry

Para o exemplo descrito nesta seção, será utilizada uma imagem privada, chamada renatogroffe.azurecr.io/sitedadosnasa, a qual se encontra armazenada em um recurso do Azure Container Registry. Trata-se de um site implementado com o ASP.NET Core 2.0 e que acessa uma API gratuita de consulta à imagens da NASA (Agência Espacial Norte-Americana):

As credenciais necessárias para utilização desta imagem estão na seção Access keys do Container Registry:

Observação: para maiores informações sobre este site de exemplo e o Azure Container Registry acesse este link.

Preencher no formulário de criação:

  • O nome/identificação do recurso (dadosnasacontainer) em Container name;
  • O tipo da imagem (Private) em Container image type;
  • A imagem em Container image (renatogroffe.azurecr.io/sitedadosnasa);
  • O servidor com imagens do Azure Container Registry (renatogroffe.azurecr.io) em Image registry login server;
  • O usuário para acesso ao Azure Container Registry (renatogroffe) em Image registry username;
  • A senha de acesso em Image registry password;
  • Um Grupo de Recursos (TesteContainerInstances2);
  • A Localização.

OBSERVAÇÃO: Os demais procedimentos de criação são idênticos ao exemplo descrito na seção anterior.

Na próxima imagem é possível observar o item dadosnasacontainer-dad4 em destaque:

Ao acessar este recurso aparecerão o IP público gerado e o container dadosnasacontainer:

Um teste com a URL http://40.76.21.242/ produzirá um resultado similar ao da imagem a seguir:

Referências