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.

Exponga SUSE Observability fuera del clúster

Descripción general

SUSE® Observability se puede exponer con un recurso Ingress de Kubernetes. Los ejemplos en esta página muestran cómo configurar un controlador Ingress de Traefik o Nginx utilizando Helm para SUSE Observability ejecutándose en Kubernetes. Esta página también documenta qué combinación de servicio/puerto exponer al utilizar un método diferente de configuración del tráfico de Ingress.

Al observar el clúster que también alberga SUSE® Observability, el tráfico del agente se puede mantener completamente dentro del clúster mismo cambiando la configuración del agente durante la instalación del agente.

Configure Ingress a través del SUSE® Observability gráfico de Helm

El SUSE® Observability gráfico de Helm expone una sección ingress en sus valores. Esto está inhabilitado por defecto. Los ejemplos a continuación muestran cómo utilizar el gráfico de Helm para configurar un controlador de Ingress con cifrado TLS habilitado. Tenga en cuenta que la configuración del controlador en sí y los certificados está más allá del alcance de este documento.

Para configurar el Ingress para SUSE® Observability, cree un archivo ingress_values.yaml con contenidos como los siguientes. Reemplace MY_DOMAIN con su propio dominio (que está vinculado a su controlador de Ingress) y establezca el nombre correcto para el tls-secret. Consulte la documentación de su controlador de Ingress para las anotaciones correctas que debe establecer. Todos los campos a continuación son opcionales, por ejemplo, si no se utilizará TLS, omita esa sección, pero tenga en cuenta que SUSE® Observability tampoco cifra el tráfico.

Tenga en cuenta que la configuración de TLS es necesaria para el uso de la extensión de la interfaz de usuario de Rancher.

  • Traefik

  • Nginx Ingress

Problemas conocidos

Asegúrese de utilizar Traefik < 3.6.3 or >= 3.6.7 (con versión del gráfico de Helm >= 39.0.0), ya que las versiones 3.6.3 a 3.6.6 tienen un problema que causa errores en algunos puntos finales de la API. En particular, las páginas de componentes destacados no se cargan debido a que las llamadas a la API están bloqueadas por Traefik con un error 400 Bad Request.

ingress:
  enabled: true
  ingressClassName: traefik
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: websecure
  hosts:
    - host: suse-observability.MY_DOMAIN
  tls:
    - hosts:
        - suse-observability.MY_DOMAIN
      secretName: tls-secret

El proyecto Ingress Nginx está siendo retirado. Se aconseja a los usuarios que consideren alternativas como Traefik.

ingress:
  enabled: true
  ingressClassName: nginx
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "50m"
  hosts:
    - host: suse-observability.MY_DOMAIN
  tls:
    - hosts:
        - suse-observability.MY_DOMAIN
      secretName: tls-secret

Lo que destaca en este archivo es la anotación de Nginx para aumentar el proxy-body-size permitido a 50m (mayor que cualquier solicitud esperada). Por defecto, Nginx permite tamaños de cuerpo de un máximo de 1m. SUSE® Observability Los agentes y otros proveedores de datos pueden a veces enviar solicitudes mucho más grandes. Por esta razón, debe asegurarse de que el tamaño de cuerpo permitido sea lo suficientemente grande, independientemente de si está utilizando Nginx u otro controlador de Ingress.

Asegúrese de actualizar el baseUrl en el archivo de valores generado durante la instalación inicial, que será utilizado por SUSE® Observability para generar instrucciones de instalación convenientes para el agente.

Los ejemplos utilizan el ingressClassName campo para especificar el ingress en lugar de la anotación kubernetes.io/ingress.class obsoleta. Si su clúster tiene definida una clase de Ingress por defecto, se puede omitir el campo del nombre de la clase de Ingress. Los ejemplos utilizan el ingressClassName campo para especificar el ingress en lugar de la anotación kubernetes.io/ingress.class obsoleta. Si su clúster tiene definida una clase de Ingress por defecto, se puede omitir el campo del nombre de la clase de Ingress.

Incluya el ingress_values.yaml archivo cuando ejecute el comando helm upgrade para desplegar SUSE® Observability:

helm upgrade --install \
  --namespace "suse-observability" \
  --values "ingress_values.yaml" \
  --values $VALUES_DIR/suse-observability-values/templates/baseConfig_values.yaml \
  --values $VALUES_DIR/suse-observability-values/templates/sizing_values.yaml \
  --values $VALUES_DIR/suse-observability-values/templates/affinity_values.yaml \
suse-observability \
suse-observability/suse-observability

Este paso asume que ya se ha ejecutado Generar baseConfig_values.yaml y sizing_values.yaml.

Configurar la regla de Ingress para Open Telemetry

