Preparar el clúster

Revise la siguiente orientación sobre la preparación de su clúster antes de implementar ArcGIS Enterprise on Kubernetes.

Espacio de nombres

ArcGIS Enterprise on Kubernetes requiere su propio espacio de nombres dedicado. El espacio de nombres se debe crear antes de ejecutar el script de implementación. La ejecución de varias implementaciones de ArcGIS Enterprise on Kubernetes en un único clúster requerirá un espacio de nombres único para cada implementación.

Cuota de recursos

Los pods de ArcGIS Enterprise on Kubernetes tienen solicitudes y límites definidos para la CPU y la memoria. Si el espacio de nombre tiene un objeto ResourceQuota, la cuota debe ser superior a la suma de todas las solicitudes y límites de pods. Estos valores varían según el perfil de arquitectura seleccionado, como se describe a continuación.

Nota:

Si está efectuando una actualización a 11.1, primero debe actualizar los valores de la cuota de recursos en el espacio del nombre de acuerdo con los requisitos 11.1.

Los siguientes valores recomendados son los requisitos mínimos para cada perfil de arquitectura. Considere que puede necesitar aumentar estos valores para adaptarse a los requisitos de escalabilidad de su organización.

Perfil de disponibilidad mejorada:

spec: 
    hard: 
      limits.cpu: "230" 
      limits.memory: 394Gi 
      requests.cpu: "36" 
      requests.memory: 188Gi

Perfil de disponibilidad estándar:

spec: 
    hard: 
      limits.cpu: "198" 
      limits.memory: 326Gi 
      requests.cpu: "32" 
      requests.memory: 130Gi

Perfil de desarrollo:

spec: 
    hard: 
      limits.cpu: "144" 
      limits.memory: 226Gi 
      requests.cpu: "20" 
      requests.memory: 86Gi

Requisitos de red de espacios de nombres

Si utiliza Kubernetes NetworkPolicies, asegúrese de que la comunicación entre pods y de pod a servicio sin interrupciones esté permitida en el espacio de nombres ArcGIS Enterprise.

Además, asegúrese de que los pods del espacio de nombres tienen acceso al servidor Kubernetes API. El servidor API es accesible a través de un servicio llamado Kubernetes en el espacio de nombres predeterminado. Los pods de ArcGIS Enterprise utilizan el nombre de dominio totalmente calificado (FQDN) kubernetes.default.svc.cluster.local para realizar consultas en el servidor de la API.

Nota:

cluter.local es el dominio predeterminado del clúster.

Políticas de seguridad de pods

Nota:

PodSecurityPolicy se eliminó en Kubernetes v1.25.

ArcGIS Enterprise on Kubernetes implementa Elasticsearch para admitir varias características de la organización de ArcGIS Enterprise. De forma predeterminada, Elasticsearch utiliza un directorio mmapfs para almacenar los índices requeridos. Los límites predeterminados del sistema operativo en los recuentos de map pueden ser insuficientes para la implementación. Elasticsearch recomienda un valor de vm.max_map_count predeterminado de 262144. Para cambiar el valor predeterminado, se requiere un privilegio elevado (raíz) en cada nodo.

