View a markdown version of this page

Configuración de los ajustes de Argo CD - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Configuración de los ajustes de Argo CD

La capacidad de EKS para Argo CD proporciona una experiencia de Argo CD completamente administrada. Argo CD ascendente ofrece muchas características y configuraciones opcionales, y la capacidad admite un subconjunto de ellas. Para obtener la configuración admitida, configúrela de la misma manera que Argo CD ascendente, a través del ConfigMap argocd-cm en el clúster. La capacidad lee los campos admitidos de este ConfigMap y los aplica a la instancia de Argo CD administrada.

En las siguientes secciones, se describe cómo configurar el ConfigMap argocd-cm para la configuración compatible.

Requisitos previos

Antes de configurar los ajustes de Argo CD, debe tener lo siguiente:

  • Un clúster de EKS con la capacidad de Argo CD creada (consulte Creación de una capacidad de Argo CD)

  • El espacio de nombres configurado para Argo CD en esta capacidad (por defecto, el espacio de nombres argocd)

  • La CLI de kubectl configurada para comunicarse con el clúster

Configuración del ConfigMap de argocd-cm

Para configurar los ajustes de Argo CD compatibles, cree un ConfigMap con el nombre argocd-cm en el clúster. La capacidad administrada lee la configuración admitida de este ConfigMap y la aplica a la instancia de Argo CD administrada. Para ver la configuración que admite la capacidad y cómo la aplica, consulte Configuraciones admitidas.

Cree el ConfigMap con los siguientes requisitos:

  • Asigne al ConfigMap el nombre argocd-cm.

  • Créelo en el espacio de nombres configurado para Argo CD en la capacidad (el espacio de nombres que estableció en la configuración de Argo CD al crear la capacidad). De forma predeterminada, este es el espacio de nombres argocd.

  • Aplique la etiqueta app.kubernetes.io/part-of: argocd. Esta etiqueta es obligatoria, ya que coincide con el comportamiento de Argo CD ascendente.

  • Use el mismo formato de campo y las mismas claves que Argo CD ascendente.

En el siguiente ejemplo, se muestra la estructura del ConfigMap, con una configuración que muestra un banner en la interfaz de usuario de Argo CD. Agregue otras configuraciones admitidas en data de la misma manera.

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: ui.bannercontent: "Production cluster"
importante

Un ConfigMap no es un almacén seguro. No almacene secretos, credenciales ni otra información confidencial en el ConfigMap argocd-cm.

Cómo aplica la capacidad la configuración

Para configurar Argo CD, cree un ConfigMap argocd-cm en su propio clúster. La capacidad aplica la configuración admitida del ConfigMap a la instancia de Argo CD administrada. Aplica solo la configuración admitida e ignora cualquier otro campo o característica que establezca. Cualquier configuración que no aparezca en la lista de Configuraciones admitidas no es compatible y no tiene ningún efecto.

La capacidad valida los valores que haya establecido. Si un valor no es válido o tiene un formato incorrecto, la capacidad lo ignora y continúa ejecutándose con la configuración predeterminada para ese ajuste. Un error en el ConfigMap no interrumpe la instancia de Argo CD administrada.

nota

La capacidad aplica la configuración del ConfigMap argocd-cm en el clúster. Cualquier entidad principal con acceso de escritura a este ConfigMap puede cambiar la configuración de la instancia de Argo CD administrada. El control de acceso basado en roles (RBAC) de Kubernetes del clúster es el que rige el acceso al ConfigMap, no los permisos de IAM que controlan el recurso de la capacidad. Como práctica recomendada de seguridad, conceda permiso para modificar objetos en el espacio de nombres de Argo CD solo a usuarios y cuentas de servicio de confianza. Como el RBAC de Kubernetes limita los permisos por tipo de recurso, puede continuar concediendo el acceso que otros usuarios necesiten. Por ejemplo, puede permitir a los desarrolladores crear y administrar aplicaciones, pero no modificar ConfigMaps. Esto les impide cambiar la configuración de argocd-cm.

Para obtener más información sobre el modelo de responsabilidad compartida, el RBAC de Kubernetes y el aislamiento del espacio de nombres para la capacidad de Argo CD, consulte Consideraciones sobre la seguridad para las capacidades de EKS. Para controlar el acceso dentro de Argo CD, consulte Configuración de los permisos de Argo CD.

Configuraciones admitidas

En las siguientes secciones, se enumeran las configuraciones de argocd-cm que admite la capacidad administrada, agrupadas por categoría. Cada configuración usa el mismo formato y la misma clave que Argo CD ascendente. La columna Cómo se aplica el valor de cada tabla muestra si el valor se anexa a la configuración predeterminada de la capacidad o la anula. Para ver la descripción completa de cada configuración, consulte la referencia de ConfigMap de argocd-cm en el sitio web de documentación de Argo CD.

Interfaz de usuario

Esta configuración personaliza la interfaz de usuario de Argo CD.

Opción Descripción Cómo se aplica el valor

ui.bannercontent

El texto de un banner que se muestra en la interfaz de usuario, como un identificador de entorno o un aviso de mantenimiento.