El SUSE® Observability gráfico de Helm expone un servicio opentelemetry-collector en sus valores donde se puede crear un ingress dedicado. Esto está inhabilitado por defecto. El Ingress necesario para fines de opentelemetry-collector debe soportar el protocolo GRPC. Tenga en cuenta que la configuración del controlador en sí y los certificados está más allá del alcance de este documento.

Para configurar el opentelemetry-collector Ingress para SUSE® Observability, cree un archivo ingress_otel_values.yaml con contenidos como los siguientes. Reemplace MY_DOMAIN con su propio dominio (que esté vinculado con su controlador de Ingress) y establezca el nombre correcto para el otlp-tls-secret. Consulte la documentación de su controlador de Ingress para las anotaciones correctas que debe establecer. Todos los campos a continuación son opcionales, por ejemplo, si no se utilizará TLS, omita esa sección, pero tenga en cuenta que SUSE® Observability tampoco cifra el tráfico.

  • Traefik

  • Nginx Ingress

Problemas conocidos

Asegúrese de utilizar Traefik < 3.6.3 or >= 3.6.7 (con versión del gráfico de Helm >= 39.0.0), ya que las versiones 3.6.3 a 3.6.6 tienen un problema que causa errores en algunos puntos finales de la API. En particular, las páginas de componentes destacados no se cargan debido a que las llamadas a la API están bloqueadas por Traefik con un error 400 Bad Request.

Exponer el punto final GRPC del OpenTelemetry Collector a través de Traefik es compatible a partir de la versión v2.8.0 del gráfico Helm SUSE® Observability.

Tenga en cuenta que la entrada del host GRPC requiere un serviceName: suse-observability-otel-collector-grpc explícito para enrutar el tráfico al servicio backend correcto.

opentelemetry-collector:
  ingress:
    enabled: true
    ingressClassName: traefik
    annotations:
      traefik.ingress.kubernetes.io/router.entrypoints: websecure
    hosts:
      - host: otlp-suse-observability.MY_DOMAIN
        paths:
          - path: /
            pathType: Prefix
            serviceName: suse-observability-otel-collector-grpc
            port: 4317
    tls:
      - hosts:
          - otlp-suse-observability.MY_DOMAIN
        secretName: otlp-tls-secret
    additionalIngresses:
      - name: otlp-http
        ingressClassName: traefik
        annotations:
          traefik.ingress.kubernetes.io/router.entrypoints: websecure
        hosts:
          - host: otlp-http-suse-observability.MY_DOMAIN
            paths:
              - path: /
                pathType: Prefix
                port: 4318
        tls:
          - hosts:
              - otlp-http-suse-observability.MY_DOMAIN
            secretName: otlp-http-tls-secret

El proyecto Ingress Nginx está siendo retirado. Se aconseja a los usuarios que consideren alternativas como Traefik.

opentelemetry-collector:
  ingress:
    enabled: true
    ingressClassName: nginx
    annotations:
      nginx.ingress.kubernetes.io/proxy-body-size: "50m"
      nginx.ingress.kubernetes.io/backend-protocol: GRPC
    hosts:
      - host: otlp-suse-observability.MY_DOMAIN
      - host: otlp-suse-observability.MY_DOMAIN
        paths:
          - path: /
            pathType: Prefix
            port: 4317
    tls:
      - hosts:
          - otlp-suse-observability.MY_DOMAIN
          - otlp-suse-observability.MY_DOMAIN
        secretName: otlp-tls-secret
    additionalIngresses:
      - name: otlp-http
        annotations:
          nginx.ingress.kubernetes.io/proxy-body-size: "50m"
        hosts:
          - host: otlp-http-suse-observability.MY_DOMAIN
          - host: otlp-http-suse-observability.MY_DOMAIN
            paths:
              - path: /
                pathType: Prefix
                port: 4318
        tls:
          - hosts:
              - otlp-http-suse-observability.MY_DOMAIN
              - otlp-http-suse-observability.MY_DOMAIN
            secretName: otlp-http-tls-secret

Lo que destaca en este archivo es la anotación de Nginx para aumentar el proxy-body-size permitido a 50m (mayor que cualquier solicitud esperada). Por defecto, Nginx permite tamaños de cuerpo de un máximo de 1m. SUSE® Observability Los agentes y otros proveedores de datos pueden a veces enviar solicitudes mucho más grandes. Por esta razón, debe asegurarse de que el tamaño de cuerpo permitido sea lo suficientemente grande, independientemente de si está utilizando Nginx u otro controlador de Ingress.

Asegúrese de actualizar el baseUrl en el archivo de valores generado durante la instalación inicial, que será utilizado por SUSE® Observability para generar instrucciones de instalación convenientes para el agente.

