Ejercicio: Implementación de una aplicación de ejemplo en el clúster con GitOps y Flux
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í.
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.
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.
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).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 Actualice la tabla de configuración y espere a que las configuraciones se instalen y sean compatibles.
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
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.
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.
En la bifurcación del repositorio azure-arc-jumpstart-apps, vaya a hello-arc > releases > app > hello-arc.yaml.
Realice un cambio en este archivo YAML seleccionando Editar. Cambie replicaCount a 5. Cambie el valor a Implementando en AKS Edge Essentials GitOps.
Confirme el cambio seleccionando Confirmar cambios... y, después, Confirmar cambios.
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.
Actualice la aplicación para ver este cambio reflejado como una actualización gradual.
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.