Anulaciones

ui.bannerurl

URL a la que enlaza el banner, como un manual de procedimientos o una página wiki.

Anulaciones

ui.bannerpermanent

Establézcalo en true para evitar que los usuarios descarten el banner.

Anulaciones

ui.bannerposition

Dónde aparece el banner: top, bottom o both.

Anulaciones

ui.cssurl

URL de un archivo CSS personalizado para personalizar la marca o el estilo. El CSS se ejecuta en el navegador.

Anulaciones

Configuración de los recursos

Esta configuración controla la forma en que la capacidad observa, compara y muestra los recursos que administra Argo CD.

Opción Descripción Cómo se aplica el valor

resource.customizations.ignoreDifferences.<group>_<kind>

Campos que se deben ignorar cuando Argo CD compara Git con el clúster de un tipo de recurso, como los recuentos de réplicas administradas por un Escalador automático de pods horizontales.

Anexa

resource.customizations.ignoreDifferences.all

Campos que se deben ignorar al comparar Git con el clúster, aplicados a todos los tipos de recursos.

Anexa

resource.customizations.ignoreResourceUpdates.<group>_<kind>

Campos que Argo CD ignora al decidir si un evento de actualización debe desencadenar la conciliación, lo que reduce la carga. El evento se sigue produciendo y Argo CD solo ignora los cambios en estos campos.

Anexa

resource.customizations.ignoreResourceUpdates.all

Campos que Argo CD ignora al procesar los eventos de actualización, aplicados a todos los tipos de recursos.

Anexa

resource.customizations.knownTypeFields.<group>_<kind>

Tipos de campos (lista, mapa o primitivo) para un recurso personalizado, de modo que Argo CD calcula las diferencias precisas en lugar de mostrar la sustitución de todo el campo.

Anexa

resource.customizations.health.<group>_<kind>

Comprobación de estado personalizada para un tipo de recurso, definida como un script de Lua. La capacidad incluye comprobaciones de estado integradas para los recursos de ACK y kro. Consulte Comprobaciones de estado personalizadas.

Anulaciones

resource.exclusions

Tipos de recursos que Argo CD no observa, lo que mejora el rendimiento en el caso de los tipos con alta rotación.

Anexa

resource.inclusions

Tipos de recursos que observa Argo CD. Cuando se establece esta opción, Argo CD solo observa los tipos de la lista.

Anexa

resource.compareoptions

Opciones que controlan la forma en que Argo CD calcula las diferencias, como ignoreAggregatedRoles.

Anulaciones

resource.respectRBAC

Si el controlador solo observa los recursos para los que tiene permiso de lectura de RBAC. Acepta normal o strict.

Anulaciones

resource.customLabels

Etiquetas de recursos adicionales para mostrar en la vista de recursos de la interfaz de usuario.

Anulaciones

resource.includeEventLabelKeys

Etiquetas de aplicaciones y proyectos para copiarlas en los eventos de Kubernetes que genera Argo CD.

Anulaciones

resource.excludeEventLabelKeys

Etiquetas para excluirlas de los eventos de Kubernetes que genera Argo CD.

Anulaciones

resource.sensitive.mask.annotations

Anotaciones para enmascarar cuando la interfaz de usuario o la CLI muestren secretos.

Anulaciones

Configuración del repositorio y de la herramienta

Esta configuración controla las herramientas de manifiesto que Argo CD utiliza para renderizar los manifiestos.

Opción Descripción Cómo se aplica el valor

kustomize.enable

Si Kustomize está habilitado como tipo de origen de manifiesto.

Anulaciones

helm.enable

Si Helm está habilitado como tipo de origen de manifiesto.

Anulaciones

jsonnet.enable

Si Jsonnet está habilitado como tipo de origen de manifiesto.

Anulaciones

kustomize.buildOptions

Los indicadores de línea de comandos globales se pasan a cada kustomize build. La capacidad es compatible con un subconjunto de indicadores. Consulte Indicadores kustomize.buildOptions admitidos.

Anulaciones

Indicadores kustomize.buildOptions admitidos

En el caso de kustomize.buildOptions, la capacidad filtra el valor para convertirlo en un conjunto de indicadores seguros y compatibles. No admite indicadores que permitan a la compilación leer archivos arbitrarios o ejecutar código arbitrario. Elimina cualquier indicador no admitido o valor no válido individualmente y aplica el resto de los indicadores admitidos. Puede escribir los indicadores como --flag value o --flag=value.

Indicador Valores admitidos Notas

--reorder

legacy, none

Solo cambia el orden del YAML renderizado.

--enable-helm

Booleano

Ejecuta el binario de Helm administrado desde la ruta.

--enable-managedby-label

Booleano

Solo agrega etiquetas.

La capacidad elimina cualquier otro indicador, incluidos --load-restrictor, --enable-exec y --enable-alpha-plugins.

Comprobaciones de estado personalizadas

Argo CD evalúa el estado de los recursos que implementa. Para los recursos estándar de Kubernetes, como las implementaciones y los servicios, Argo CD cuenta con una lógica de estado integrada. Para los recursos personalizados que Argo CD no reconoce, no tiene ninguna lógica de estado integrada ni informa de ningún estado.