Los ejemplos utilizan el ingressClassName campo para especificar el ingress en lugar de la anotación kubernetes.io/ingress.class obsoleta. Si su clúster tiene una clase de Ingress por defecto definida, se puede omitir el campo del nombre de la clase de Ingress. Los ejemplos utilizan el ingressClassName campo para especificar el ingress en lugar de la anotación kubernetes.io/ingress.class obsoleta. Si su clúster tiene una clase de Ingress por defecto definida, se puede omitir el campo del nombre de la clase de Ingress.

Incluya el ingress_otel_values.yaml archivo cuando ejecute el comando helm upgrade para desplegar SUSE® Observability:

helm upgrade \
  --install \
  --namespace "suse-observability" \
  --values "ingress_otel_values.yaml" \
  --values $VALUES_DIR/suse-observability-values/templates/baseConfig_values.yaml \
  --values $VALUES_DIR/suse-observability-values/templates/sizing_values.yaml \
  --values $VALUES_DIR/suse-observability-values/templates/affinity_values.yaml \
suse-observability \
suse-observability/suse-observability

Este paso asume que ya se ha ejecutado Generar baseConfig_values.yaml y sizing_values.yaml.

Configurar a través de herramientas externas

Para hacer que SUSE® Observability sea accesible fuera del clúster de Kubernetes en el que está instalado, basta con enrutar el tráfico al puerto 8080 del servicio <namespace>-stackstate-k8s-router. La interfaz de usuario de SUSE® Observability se puede acceder directamente desde la ruta raíz de ese servicio (es decir, http://<namespace>-stackstate-k8s-router:8080), mientras que los agentes utilizarán la ruta /receiver (http://<namespace>-stackstate-k8s-router:8080/receiver).

Asegúrese de actualizar el baseUrl en el archivo de valores generado durante la instalación inicial, que será utilizado por SUSE® Observability para generar instrucciones de instalación convenientes para el agente.

Al configurar manualmente un servidor HTTP Nginx o similar como proxy inverso, asegúrese de que pueda hacer proxy de websockets también. Para Nginx, esto se puede configurar incluyendo las siguientes directivas en la location directiva:

proxy_set_header Upgrade                 $http_upgrade;
proxy_set_header Connection              "Upgrade";

SUSE® Observability en sí no utiliza tráfico cifrado TLS, se espera que el cifrado TLS sea manejado por el controlador de Ingress o los balanceadores de carga externos.

Agentes en el mismo clúster

Los agentes que se despliegan en el mismo clúster que SUSE® Observability pueden, por supuesto, utilizar la URL externa en la que SUSE® Observability está expuesto, pero también es posible configurar el agente para conectarse directamente a la instancia de SUSE® Observability solo a través de la red interna de Kubernetes. Para hacer eso, reemplace el valor de 'stackstate.url' en el helm install comando de la Instalación de Agente Kubernetes con la URL interna del clúster para el servicio de enrutador (ver también arriba): http://<namespace>-suse-observability-router.<namespace>.svc.cluster.local:8080/receiver/stsAgent (las <namespace> secciones deben ser reemplazadas con el espacio de nombres de SUSE® Observability).

Reenviando el puerto del servicio de enrutador SUSE® Observability

Por defecto, el gráfico de Helm de SUSE® Observability despliega un pod y un servicio de enrutador. Este servicio expone el puerto 8080, que es el único punto de entrada que necesita ser expuesto a través de Ingress. También puede acceder a SUSE® Observability a través de reenvío de puertos; al hacerlo, debe permitir localhost como origen de la solicitud.

  • Permitir localhost en stackstate.allowedOrigins está destinado solo para desarrollo local o depuración al usar reenvío de puertos.

  • Esto no es una configuración de producción. Elimine este origen permitido al exponer SUSE® Observability a través de Ingress.

Para acceder a la interfaz de usuario sin configurar Ingress, reenvíe el puerto del servicio de enrutador:

kubectl port-forward service/<helm-release-name>-suse-observability-router 8080:8080 --namespace suse-observability

Al acceder a SUSE® Observability a través de reenvío de puertos, el navegador utiliza http://localhost:8080 como origen de la solicitud. Para permitir solicitudes desde este origen, añada el elemento a la stackstate.allowedOrigins lista en los valores de Helm, o páselo directamente al comando Helm:

helm upgrade \
  --install \
  --namespace suse-observability \
  --values $VALUES_DIR/suse-observability-values/templates/baseConfig_values.yaml \
  --values $VALUES_DIR/suse-observability-values/templates/sizing_values.yaml \
  --values $VALUES_DIR/suse-observability-values/templates/affinity_values.yaml \
  --set stackstate.allowedOrigins={"http://localhost:8080"} \
suse-observability \
suse-observability/suse-observability