Exercício – Implantar um aplicativo de exemplo no cluster com GitOps e Flux
Neste exercício, implantamos um aplicativo Linux em contêineres em seu cluster do AKS Edge Essentials habilitado para Arc usando GitOps e Flux.
Bifurcar o repositório GitHub do aplicativo de demonstração
Se você ainda não tiver uma conta do GitHub, crie uma agora.
Navegue até o repositório do Azure Arc Jumpstart Apps e crie um fork para sua própria conta do GitHub selecionando Fork e, em seguida, Criar fork.
Confirme se a bifurcação foi criada com êxito navegando até os repositórios da sua conta e selecionando o repositório azure-arc-jumpstart-apps. A URL do repositório deve ter a seguinte aparência:
https://github.com/<your-github-username>/azure-arc-jumpstart-apps
Implantar o aplicativo
No portal do Azure, navegue até o cluster do AKS Edge Essentials habilitado para Arc e selecione GitOps em Configurações. Vamos criar uma configuração no nível do cluster e uma configuração no nível do namespace.
Selecione Criar e use os seguintes valores para a configuração no nível do cluster:
Atributo Entrada Noções básicas Nome da configuração config-nginx
Namespace ingress-nginx
Escopo Cluster Tipo Flux v2 Origem Tipo de origem Repositório do Git URL do repositório <URL do seu fork> Tipo de referência Branch Branch main Tipo do repositório Setor Público Intervalo de sincronização 1 Tempo limite de sincronização 10 Kustomizations Kustomizations Escolha Criar Nome da instância nginx
Caminho ./nginx/release
Intervalo de sincronização 10 Tempo limite de sincronização 10 Remover Enabled Force Não habilitado Observação
Aguarde até que o
config-nginx
tenha sido criado com êxito e fique visível no GitOps do portal do Azure antes de criar a configuração no nível do namespace (você pode passar para a criação da próxima configuração se a conformidade estiver em um estado pendente).Selecione Criar e use os seguintes valores para a configuração no nível do namespace:
Atributo Entrada Noções básicas Nome da configuração config-helloarc
Namespace hello-arc
Escopo Namespace Tipo Flux v2 Origem Tipo de origem Repositório do Git URL do repositório <URL do seu fork> Tipo de referência Branch Branch main Tipo do repositório Setor Público Intervalo de sincronização 1 Tempo limite de sincronização 10 Kustomizations Kustomizations Escolha Criar Nome da instância app
Caminho ./hello-arc/releases/app
Intervalo de sincronização 10 Tempo limite de sincronização 10 Remover Enabled Force Não habilitado Atualize a tabela de configuração e aguarde até que as configurações sejam instaladas e compatíveis.
Em sua VM, use
kubectl
para verificar se o serviço está em execução:kubectl get svc -n ingress-nginx kubectl get pods -n hello-arc
A saída de exemplo a seguir mostra que o serviço está em execução:
PS C:\akseeLearn> kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller LoadBalancer 10.43.136.240 192.168.0.4 80:31838/TCP,443:30386/TCP 18m ingress-nginx-controller-admission ClusterIP 10.43.11.51 <none> 443/TCP 18m PS C:\akseeLearn> kubectl get pods -n hello-arc NAME READY STATUS RESTARTS AGE hello-arc-7c66864f8d-662b7 1/1 Running 0 12m hello-arc-7c66864f8d-fdbkc 1/1 Running 0 12m hello-arc-7c66864f8d-prb2v 1/1 Running 0 12m
Para exibir o aplicativo, abra um navegador e navegue até o endereço EXTERNAL-IP atribuído ao serviço
ingress-nginx-controller
. No exemplo anterior, o endereço IP atribuído ao serviço é 192.168.0.4.
Atualizar o aplicativo
Configuramos o GitOps e o Flux para observar as alterações no branch principal do repositório com fork. Vamos fazer uma alteração no aplicativo e ver como o GitOps responde.
No fork do repositório azure-arc-jumpstart-apps, navegue até hello-arc > versões > aplicativo >hello-arc.yaml.
Faça uma alteração neste arquivo YAML selecionando Editar. Altere replicaCount para 5. Altere o valor para Implantar no GitOps do AKS Edge Essentials!.
Confirme a alteração selecionando Confirmar alterações... e, em seguida, Confirmar alterações.
Use
kubectl
para ver os pods antigos sendo encerrados e novos pods ficando online:kubectl get pods -n hello-arc -w
A saída de exemplo a seguir mostra o encerramento de pods antigos e os novos pods que estão online:
PS C:\akseeLearn> kubectl get pods -n hello-arc -w NAME READY STATUS RESTARTS AGE hello-arc-699dff9888-5mcjs 1/1 Running 0 19m hello-arc-699dff9888-qrsfw 1/1 Running 0 19m hello-arc-699dff9888-xm82r 1/1 Running 0 19m hello-arc-699dff9888-mpdxt 0/1 Pending 0 0s hello-arc-699dff9888-mpdxt 0/1 Pending 0 0s hello-arc-699dff9888-cvkgf 0/1 Pending 0 0s hello-arc-699dff9888-cvkgf 0/1 Pending 0 0s hello-arc-699dff9888-mpdxt 0/1 ContainerCreating 0 0s hello-arc-699dff9888-cvkgf 0/1 ContainerCreating 0 0s hello-arc-699dff9888-cvkgf 0/1 Running 0 1s hello-arc-699dff9888-mpdxt 0/1 Running 0 1s hello-arc-699dff9888-mpdxt 1/1 Running 0 2s hello-arc-699dff9888-cvkgf 1/1 Running 0 2s
Observação
Como definimos o intervalo de sincronização como 1 min ao criar a configuração, o Flux efetua pull das alterações do GitHub a cada minuto.
Atualize o seu aplicativo para ver essa alteração refletida como uma atualização sem interrupção.
Limpar os recursos do Azure
No decorrer deste módulo, você criou recursos do Azure. Se você não espera precisar desses recursos no futuro, exclua o grupo de recursos e a entidade de serviço executando os comandos az group delete e az ad sp delete no Azure Cloud Shell:
az group delete --name "aksedge-training" --force-deletion-types Microsoft.Compute/virtualMachines
az ad sp delete --id "<your-service-principal-ID>"
Importante
Para evitar o acúmulo de encargos indesejados, você deve remover os recursos do Azure e a Entidade de Serviço que você usou neste módulo.