Cuando un recurso personalizado no tiene ninguna comprobación de estado, Argo CD indica que no tiene estado y lo excluye del estado general de la aplicación. Como resultado, una aplicación puede aparecer como Healthy incluso cuando sus recursos aún se estén aprovisionando o hayan fallado. Esto también significa que las ondas de sincronización pueden avanzar antes de que esos recursos estén listos, ya que el orden de sincronización depende del estado notificado.

Con las comprobaciones de estado personalizadas, puede definir la lógica de estado de los recursos personalizados, de forma que Argo CD registre el estado preciso y secuencie las implementaciones correctamente. Las comprobaciones de estado personalizadas se definen de la misma manera que en Argo CD ascendente con las mismas claves de configuración. Los scripts ascendentes y los ejemplos de la comunidad existentes funcionan con la capacidad de EKS para Argo CD sin modificaciones.

Comprobaciones de estado integradas para ACK y kro

La capacidad de EKS para Argo CD incluye comprobaciones de estado integradas para los recursos de Controladores de AWS para Kubernetes (ACK) y kro (Orquestador de recursos de Kube). Estos recursos informan de un estado preciso sin necesidad de configuración adicional.

Para cambiar la forma en que la capacidad evalúa el estado de un recurso de ACK o kro, puede definir una comprobación de estado personalizada para ese tipo de recurso. La comprobación de estado personalizada que defina para un tipo de recurso anula la comprobación de estado integrada para el tipo.

Escritura de una comprobación de estado personalizada

Para definir una comprobación de estado personalizada, agregue un script de Lua al ConfigMap argocd-cm con una clave con el siguiente formato:

resource.customizations.health.<group>_<kind>

Sustituya <group> por el grupo de API del recurso personalizado y <kind> por el tipo. Por ejemplo, la clave de un recurso personalizado con el grupo de API example.com y el tipo Database es resource.customizations.health.example.com_Database.

El script de Lua tiene acceso al objeto del recurso a través de la variable obj global. El script debe devolver una tabla con un campo status establecido en Healthy, Progressing, Degraded o Suspended. El script también puede establecer un campo message opcional para proporcionar un mensaje de estado descriptivo.

El siguiente ConfigMap de ejemplo define una comprobación de estado para un recurso personalizado Database. El script informa del recurso como Healthy cuando su fase de estado es Ready y como Progressing en caso contrario:

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: resource.customizations.health.example.com_Database: | hs = {} hs.status = "Progressing" hs.message = "Waiting for the resource to become ready" if obj.status ~= nil then if obj.status.phase == "Ready" then hs.status = "Healthy" hs.message = "Database is ready" end end return hs

Para obtener más información sobre el formato del script de comprobación de estado, la lista de comprobaciones de estado integradas y ejemplos de la comunidad que puede adaptar, consulte Resource Health en el sitio web de la documentación de Argo CD.

Seguridad y limitaciones

Con la capacidad administrada, los scripts de comprobación de estado personalizados se ejecutan en un entorno de computación aislado y totalmente administrado. El entorno de ejecución está aislado por capacidad y no tiene acceso a los datos del clúster ni a las API de AWS. No aprovisionará, aplicará parches ni operará ninguna parte del entorno de ejecución.

Tenga en cuenta lo siguiente al escribir comprobaciones de estado personalizadas para utilizarlas con la capacidad de EKS:

  • Las bibliotecas de Lua estándar no están disponibles. La opción useOpenLibs siempre está deshabilitada, que es la opción predeterminada en Argo CD ascendente. Los scripts no pueden acceder al sistema operativo ni al sistema de archivos. Si migra un script desde Argo CD autoadministrado que se basa en bibliotecas de Lua estándar, es posible que no se ejecute de la misma manera en la capacidad. Le recomendamos que pruebe los scripts de comprobación de estado en un entorno de desarrollo antes de usarlos en producción.

Si la evaluación del estado no está disponible temporalmente, la capacidad informa de los recursos personalizados afectados como Progressing en lugar de eliminar su estado. Esto mantiene los recursos afectados visibles en el estado de la aplicación hasta que se recupere la evaluación.

Verificación de una comprobación de estado personalizada

Después de aplicar o actualizar el ConfigMap argocd-cm, confirme que la comprobación de estado esté activa:

  1. En la IU de Argo CD, elija una aplicación que incluya un recurso personalizado del tipo para el que haya definido una comprobación de estado. Confirme que el recurso informe del estado que devuelve el script. Como alternativa, ejecute argocd app get <application-name> y revise el estado del recurso.

  2. Si el recurso no informa del estado esperado, verifique lo siguiente:

    • El ConfigMap se llama argocd-cm y se encuentra en el espacio de nombres configurado para Argo CD en la capacidad.

    • El ConfigMap tiene la etiqueta app.kubernetes.io/part-of: argocd obligatoria.

    • La clave de comprobación de estado utiliza el <group>_<kind> correcto para el tipo de recurso.