Ejercicio: Implementación de una aplicación de ejemplo en el clúster con GitOps y Flux

Completado

En este ejercicio, implementamos una aplicación Linux contenedorizada en el clúster de Azure Arc-enabled AKS Edge Essentials mediante GitOps y Flux.

Bifurcación del repositorio de GitHub de la aplicación de demostración

Si no tiene una cuenta de GitHub, cree una aquí.

  1. Vaya al repositorio Azure Arc Jumpstart Apps y bifurquelo a su propia cuenta de GitHub; para ello, seleccione Bifurcar y, después, Crear bifurcación.

    Screenshot of Azure Arc Jumpstart Apps repository.

  2. Confirme que la bifurcación se creó correctamente; para ello, vaya a los repositorios de la cuenta y seleccione el repositorio azure-arc-jumpstart-apps. La dirección URL del repositorio debe ser similar a la siguiente:

    https://github.com/<your-github-username>/azure-arc-jumpstart-apps
    

Implementación de la aplicación

En Azure Portal, vaya al clúster de Azure Arc-enabled AKS Edge Essentials y seleccione GitOps en Configuración. Vamos a crear una configuración de nivel de clúster y otra de nivel de espacio de nombres.

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

  1. Seleccione Crear y use los valores siguientes para la configuración de nivel de clúster:

    Attribute Entrada
    Conceptos básicos
    Nombre de la configuración config-nginx
    Espacio de nombres ingress-nginx
    Ámbito Clúster
    Tipo Flux v2
    Origen
    Tipo de origen Repositorio Git
    Dirección URL del repositorio <Dirección URL de la bifurcación>
    Tipo de referencia Sucursal
    Sucursal main
    Tipo de repositorio Public
    Intervalo de sincronización 1
    Tiempo de espera de la sincronización 10
    Kustomizations
    Kustomizations Seleccione Crear
    Nombre de instancia nginx
    Path ./nginx/release
    Intervalo de sincronización 10
    Tiempo de espera de la sincronización 10
    Eliminación Habilitado
    Force No habilitado

    Nota:

    Espere hasta que config-nginx se haya creado correctamente y sea visible en GitOps de Azure Portal antes de crear la configuración de nivel de espacio de nombres (puede pasar a crear la siguiente configuración si el cumplimiento está en estado pendiente).

  2. Seleccione Crear y use los valores siguientes para la configuración de nivel de espacio de nombres:

    Attribute Entrada
    Conceptos básicos
    Nombre de la configuración config-helloarc
    Espacio de nombres hello-arc
    Ámbito Espacio de nombres
    Tipo Flux v2
    Origen
    Tipo de origen Repositorio Git
    Dirección URL del repositorio <Dirección URL de la bifurcación>
    Tipo de referencia Sucursal
    Sucursal main
    Tipo de repositorio Public
    Intervalo de sincronización 1
    Tiempo de espera de la sincronización 10
    Kustomizations
    Kustomizations Seleccione Crear
    Nombre de instancia app
    Path ./hello-arc/releases/app
    Intervalo de sincronización 10
    Tiempo de espera de la sincronización 10
    Eliminación Habilitado
    Force No habilitado
  3. Actualice la tabla de configuración y espere a que las configuraciones se instalen y sean compatibles.

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

  4. En la máquina virtual, use kubectl para comprobar que el servicio se está ejecutando:

    kubectl get svc -n ingress-nginx
    kubectl get pods -n hello-arc
    

    La salida de ejemplo siguiente muestra el servicio que se está ejecutando:

    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 ver la aplicación, abra un explorador y vaya a la dirección EXTERNAL-IP asignada al servicio ingress-nginx-controller. En el ejemplo anterior, la dirección IP asignada al servicio es 192.168.0.4.

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

Actualizar la aplicación

Hemos configurado GitOps y Flux para ver los cambios en la rama principal del repositorio bifurcado. Vamos a realizar un cambio en la aplicación y a observar cómo responde GitOps.

  1. En la bifurcación del repositorio azure-arc-jumpstart-apps, vaya a hello-arc > releases > app > hello-arc.yaml.

  2. Realice un cambio en este archivo YAML seleccionando Editar. Cambie replicaCount a 5. Cambie el valor a Implementando en AKS Edge Essentials GitOps.

  3. Confirme el cambio seleccionando Confirmar cambios... y, después, Confirmar cambios.

    Screenshot of application changes in the GitHub repository.

  4. Use kubectl para ver los pods antiguos que finalizan y los nuevos pods que aparecen en línea:

    kubectl get pods -n hello-arc -w
    

    En la salida de ejemplo siguiente se muestran los pods antiguos que finalizan y los nuevos pods que aparecen en línea:

    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
    

    Nota:

    Dado que establecemos el intervalo de sincronización en 1 minuto al crear la configuración, Flux incorpora los cambios de GitHub cada minuto.

  5. Actualice la aplicación para ver este cambio reflejado como una actualización gradual.

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

Limpieza de los recursos de Azure

En este módulo, ha creado recursos de Azure. Si no espera necesitar estos recursos en el futuro, elimine el grupo de recursos y la entidad de servicio ejecutando los comandos az group delete y az ad sp delete en 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 la acumulación de cargos no deseados, debe quitar la entidad de servicio y los recursos de Azure que usó en este módulo.