Introducción
Argo CD es una implementación de código abierto popular para realizar entrega continua GitOps sobre Kubernetes. Sus aplicaciones, definiciones, configuraciones y entornos deben ser declarativos y versionados. Además, la implementación y gestión del ciclo de vida de las aplicaciones deben ser automatizadas, auditables y fáciles de entender. Todo esto se puede lograr utilizando Argo.
Argo CD sigue los mismos patrones y principios de GitOps, manteniendo así el estado de su clúster utilizando un enfoque declarativo. La sincronización se realiza a través de un repositorio Git, donde se almacenan los manifiestos de Kubernetes. Los manifiestos de Kubernetes pueden especificarse de varias formas:
- Aplicaciones Kustomize.
- Gráficos Helm.
- Aplicaciones Ksonnet.
- Archivos Jsonnet.
- Directorio simple de manifiestos YAML/json.
- Cualquier herramienta personalizada de gestión de configuración configurada como un complemento de gestión de configuración.
Como sucede con cada aplicación que se ejecuta en un clúster de Kubernetes, Argo CD se configura mediante definiciones de recursos personalizados (CRDs) almacenadas en manifiestos YAML. La más importante es la CRD Application. En una aplicación de Argo CD, defines qué repositorio Git se debe usar para sincronizar qué clúster de Kubernetes. Puede ser el mismo clúster de Kubernetes donde se implementa Argo CD, o uno externo.
Argo CD se implementa como un Controlador de Kubernetes que monitorea continuamente las aplicaciones en ejecución y compara el estado actual (o en vivo) con el estado objetivo deseado (como se especifica en el repositorio Git). Una aplicación implementada cuyo estado en vivo se desvía del estado objetivo se considera OutOfSync
. Argo CD informa y visualiza las diferencias, al tiempo que proporciona facilidades para sincronizar automáticamente o manualmente el estado en vivo de nuevo al estado objetivo deseado.
Argo CD ofrece muchas características, siendo las más destacadas:
- Soporte para múltiples herramientas de gestión/configuración, como:
Kustomize
,Helm
,Ksonnet
,Jsonnet
,plain-YAML
. - Capacidad para gestionar e implementar en múltiples clústeres.
- Integración SSO (
OIDC
,OAuth2
,LDAP
,SAML 2.0
,GitHub
,GitLab
,Microsoft
,LinkedIn
). - Multi-tenencia y políticas de RBAC para autorización.
- Análisis del estado de salud de los recursos de la aplicación.
- Revertir/Rodar-en-cualquier-lugar a cualquier configuración de aplicación comprometida en el repositorio Git.
- Detección de desviación de configuración automatizada y visualización.
- Interfaz de usuario web que proporciona una vista en tiempo real de la actividad de la aplicación.
- Interfaz de línea de comandos para automatización e integración CI.
- Integración de webhook (GitHub, BitBucket, GitLab).
- Ganchos PreSync, Sync, PostSync para soportar implementaciones complejas de aplicaciones (por ejemplo, actualizaciones azul/verde y canarias).
- Métricas de Prometheus.
En este tutorial, aprenderás a:
- Usar
Helm
para provisionarArgo CD
en tu clústerDOKS
. - Mantener sincronizado el estado de las aplicaciones del clúster de Kubernetes con un repositorio
Git
(utilizar principios deGitOps
). - Implementar y gestionar aplicaciones a través de Argo CD.
Después de completar todos los pasos de este tutorial, deberías tener un clúster DOKS
con Argo CD
desplegado, que:
- Maneje la reconciliación del clúster, a través de CRDs de Aplicación.
- Maneje las versiones de Helm, utilizando fuentes de Helm definidas dentro de los CRDs de la aplicación.
Visión general de DOKS y Argo CD para lanzamientos de Helm
El diagrama siguiente muestra cómo Argo CD gestiona las aplicaciones Helm alojadas utilizando un repositorio Git:
Tabla de Contenidos
- Introducción
- Prerrequisitos
- Comprensión de los Conceptos de Argo CD para la Implementación de Aplicaciones
- Instalación de Argo CD
- Acceso y Exploración de la Interfaz Web de Argo CD
- Conociendo la interfaz de línea de comandos de Argo CD
- Creación inicial de aplicaciones de Argo CD
- Uso de conjuntos de aplicaciones de Argo CD
- Desinstalación de aplicaciones de Argo CD
- Conclusión
Prerrequisitos
Para completar este tutorial, necesitarás:
- A working
DOKS
cluster that you have access to. Please follow the Starter Kit DOKS Setup Guide to find out more.to find out more. - A GitHub repository and branch, to store Argo CD and your applications manifests. Must be created beforehand.
- A Git client, for cloning the
Starter Kit
repository. - La CLI de Kubectl, para interactuar con
Kubernetes
. Siga estas instrucciones para conectarse a su clúster conkubectl
ydoctl
. - La CLI de Argo, para interactuar con
Argo CD
usando la interfaz de línea de comandos. - Kubeseal, para cifrar secretos e interacción con el controlador de Secretos Sellados.
- Helm, para gestionar versiones y actualizaciones de
Argo CD
(opcional, pero recomendado en general para sistemas de producción).
Entendiendo los Conceptos de Argo CD para el Despliegue de Aplicaciones
Argo CD utiliza el concepto central de Aplicación para gestionar el despliegue y el ciclo de vida de las aplicaciones. Dentro de un manifiesto de aplicación de Argo CD, se define el repositorio Git que aloja las definiciones de tu aplicación, así como el clúster de Kubernetes correspondiente para desplegar las aplicaciones. En otras palabras, una aplicación de Argo CD define la relación entre un repositorio fuente y un clúster de Kubernetes. Es un diseño muy conciso y escalable, donde puedes asociar múltiples fuentes (repositorios Git) y clústeres de Kubernetes correspondientes.
A major benefit of using applications is that you don’t need to deploy Argo to each cluster individually. You can use a dedicated cluster for Argo, and deploy applications to all clusters at once from a single place. This way, you avoid Argo CD downtime or loss, in case other environments have issues or get decommissioned.
Además, puedes agrupar aplicaciones similares en un Proyecto. Los proyectos permiten agrupar lógicamente aplicaciones y roles/permisos asociados cuando se trabaja con varios equipos. Cuando no se especifica, cada nueva aplicación pertenece al proyecto default
. El proyecto default
se crea automáticamente y no tiene restricciones. Se puede modificar el proyecto predeterminado, pero no se puede eliminar.
El Starter Kit
utiliza el proyecto default
para comenzar rápidamente con Argo CD. Luego, aprenderás cómo crear una Aplicación
para cada componente del Starter Kit
, y utilizar charts de Helm
como la fuente de la aplicación
. Argo CD no se limita solo a las fuentes de Helm, y también puedes aprovechar el poder de Kustomize, Ksonnet, Jsonnet, etc. Por favor, echa un vistazo a la página de fuentes de la aplicación para más detalles.
Aunque puedes utilizar la interfaz gráfica de usuario (interfaz web) de Argo CD para crear aplicaciones, el Starter Kit se basa en el enfoque declarativo de GitOps, mediante manifiestos YAML. Cada configuración YAML actúa como una receta para cada aplicación, por lo que puede almacenarse en un repositorio Git. Esto significa que siempre puedes recrear tu configuración de Argo CD si vuelves a crear tu entorno o te mudas a otro clúster. Más importante aún, puedes realizar auditorías y hacer un seguimiento de cada cambio a través del historial de Git. Es una buena práctica tener también los archivos de configuración de Argo CD en un repositorio Git separado al utilizado para el desarrollo de tu aplicación. Puedes leer la mejor página de prácticas en el sitio web oficial de documentación de Argo CD para obtener más información sobre el tema.
Nota importante:
Un aspecto importante a tener en cuenta es que por defecto Argo CD no sincroniza automáticamente tus nuevas aplicaciones. Cuando se crea por primera vez una Aplicación de ArgoCD, su estado es OutOfSync
. Significa que el estado del repositorio Git apuntado por la Aplicación de ArgoCD no coincide con el estado del clúster de Kubernetes. La creación de una nueva Aplicación de ArgoCD no desencadena un despliegue automático en el clúster de destino.
Para habilitar la sincronización automática y la eliminación de recursos huérfanos (poda), es necesario crear una syncPolicy
. También puedes configurar Argo CD para revertir automáticamente los cambios manuales realizados a través de kubectl
. Puedes leer más sobre las políticas de sincronización automática en el sitio de documentación oficial.
Un CRD de Aplicación
típico que utiliza una fuente de repositorio Git se ve así:
Explicaciones para la configuración anterior:
spec.project
: Indica a Argo CD qué proyecto usar para la aplicación (default
en este ejemplo).spec.source.repoURL
: URL del repositorio Git utilizada para sincronizar el estado del clúster.spec.source.targetRevision
: Revisión del repositorio Git utilizada para la sincronización (también puede ser un nombre de rama o etiqueta).spec.source.path
: Ruta del repositorio Git donde se almacenan los archivos fuente (manifiestos YAML).spec.destination.server
: Dirección del clúster de Kubernetes de destino. Normalmente apunta ahttps://kubernetes.default.svc
, si Argo CD está utilizando el mismo clúster donde está desplegado.spec.destination.namespace
: Espacio de nombres de Kubernetes que se utilizará para su aplicación.spec.syncPolicy.automated
: Habilita la sincronización automatizada de aplicaciones en su clúster con un repositorio Git.spec.syncPolicy.automated.prune
: Prune especifica si se deben eliminar recursos del clúster que ya no se encuentran en las fuentes como parte de la sincronización automatizada.spec.syncPolicy.automated.selfHeal
: Especifica si se deben revertir los recursos a su estado deseado después de una modificación manual en el clúster (por ejemplo, a través dekubectl
).
También puede utilizar repositorios Helm como fuente para instalar aplicaciones en su clúster. Un CRD de aplicación
típico que utiliza una fuente de repositorio Helm se ve así (similar al ejemplo de repositorio Git, excepto que se utiliza un repositorio de gráficos Helm):
Explicaciones para la configuración anterior:
spec.source.chart
: Gráfico Helm que se utilizará como fuente para la aplicación.spec.source.repoURL
: URL del repositorio de gráficos Helm.spec.source.targetRevision
: Versión del gráfico Helm que se utilizará para la aplicación.spec.source.helm.releaseName
: Nombre de la versión de Helm que se creará en su clúster de Kubernetes.spec.source.helm.values
: Especifica los valores de Helm que se pasarán a la plantilla de helm, normalmente definidos como un bloque.spec.destination.server
: Dirección del clúster de Kubernetes de destino. Normalmente apunta ahttps://kubernetes.default.svc
, si Argo CD está utilizando el mismo clúster donde está desplegado.spec.destination.namespace
: Espacio de nombres de Kubernetes para utilizar en tu aplicación.
Por favor, continúa leyendo más sobre los conceptos fundamentales de Argo CD en el sitio web de documentación oficial. A continuación, descubrirás las opciones de instalación disponibles para implementar Argo CD en tu clúster de Kubernetes.
Instalando Argo CD
Argo CD se puede instalar usando kubectl
o Helm
:
- Usando
kubectl
y un archivo de manifiesto de instalación. Este método no ofrece control directo para varios parámetros de instalación. Si no estás muy familiarizado con las instalaciones basadas en Helm, esta es la opción más directa para comenzar. - Instalación basada en Helm. Ofrece un control más granular para la implementación y el ciclo de vida de la aplicación Argo CD. Recomendado para configuraciones de
HA
(Alta Disponibilidad) y si Argo CD se utiliza enproducción
.
A continuación, dependiendo de las funciones que desees disponibles, tienes dos opciones:
- Modo
Multi-Tenante
. Este tipo de instalación se utiliza típicamente para atender a múltiples equipos de desarrollo de aplicaciones en la organización y es mantenido por un equipo de plataforma. Los usuarios finales pueden acceder a Argo CD a través delservidor API
utilizando laInterfaz de Usuario Web
o elCLI argocd
. - Modo solo
Core
. Esta es una instalación reducida, sin la interfaz de usuario gráfica, servidor API, SSO, etc., e instala la versión liviana (no-HA) de cada componente.
El Kit de Inicio está utilizando los modos Multi-Tenant
y Alta Disponibilidad
para instalar Argo CD en su clúster DOKS. De esta manera, tendrá una configuración confiable y explorará todas las funciones disponibles, incluida la interfaz de usuario. Por favor, visite la página de documentación de métodos de instalación para obtener más información sobre el tema.
Instalación basada en Kubectl
Este método requiere kubectl
, y es un proceso de dos pasos:
- Crear un
namespace
para desplegar Argo CD en sí mismo. - Ejecutar el manifiesto de instalación de alta disponibilidad, a través de
kubectl
.
Por favor, ejecute los siguientes comandos en orden:
Ahora, por favor, proceda a verificar si la instalación fue exitosa. Primero, verifique si todos los despliegues de Argo CD están saludables:
La salida se ve similar a (verifique la columna READY
– todos los Pods
deben estar en ejecución):
El servidor de Argo CD debe tener un valor mínimo de 2
para el replicaset
en el modo HA
. Si por alguna razón algunos despliegues no están saludables, por favor, verifique los eventos de Kubernetes y los registros de los Pods del componente afectado.
Instalación basada en Helm
Este método requiere que Helm esté instalado en su máquina local. El Kit de inicio proporciona un archivo de valores de Helm listo para usar para comenzar e instala Argo CD en modo HA (sin escalado automático).
Por favor, siga los siguientes pasos para completar la instalación basada en Helm:
- Primero, clone el directorio del Kit de inicio (si aún no lo ha hecho) y cambie al directorio de su copia local:
- A continuación, agregue el repositorio de Helm de Argo CD:
- Ahora, busque en el repositorio Helm de
argo
los gráficos disponibles para instalar:
La salida se parece a:
- Luego, abra e inspeccione el archivo de valores de Helm de Argo CD proporcionado en el repositorio del Kit de inicio utilizando un editor de su elección (preferiblemente con soporte para lint YAML). Por ejemplo, puede usar VS Code:
- Finalmente, despliegue Argo CD en su clúster DOKS:
–create-namespace \
Nota:
Se utiliza una versión específica
para el gráfico de Helm
. En este caso, se elige la versión 4.9.4
, que corresponde a la versión 2.4.0
de la aplicación. Es una buena práctica en general bloquear en una versión específica. Esto ayuda a tener resultados predecibles y permite el control de versiones a través de Git
.
Ahora, verifique si el lanzamiento de Helm fue exitoso:
La salida se parece a (el valor de la columna STATUS
debe establecerse en deployed
):
Finalmente, verifique el estado del despliegue de la aplicación Argo CD:
La salida se parece a (verifique la columna READY
– todos los Pods
deben estar en ejecución):
El servidor Argo CD debe tener un valor mínimo de replicaset
de 2
para el modo HA
. Si, por alguna razón, algunos despliegues no están saludables, verifique los eventos de Kubernetes y los registros de los Pods
del componente afectado.
También puede encontrar más información sobre el gráfico Helm de Argo CD accediendo al repositorio mantenido por la comunidad.
A continuación, aprenderás cómo acceder y explorar las principales características de la interfaz de usuario gráfica proporcionada por Argo CD.
Accediendo y Explorando la Interfaz Web de Argo CD
Una de las características interesantes que Argo CD ofrece es la interfaz web, utilizada para realizar varias tareas administrativas y ver el estado del despliegue de la aplicación. Puedes crear aplicaciones utilizando la interfaz gráfica de usuario e interactuar con Argo CD de diversas formas. Otra característica importante es la capacidad de inspeccionar el estado de cada aplicación y acceder a los eventos de Kubernetes, así como a los registros de tu aplicación. Además, Argo CD proporciona una representación visual de todos los objetos de Kubernetes (replicasets, pods, etc.) que está utilizando cada despliegue de aplicación.
La interfaz web se puede acceder mediante el reenvío de puertos del servicio Kubernetes argocd-server
. Por favor, ejecuta el siguiente comando en una terminal:
A continuación, abre un navegador web y navega a localhost:8080 (ignora por ahora los certificados TLS no válidos). Serás recibido con la página de inicio de sesión de Argo CD. El nombre de usuario de administrador predeterminado es admin
, y la contraseña se genera aleatoriamente en el momento de la instalación. Puedes obtenerla ejecutando el siguiente comando:
A continuación, serás redirigido a la página del panel de aplicaciones. Desde aquí, puedes ver, crear o gestionar aplicaciones a través de la interfaz de usuario (también está disponible un editor YAML), así como realizar operaciones de sincronización o actualización:
Si haces clic en cualquier mosaico de aplicación, también se muestra una representación visual de todos los objetos involucrados:
En la siguiente sección, puedes gestionar tus proyectos de aplicación, repositorios y clústeres:
Por último, la sección de información de usuario muestra los usuarios disponibles y permite actualizar la contraseña de administrador:
Puedes jugar y explorar cada sección y subsección en detalle para ver todas las funciones disponibles. A continuación, aprenderás cómo usar el contraparte de la interfaz de línea de comandos (CLI), llamado argocd
.
Argo CD permite utilizar el mismo conjunto de funciones tanto a través de la interfaz web como mediante la CLI. Para usar la CLI argocd
, necesitas abrir una ventana de terminal separada y simplemente escribir argocd
sin ningún argumento. Por defecto, mostrará los comandos y opciones disponibles:
Para cualquier comando o subcomando, puedes invocar la página de ayuda correspondiente utilizando el siguiente patrón: argocd <comando/subcomando> --help
. Por ejemplo, si deseas verificar qué opciones están disponibles para el comando app
:
# Obtener los detalles de una aplicación
Por favor, continúa y explora otros comandos/subcomandos también para ver todas las opciones disponibles. A continuación, aprenderás cómo configurar tu primera aplicación de Argo CD, que desplegará automáticamente todos los componentes del Kit de Inicio.
Inicializando Aplicaciones de Argo CD
En una instalación nueva, Argo CD no sabe de dónde sincronizar las aplicaciones ni qué repositorios Git están disponibles para obtener los manifiestos de la aplicación. Por lo tanto, el primer paso es realizar una operación única llamada inicialización. Puedes realizar todas las operaciones presentadas en esta sección utilizando tanto la CLI de argocd como la interfaz gráfica de usuario.
Existen múltiples formas de inicializar tu clúster (por ejemplo, mediante scripts), pero normalmente, los usuarios de Argo CD utilizan el patrón de aplicación de aplicaciones
. Esto significa que comenzarás creando una aplicación principal utilizando la CLI de argocd
(o la interfaz web), la cual a su vez hará referencia e inicializará el resto de las aplicaciones en tu clúster de Kubernetes.
Preparando la Estructura del Repositorio Git
Primero necesitas preparar tu repositorio Git para utilizar una estructura consistente. En el siguiente ejemplo, crearás una estructura de layout para tu repositorio Git similar a:
- Por favor, abre una terminal y sigue los siguientes pasos para crear el layout de tu repositorio Git:
- Primero, clona tu repositorio de git utilizado para probar Argo CD (asegúrate de reemplazar los marcadores
<>
correspondientemente):
- A continuación, cambia al directorio de tu copia local y crea la estructura de directorios (asegúrate de reemplazar los marcadores
<>
correspondientemente):
- Copia los manifiestos de aplicación proporcionados para cada componente en el repositorio de Starter Kit (también puedes echar un vistazo y ver cómo está estructurado cada manifiesto):
Finalmente, realiza los cambios y haz un commit, y luego haz un push al origen.
A continuación, crearás la implementación de la aplicación principal y permitirás que Argo CD sincronice automáticamente todas las aplicaciones del Starter Kit en tu clúster DOKS.
Usando el Patrón de Aplicaciones a través de la CLI de Argo CD
En esta sección, aprenderás cómo utilizar la CLI de argocd
para crear y utilizar el patrón app of apps
para implementar todos los componentes del Starter Kit en tu clúster DOKS. La siguiente imagen ilustra el concepto principal:
Primero, necesitas redirigir el servidor principal de Argo CD en tu máquina local en una ventana de terminal separada:
A continuación, se requiere acceso al servidor API de Argo CD para que funcione la CLI de argocd
. Utilizando otra ventana de terminal, necesitas autenticar el cliente argocd
con tu instancia del servidor Argo CD:
La salida se verá similar a:
Luego, por favor ejecuta el siguiente comando para crear la aplicación principal starter-kit-apps
(asegúrate de reemplazar los marcadores <>
correspondientemente):
- –dest-namespace argocd \
- –dest-server https://kubernetes.default.svc \
- El comando anterior creará una nueva aplicación
Argo CD
llamadastarter-kit-apps
en el espacio de nombresargocd
, configurada para:
Apuntar al mismo clúster de Kubernetes donde está desplegado Argo CD, porque --dest-server
está configurado como https://kubernetes.default.svc
.
Usar el repositorio de GitHub establecido por el argumento --repo
para sincronizar tu clúster.
Escanear y aplicar todos los manifiestos de aplicación encontrados en el directorio clusters/dev/helm
(argumento --path
).
A continuación, necesitas sincronizar la aplicación starter-kit-apps
(recuerda que Argo CD no sincroniza nada por defecto a menos que se especifique):
La salida se verá similar a:
Después de que finalice el comando anterior, deberías ver una nueva aplicación presente en el panel principal de tu servidor de Argo CD. Por favor, abre un navegador web y navega a http://localhost:8080. Luego selecciona la pestaña Aplicaciones
, y haz clic en el mosaico starter-kit-apps
(nota el patrón aplicación de aplicaciones
al observar el gráfico de composición):
También puedes inspeccionar las nuevas aplicaciones a través de la CLI:
La salida se parece a:
La aplicación principal starter-kit-apps
aparecerá como sincronizada pero las aplicaciones secundarias estarán fuera de sincronización. A continuación, puedes sincronizar todo usando la interfaz web o mediante la CLI:
La operación de sincronización puede tardar un tiempo en completarse (incluso hasta 5-10 minutos), dependiendo de la complejidad y el número de objetos de Kubernetes de todas las aplicaciones que se estén implementando.
Después de un tiempo, por favor lista todas las aplicaciones nuevamente:
- La salida se parece a (nota que todas las aplicaciones están sincronizadas ahora):
El despliegue de la aplicación Velero fallará y quedará intencionalmente en el estado SyncError
como ejercicio para que el lector se familiarice y aprenda a diagnosticar problemas de aplicación en Argo CD. Consulta la sección de Pistas a continuación para ver cómo diagnosticar problemas de aplicación en Argo CD.
La inicialización del la aplicación principal es una operación única. En los cambios de Git subsiguientes para cada aplicación, Argo CD detectará la desviación y aplicará los cambios requeridos. Argo CD utiliza un mecanismo de sondeo
de forma predeterminada para detectar cambios en tu repositorio de Git. El intervalo de actualización
predeterminado está configurado en 3 minutos
. En lugar de depender de un mecanismo de sondeo, también puedes aprovechar el poder de los ganchos de Git. Visita el sitio web de documentación oficial para aprender cómo crear y configurar Argo CD para usar ganchos de Git.
Pistas: Si lo deseas, puedes configurar la aplicación principal para que se sincronice automáticamente (y también habilitar la auto-curación y la poda automática), puedes usar el siguiente comando (no olvides reemplazar los marcadores <>
según corresponda):
–dest-namespace argocd \
–dest-server https://kubernetes.default.svc \
–sync-policy automated \
–auto-prune \
En caso de cualquier fallo de sincronización, siempre puedes inspeccionar los eventos de Kubernetes para la aplicación en cuestión (a través de argocd app get <nombre_aplicación>
):
La salida se ve similar a:
- A continuación, aprenderás cómo usar el patrón de
aplicación de aplicaciones
y realizar los mismos pasos a través de la interfaz gráfica de usuario de Argo CD. - Uso del Patrón de Aplicación de Aplicaciones a través de la Interfaz Web de Argo CD
- En esta sección, aprenderás cómo usar la interfaz web de Argo CD para crear y utilizar el patrón de
aplicación de aplicaciones
para implementar todos los componentes del Starter Kit en tu clúster DOKS. La siguiente imagen ilustra el concepto principal: - Como muestra el diagrama anterior, el inicio de una nueva aplicación a través de la interfaz web es muy similar a su contraparte de línea de comandos. La única diferencia es que navegarás entre diferentes paneles/ventanas y usarás operaciones de apuntar y hacer clic. Detrás de escena, Argo CD creará los CRDs de aplicación necesarios y aplicará cambios a tu clúster de Kubernetes.
- Primero, por favor abre un navegador web e inicia sesión en la consola web de Argo CD. El nombre de usuario predeterminado es
admin
, y la contraseña predeterminada se obtiene a través de: - Una vez iniciada la sesión, serás redirigido a la página del panel de aplicaciones (en una instalación nueva, el panel de aplicaciones estará vacío). A continuación, haz clic en el botón
Crear Aplicación
. Se abrirá un nuevo panel que solicitará los detalles de la aplicación: - Por favor, completa cada campo de manera apropiada:
Nombre de la Aplicación
: El nuevo nombre de la aplicación (por ejemplo, starter-kit-apps
).
Proyecto
: El nombre del proyecto al que pertenece esta aplicación (cuando uses Argo CD por primera vez, puedes usar default
).
Política de Sincronización
y Opciones de Sincronización
: Configura la política de sincronización y las opciones (por ejemplo, Manual
, Automático
, número de intentos, intervalo entre intentos, etc.).
URL del Repositorio Fuente
: La dirección URL de tu repositorio en GitHub, por ejemplo, https://github.com/<TU_NOMBRE_DE_USUARIO_EN_GITHUB>/<NOMBRE_DEL_REPO_DE_ARGOCD_EN_GITHUB>.git
.
Ruta del Repositorio Fuente
: La ruta del directorio del repositorio en GitHub donde se almacenan los manifiestos de la aplicación (por ejemplo, clusters/dev/helm
).
URL del Cluster de Destino
: El clúster de Kubernetes de destino para sincronizar con tu repositorio en GitHub (por ejemplo, https://kubernetes.default.svc
para el clúster local donde está desplegado Argo CD).
Namespace
de Destino: El espacio de nombres del clúster de Kubernetes de destino para usar en las aplicaciones de Argo CD (argocd
, generalmente).
Después de completar todos los detalles de la aplicación, haz clic en el botón Crear en la parte superior. Se mostrará un nuevo mosaico de aplicación en la página del panel de aplicaciones:
Si haces clic en el mosaico de la aplicación, puedes observar el patrón de aplicación de aplicaciones
, al mirar el gráfico de composición:
Si observas la imagen anterior, notarás que todas las aplicaciones están marcadas como OutOfSync
. El siguiente paso es iniciar una operación de sincronización en la aplicación principal. Luego, todas las aplicaciones secundarias también se sincronizarán. Por favor, presiona el botón Sync
en el mosaico de la aplicación principal. Aparecerá un nuevo panel en el lado derecho (nota que todas las aplicaciones secundarias están seleccionadas abajo):
Deja los valores predeterminados, luego presiona el botón Synchronize
en la parte superior y observa cómo Argo CD cascada la operación de sincronización a todas las aplicaciones:
La implementación de la aplicación Velero fallará y se dejará intencionalmente en el estado SyncError
como ejercicio para que el lector se familiarice y aprenda a diagnosticar problemas de aplicación en Argo CD. Consulta la sección de Sugerencias a continuación para ver cómo diagnosticar problemas de aplicación en Argo CD.
Si todo va bien, todas las aplicaciones deberían tener un borde verde y el estado debería ser Saludable
y Sincronizado
. El proceso de arranque es una operación única. En cambios posteriores de Git para cada aplicación, Argo CD detectará la desviación y aplicará los cambios necesarios. Argo CD utiliza un mecanismo de sondeo
de forma predeterminada para detectar cambios en tu repositorio Git. El intervalo de actualización
predeterminado está establecido en 3 minutos
. En lugar de depender de un mecanismo de sondeo, también puedes aprovechar el poder de los webhooks de Git. Visita el sitio web de documentación oficial para aprender cómo crear y configurar Argo CD para usar webhooks.
Pistas: Si lo deseas, puedes configurar la aplicación principal para que se sincronice automáticamente estableciendo el valor del campo Política de sincronización
en Automático
. Para habilitar la auto-curación y la poda automática, marca las casillas de verificación Recursos de poda
y Auto curación
:
En caso de fallos de sincronización, siempre puedes inspeccionar los eventos de Kubernetes para la aplicación en cuestión. Utilizando la interfaz web, puedes navegar hasta el mosaico de la aplicación afectada:
Luego, haz clic en el enlace del mensaje Sync failed
marcado en color rojo, desde la sección LAST SYNC RESULT
en el encabezado de la página de la aplicación. Se abrirá un nuevo panel que muestra información útil sobre por qué falló la operación de sincronización:
- En la siguiente sección, aprenderás cómo gestionar varias aplicaciones a la vez usando un único CRD: el
ApplicationSet
. - Usando conjuntos de aplicaciones de Argo CD
Conjuntos de aplicaciones es otra característica poderosa ofrecida por Argo CD. El Controlador de ApplicationSet es un subproyecto de Argo CD, que agrega automatización de aplicaciones a través de definiciones templadas. Esta función te ayuda a evitar repeticiones en los manifiestos de tu aplicación (haciendo uso del principio DRY).
El controlador de ApplicationSet se instala junto con Argo CD (dentro del mismo espacio de nombres), y genera automáticamente aplicaciones de Argo CD basadas en el contenido de un nuevo Recurso Personalizado (CR) de ApplicationSet.
Nota:
A partir de la versión 2.3.x
de Argo CD, no es necesario instalar el Controlador de ApplicationSet
por separado porque es parte de la instalación principal de Argo CD. Starter Kit está utilizando versión >= 2.3.1
, así que no necesitas hacer nada.
La idea principal de un ApplicationSet
se basa en tener una lista de valores que actúan como un generador
, y una plantilla
que se completa con los valores de la lista de entrada. Para cada elemento de la lista, se genera una nueva plantilla de aplicación en secuencia. Básicamente, defines un CRD de ApplicationSet y luego lo dejas generar tantos CRDs de Aplicación ArgoCD como desees, basados en los valores de entrada. Así, en lugar de crear y manejar múltiples manifiestos de Aplicación
, gestionas todo mediante un único manifiesto
– el ApplicationSet
.
Este concepto también simplifica la gestión de configuraciones multi-cluster
y multi-entorno
mediante el uso de plantillas de aplicación parametrizadas. Los conjuntos de aplicaciones también incluyen otros generadores, además de los Generadores de Lista:
Generador de Clúster: Utiliza los clústeres definidos por Argo CD para plantillas de aplicaciones.
Generador de Git: Utiliza los archivos/directorios de un repositorio Git para plantillas de aplicaciones.
Un CRD de ApplicationSet
típico que utiliza un Generador de Lista
se ve así:
Aplicar el ApplicationSet
anterior a tu clúster de Kubernetes generará tres aplicaciones de Argo CD. Por ejemplo, la aplicación del entorno dev
se representa de la siguiente manera:
Los motores de plantillas son muy poderosos por naturaleza y ofrecen muchas posibilidades. Por favor, visita el sitio web principal de documentación de ApplicationSet para aprender más sobre esta función.
Desinstalación de Aplicaciones de Argo CD
La desinstalación (o eliminación) de aplicaciones gestionadas por Argo CD se realiza eliminando el manifiesto correspondiente de la fuente del repositorio Git. En caso de aplicaciones creadas usando el patrón de aplicación de aplicaciones
, solo necesitas eliminar la aplicación principal (ya sea a través de la CLI o la interfaz web). Entonces, todas las aplicaciones secundarias se eliminarán como parte del proceso.
- Cómo eliminar la aplicación principal
starter-kit-apps
(incluidas las aplicaciones secundarias) usando la CLI deargocd
: - Si deseas asegurarte de que las aplicaciones secundarias y todos sus recursos se eliminen cuando se elimine la aplicación principal, asegúrate de agregar el
finalizador
apropiado a tudefinición de aplicación
:
Source:
https://www.digitalocean.com/community/developer-center/implementing-gitops-using-argo-cd