Dependiendo de si su clúster de Kubernetes incluye una política de seguridad de pods y permite que los contenedores se ejecuten con privilegios o sin privilegios, se requieren las siguientes acciones:

  • Si el clúster de Kubernetes no incluye una política de seguridad de pod pero permite que los contenedores se ejecuten con privilegios, no se requiere ninguna acción.
  • Ejecutar con privilegios: si el clúster de Kubernetes tiene definida la seguridad del pod y permite que los contenedores se ejecuten con privilegios, debe permitir que la cuenta de servicio de Elasticsearch ejecute los contenedores con privilegios. Otras cuentas de servicio no necesitan ejecutar contenedores con privilegios. ArcGIS Enterprise on Kubernetes puede ejecutar un contenedor inicial con privilegios en el nodo que ejecuta Elasticsearch, lo que cambia el valor vm.max_map_count. El script de implementación de ArcGIS Enterprise on Kubernetes crea una cuenta de servicio bajo su espacio de nombres para usar la autenticación del servidor API para los procesos internos de los pods. El pod de Elasticsearch usa su propia cuenta de servicio, que no se comparte con otras cargas de trabajo. La cuenta de servicio predeterminada de Elasticsearch es arcgis-elastic-serviceaccount. Puede otorgar a la cuenta de servicio acceso a la política de seguridad de pod con roles de RBAC y RoleBindings. Para OpenShift, puede otorgar a la cuenta de servicio acceso a las restricciones de contexto de seguridad con privilegios agregando lo siguiente en la sección del usuario:
    “-system:serviceaccount: <Namespace>:arcgis-elastic-serviceaccount"
    
  • Ejecutar sin privilegios: si el clúster de Kubernetes tiene definida la seguridad de pod y no puede permitir que la cuenta de servicio de ElasticSearch ejecute contenedores con privilegios, debe preparar cada nodo manualmente ejecutando el siguiente comando como raíz:
    sysctl -w vm.max_map_count=262144
    
  • Si ha creado el recurso PodSecurityPolicy, deberá autorizar las siguientes cuentas de servicio en el espacio de nombres de ArcGIS Enterprise.
    • arcgis-admin-serviceaccount
    • arcgis-elastic-serviceaccount
    • arcgis-ingress-serviceaccount
    • arcgis-prometheus-serviceaccount
    • arcgis-queue-serviceaccount
    • predeterminado

    Los contenedores de ArcGIS Enterprise on Kubernetes pueden ejecutarse sin privilegios de raíz. Sin embargo, los aspectos de control fsGroup y supplementalGroups de PodSecurityPolicy deben tener RunAsAny o un rango que incluya el valor 117932853 tal como se muestra en los siguientes ejemplos.

    supplementalGroups:
        rule: 'RunAsAny'
    fsGroup:
        rule: 'RunAsAny'
    
    supplementalGroups:
      rule: 'MustRunAs'
      ranges:
        # Forbid adding the root group.
        - min: 117932853
          max: 117932853
    
    fsGroup:
      rule: 'MustRunAs'
      ranges:
        # Forbid adding the root group.
        - min: 117932853
          max: 117932853
    

Nota:

Se debe permitir que los pods del clúster se ejecuten con un FSGroup y SupplementalGroup un ID de 117932853.

Normas de seguridad de pods

Las normas de seguridad de pods son una característica de Kubernetes que permite a los administradores aplicar un conjunto de normas de seguridad a los pods antes de que se programen en el clúster. Hay tres niveles disponibles de forma predeterminada: privilegiado, básico y restringido. La advertencia y el cumplimiento de estas normas se controlan por espacio de nombres.

Cuando se establecen los niveles de cumplimiento de línea base o restringido, no se permitirá la ejecución de los pods que no cumplan los requisitos de seguridad para estos niveles. Para obtener más información sobre cada nivel, consulte lo siguiente:

  • Privilegiado: Privilegiado es una norma de seguridad de pods sin restricciones que permite el acceso sin restricciones a una amplia variedad de permisos. ArcGIS Enterprise puede ejecutarse en este nivel sin ninguna modificación de la configuración. Este nivel permite realizar escalados de privilegios conocidos dentro del clúster, por lo que se desaconseja ejecutar en este nivel.
  • Línea base: Línea base es una norma de seguridad de pods más limitada que impide el acceso al sistema de archivos del host desde los pods y tiene restricciones sobre los tipos de otros volúmenes y capacidades. ArcGIS Enterprise puede ejecutarse bajo el nivel de cumplimiento de línea base modificando los nodos trabajadores subyacentes fuera del contexto de la aplicación en ejecución y estableciendo la propiedad ALLOW_PRIVILEGED_CONTAINERS en falso en el archivo de propiedades de implementación antes de la implementación.

    Para igualar la elasticidad de los grupos de nodos trabajadores, un administrador debe utilizar un proceso mediante script para aumentar el ajuste vm.max_map_count a 262144 en cada nodo recién aprovisionado modificando la plantilla de lanzamiento directamente.

  • Restringido: la norma de seguridad restringida de los pods ofrece las limitaciones más estrictas para la seguridad de los pods y exige que la mayoría de las propiedades securityContext se establezcan explícitamente. En esta versión, ArcGIS Enterprise no puede ejecutarse en el nivel restringido.

Para más información, consulte Admisión de seguridad de pods y Normas de seguridad de pods.

Servidor de métricas

Para aprovechar el escalado automático horizontal de pods en ArcGIS Enterprise on Kubernetes, el servidor de métricas debe extraer las métricas de consumo de recursos de pods del proceso kubelet en cada nodo en ejecución. Para obtener más información, consulte Servidor de métricas de Kubernetes.