|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
Permisos requeridos
Descripción general
Todos los componentes de SUSE Observability pueden funcionar sin permisos adicionales. Sin embargo, para instalar SUSE Observability con éxito, necesitas algunos privilegios adicionales, o asegurarte de que se cumplan los requisitos descritos en esta página.
Autenticación y autorización entre servicios
Para permitir la comunicación entre los servicios de SUSE Observability, SUSE Observability utiliza cuentas de servicio de Kubernetes. Para poder verificar su validez y roles, el chart de helm crea un ClusterRole y un ClusterRoleBinding. Crear estos recursos a nivel de clúster a menudo está prohibido para usuarios que no son administradores de Kubernetes/OpenShift. En ese caso, la creación puede ser deshabilitada y en su lugar los roles y vinculaciones de roles deben ser creados manualmente por tu administrador de clúster.
Deshabilitar la creación automática de recursos a nivel de clúster
La creación automática de recursos a nivel de clúster durante la instalación de SUSE Observability puede ser deshabilitada añadiendo la siguiente sección al archivo values.yaml utilizado para instalar SUSE Observability:
-
values.yaml
cluster-role:
enabled: false
|
Si la creación del rol de clúster y la vinculación de rol de clúster ha sido deshabilitada, por favor asegúrate de seguir las instrucciones a continuación para crearlos manualmente usando las instrucciones a continuación. |
Crear manualmente recursos a nivel de clúster
Si necesitas crear manualmente los recursos a nivel de clúster, pide a tu administrador de Kubernetes/OpenShift que cree los 3 recursos a continuación en el clúster.
|
Verifica que especifiques la cuenta de servicio y el espacio de nombres correctos para el |
-
clusterrolebinding-authentication.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: suse-observability-authentication
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:auth-delegator
subjects:
- kind: ServiceAccount
name: suse-observability-api
namespace: suse-observability
Normas de seguridad de Pods
Si tu clúster de Kubernetes tiene Normas de Seguridad de Pods habilitadas, necesitas configurar políticas de seguridad apropiadas para el espacio de nombres suse-observability. SUSE Observability requiere que se cumpla la Norma de Seguridad de Pods básica para funcionar correctamente.
Configurar Normas de Seguridad de Pods
Aplica la Norma de Seguridad de Pods básica al espacio de nombres suse-observability:
kubectl label ns suse-observability pod-security.kubernetes.io/enforce=baseline --overwrite
kubectl label ns suse-observability pod-security.kubernetes.io/audit=baseline --overwrite
kubectl label ns suse-observability pod-security.kubernetes.io/warn=baseline --overwrite
|
Si las Normas de Seguridad de Pods están habilitadas en tu clúster, debes asegurarte de que los requisitos previos de Elasticsearch estén correctamente configurados antes de desplegar SUSE Observability.
Dado que la Norma de Seguridad de Pods básica no permite contenedores privilegiados, necesitas seguir las instrucciones para configurar el parámetro del kernel |
Elasticsearch
SUSE Observability utiliza Elasticsearch para almacenar sus índices. Existen algunos requisitos adicionales para los nodos en los que se ejecuta Elasticsearch.
Como la configuración del sistema Linux vm.max_map_count suele ser inferior a la requerida para que Elasticsearch se inicie, se utiliza un contenedor de inicialización que se ejecuta en modo privilegiado y como raíz. El contenedor de inicialización está habilitado por defecto para permitir que se cambie la configuración del sistema vm.max_map_count.
Desactiva el contenedor de inicialización privilegiado de Elasticsearch
En caso de que tú o tus administradores de Kubernetes/OpenShift no deseen que el contenedor de inicialización privilegiado de Elasticsearch esté habilitado por defecto, puedes desactivar este comportamiento en el archivo values.yaml utilizado para instalar SUSE Observability:
-
values.yaml
elasticsearch:
sysctlInitContainer:
enabled: false
|
Si esto está desactivado, necesitarás asegurarte de que la configuración |
Para inspeccionar la configuración actual vm.max_map_count, ejecuta el siguiente comando. Ten en cuenta que ejecuta un pod privilegiado:
kubectl run -i --tty sysctl-check-max-map-count --privileged=true --image=busybox --restart=Never --rm=true -- sysctl vm.max_map_count
Si la configuración actual vm.max_map_count no es al menos 262144, necesitará ser aumentada de otra manera o Elasticsearch no podrá iniciarse y sus pods estarán en un bucle de reinicio. Los registros contendrán un mensaje de error como este:
bootstrap checks failed
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Aumenta la configuración del sistema Linux para Elasticsearch.
Dependiendo de lo que prefieran tus administradores de Kubernetes/OpenShift, el vm.max_map_count puede establecerse en un valor predeterminado más alto en todos los nodos, ya sea cambiando la configuración predeterminada del nodo (por ejemplo, a través de guiones init) o haciendo que un DaemonSet lo haga justo después del inicio del nodo. Lo primero depende mucho de la configuración de tu clúster, por lo que no hay soluciones generales allí.
A continuación se muestra un ejemplo que se puede utilizar como punto de partida para un DaemonSet para cambiar la configuración vm.max_map_count:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: set-vm-max-map-count
namespace: kube-system
labels:
k8s-app: set-vm-max-map-count
spec:
selector:
matchLabels:
name: set-vm-max-map-count
template:
metadata:
labels:
name: set-vm-max-map-count
spec:
# Make sure the setting always gets changed as soon as possible:
tolerations:
- effect: NoSchedule
operator: Exists
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
# Optional node selector (assumes nodes for Elasticsearch are labeled `elasticsearch:yes`
# nodeSelector:
# elasticsearch: yes
initContainers:
- name: set-vm-max-map-count
image: busybox
securityContext:
runAsUser: 0
privileged: true
command: ["sysctl", "-w", "vm.max_map_count=262144"]
resources:
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 100m
memory: 100Mi
# A pause container is needed to prevent a restart loop of the pods in the daemonset
# See also this Kubernetes issue https://github.com/kubernetes/kubernetes/issues/36601
containers:
- name: pause
image: busybox
command: ["sleep", "infinity"]
resources:
limits:
cpu: 50m
memory: 50Mi
requests:
cpu: 50m
memory: 50Mi
Para limitar el número de nodos a los que se aplica esto, se pueden etiquetar los nodos. Los NodeSelectors en este DaemonSet, como se muestra en el ejemplo, y en la ampliación de Elasticsearch se pueden configurar para ejecutarse solo en nodos con la etiqueta específica. Para Elasticsearch, el selector de nodos se puede especificar a través de los valores:
elasticsearch:
nodeSelector:
elasticsearch: yes
sysctlInitContainer:
enabled: false