Exercício – conectar componentes nativos de nuvem
O Kubernetes fornece aos pods endereços IP próprios e um nome DNS para um conjunto de Pods. Os arquivos de manifesto do serviço contêm instruções para expor pods de maneira confiável, usando uma política que define como se conectar a eles. Se uma imagem de contêiner for reimplantada, você não precisará reconfigurar como se conectar à nova imagem devido às instruções no manifesto do serviço.
Os controladores de entrada definem como seu aplicativo pode se conectar ao mundo exterior. No cenário de exemplo, os refrigeradores inteligentes precisam enviar mensagens para o contêiner do Node.js e os controladores de entrada determinam a configuração dessa conexão.
Nesta unidade, você vai:
- Configure o manifesto de entrada para que a imagem de contêiner possa ser acessada por aplicativos externos.
- Implante o controlador de entrada.
- Crie um Aplicativo Web usando uma imagem do Docker.
Configurar o manifesto de entrada
Identifique o FQDN (nome de domínio totalmente qualificado) do host que tem a permissão de acessar o cluster usando o comando
az aks show
e consulte o valoraddonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName
.az aks show --resource-group $RESOURCEGROUP --name $CLUSTERNAME -o tsv --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName
Copie a saída e abra o editor integrado no Cloud Shell usando
code .
Abra o arquivo
ingress.yaml
e substitua o valorapiVersion
pornetworking.k8s.io/v1
e o valorhost
pelo FQDN copiado na etapa anterior.O arquivo deverá ser semelhante ao seguinte exemplo:
# ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cna-express annotations: kubernetes.io/ingress.class: addon-http-application-routing spec: rules: - host: cna-express.<exampleURL.eastus.aksapp.io> http: paths: - path: / # Which path is this rule referring to pathType: Prefix backend: # How the ingress will handle the requests service: name: cna-express # Which service the request will be forwarded to port: name: http # Which port in that service
Salve o arquivo de manifesto usando CTRL + S e feche o editor usando CTRL + Q.
Implantar a entrada
Envie o manifesto de entrada para o cluster usando o comando
kubectl apply
.kubectl apply -f ./ingress.yaml
O comando vai gerar um resultado semelhante ao seguinte exemplo:
ingress.networking.k8s.io/cna-express created
Retorne o Cloud Shell para a pasta de origem usando
cd ..
.cd ..
Pode haver um pequeno atraso entre a criação da entrada e a criação do registro de zona. Enquanto isso acontece, podemos criar o aplicativo Web.
Usar uma imagem do Docker para criar o aplicativo Web
Navegue para o portal do Azure e selecione seu registro de contêiner.
Em Configurações, selecione Chaves de acesso.
Selecione a opção Usuário administrador, que ativa a conta de usuário administrador para o registro.
Examinar a entrada
Navegue até o Azure Cloud Shell e verifique se a implantação foi bem-sucedida usando o comando
kubectl get ingress
.kubectl get ingress cna-express
O comando vai gerar um resultado semelhante ao seguinte exemplo:
NAME HOSTS ADDRESS PORTS AGE cna-express cna.5cd29ec927f24764b052.eastus.aksapp.io 52.226.96.30 80 4m44s
Verifique se a coluna
ADDRESS
da saída está preenchida com um endereço IP.Liste as zonas DNS para descobrir se nosso DNS foi criado usando o comando
az network dns zone list
.az network dns zone list --output table
O comando vai gerar um resultado semelhante ao seguinte exemplo:
Name ResourceGroup RecordSets MaxRecordSets ------------------------------------- -------------------------------------------- ------------ --------------- 5cd29ec927f24764b052.eastus.aksapp.io mc_rg-contoso-video_aks-contoso-video_eastus 4 10000
Copie os valores para
Name
eResourceGroup
a serem usados na próxima etapa.Liste os registros DNS da zona usando o comando
az network dns record-set list
. Substitua<name>
e<resource-group>
pelos valores que você copiou na etapa anterior.az network dns record-set list -g <resource-group> -z <name> --output table
O comando vai gerar um resultado semelhante ao seguinte exemplo:
Fqdn Name ProvisioningState ResourceGroup Ttl ---------------------------------------------- ------- ------------------- -------------------------------------------- ------ 5cd29ec927f24764b052.eastus.aksapp.io. @ Succeeded mc_learn-cna-rg_cna-demo-aks_eastus 172800 5cd29ec927f24764b052.eastus.aksapp.io. @ Succeeded mc_learn-cna-rg_cna-demo-aks_eastus 3600 cna.5cd29ec927f24764b052.eastus.aksapp.io. cna Succeeded mc_learn-cna-rg_cna-demo-aks_eastus 300 cna.5cd29ec927f24764b052.eastus.aksapp.io. cna Succeeded mc_learn-cna-rg_cna-demo-aks_eastus 300
Verifique se há dois novos registros na parte inferior da lista com o host que criamos na chave
host
. O valorProvisioningState
éSucceeded
. Pode levar vários minutos para que os registros de zona sejam propagados.Abra o navegador e vá para a URL de FQDN aksapp.io completa descrita na saída. Você deverá ver uma mensagem olá, mundo. Lembre-se de não incluir o
.
do final da URL.
Criar um aplicativo Web
Volte para o portal do Azure e selecione Criar um recurso.
Selecione Web>Aplicativo Web.
Na guia Básico, insira os seguintes valores para cada configuração:
Configuração Valor Detalhes do projeto Subscription Selecione a assinatura do Azure padrão em que você tem permissão para criar e gerenciar recursos. Grupo de recursos Na lista suspensa, selecione o grupo de recursos. Detalhes da Instância Nome Insira um nome exclusivo e anote-o para uso posterior. Publicar Contêiner do Docker Sistema operacional Linux Region Deixe como o padrão ou selecione um local que esteja perto de você. Planos de preços Plano do Linux Mantenha o padrão. Plano de preços Selecione F1 Grátis US$ 0,00/Mês. Selecione a guia Docker na parte superior da tela.
Na guia Docker, insira os seguintes valores para cada configuração:
Configuração Valor Opções Contêiner Único Origem da imagem Registro de Contêiner do Azure Registro Selecione seu registro. Imagem webimage
Marca latest
Comando de inicialização Deixe essa configuração vazia. Selecione Examinar e criar>Criar.
Configurar o aplicativo Web
Quando a implantação for concluída, selecione Ir para recursos.
Em Configurações, escolha Configuração.
Em Configurações do aplicativo, selecione Nova configuração de aplicativo.
Copie o valor a seguir e cole-o no campo Nome.
SOCKET_SERVER_URL
Para Valor, use a mesma URL de FQDN aksapp.io usada com o controlador de entrada e para acessar a página da Web olá, mundo.
Selecione OK>Salvar>Continuar.
Retorne ao Cloud Shell e crie uma variável de ambiente para o nome do aplicativo Web usando o comando a seguir. Substitua
<webapp-name>
pelo nome do aplicativo Web.WEBAPPNAME=<webapp-name>
Testar a solução
Execute o comando a seguir e selecione a URL para seu aplicativo Web.
echo select the link below echo http://$WEBAPPNAME.azurewebsites.net
É isso! Agora, você criou uma solução escalonável e nativa de nuvem. Fique à vontade para explorar os recursos e o código que você criou. Ao terminar, execute a próxima etapa no Azure Cloud Shell para excluir o grupo de recursos e evitar cobranças desnecessárias em sua conta.
az group delete --name $RESOURCEGROUP