Exercício – Implantar um aplicativo de exemplo no cluster com GitOps e Flux

Concluído

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.

  1. 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.

    Screenshot of Azure Arc Jumpstart Apps repository.

  2. 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.

Screenshot of AKS Edge Essentials Kubernetes Azure Arc resource in Azure portal, with GitOps highlight.

  1. 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).

  2. 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
  3. Atualize a tabela de configuração e aguarde até que as configurações sejam instaladas e compatíveis.

    Screenshot of cluster-level and namespace-level configurations in Azure portal.

  4. 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
    
  5. 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.

    Screenshot of Windows VM with linux sample application running in the browser.

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.

  1. No fork do repositório azure-arc-jumpstart-apps, navegue até hello-arc > versões > aplicativo >hello-arc.yaml.

  2. 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!.

  3. Confirme a alteração selecionando Confirmar alterações... e, em seguida, Confirmar alterações.

    Screenshot of application changes in the GitHub repository.

  4. 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.

  5. Atualize o seu aplicativo para ver essa alteração refletida como uma atualização sem interrupção.

    Screenshot of Windows VM with updated linux sample application running in the browser.

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.