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: