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.

Esta es documentación inédita para SUSE® Storage 1.12 (Dev).

Crear un Ingress con Autenticación Básica (Traefik)

Si instalas SUSE Storage en un clúster de Kubernetes con kubectl o Helm, necesitarás crear un Ingress para permitir que el tráfico externo llegue a la interfaz de usuario de SUSE Storage.

La autenticación no está habilitada por defecto para las instalaciones de kubectl y Helm. En estos pasos, necesitas aprender a crear un Ingress con autenticación básica y configurar el soporte para cargas de archivos grandes (para imágenes de respaldo) utilizando Traefik.

Estas instrucciones asumen que el Controlador de Ingress de Traefik está instalado y funcionando en tu clúster. Traefik es el controlador de ingress por defecto para RKE2 y K3s. Si estás utilizando un entorno diferente, asegúrate de que Traefik esté desplegado antes de continuar. Puedes verificar su presencia ejecutando kubectl get pods -A | grep traefik.

1. Crear un Secreto de Autenticación Básica

Crea un archivo de autenticación básica auth. Es importante que el secreto tenga una clave llamada auth para los siguientes pasos.

$ USER=<USERNAME_HERE>; PASSWORD=<PASSWORD_HERE>; echo "${USER}:$(openssl passwd -stdin -apr1 <<< ${PASSWORD})" > auth

Crea el secreto en el espacio de nombres longhorn-system:

$ kubectl -n longhorn-system create secret generic basic-auth --from-file=auth

2. Crear Middlewares de Traefik

Traefik utiliza Middlewares para manejar la autenticación y los límites de solicitudes. Crea un archivo llamado longhorn-middlewares.yml:

apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: longhorn-auth
  namespace: longhorn-system
spec:
  basicAuth:
    secret: basic-auth
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: longhorn-buffering
  namespace: longhorn-system
spec:
  buffering:
    # Allows backing image uploads up to 10,000MB
    maxRequestBodyBytes: 10485760000

Aplica la configuración:

$ kubectl apply -f longhorn-middlewares.yml

3. Crear el Manifiesto de Ingress

Crea un manifiesto de Ingress longhorn-ingress.yml. Para asegurar que las cargas de imágenes de respaldo funcionen como se espera, incluimos el middleware longhorn-buffering a través de anotaciones.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: longhorn-ingress
  namespace: longhorn-system
  annotations:
    # Connect the middlewares defined in step 2
    traefik.ingress.kubernetes.io/router.middlewares:
      longhorn-system-longhorn-auth@kubernetescrd,
      longhorn-system-longhorn-buffering@kubernetescrd
spec:
  ingressClassName: traefik
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: longhorn-frontend
            port:
              number: 80

4. Crear el Ingress

$ kubectl -n longhorn-system apply -f longhorn-ingress.yml

Ejemplo

$ USER=foo; PASSWORD=bar; echo "${USER}:$(openssl passwd -stdin -apr1 <<< ${PASSWORD})" > auth
$ kubectl -n longhorn-system create secret generic basic-auth --from-file=auth
secret/basic-auth created

# (After applying middlewares and ingress manifests)

$ kubectl -n longhorn-system get ingress
NAME                CLASS    HOSTS   ADDRESS      PORTS   AGE
longhorn-ingress   traefik   * 10.0.2.15    80      15s

$ curl -I http://10.0.2.15/
HTTP/1.1 401 Unauthorized
Www-Authenticate: Basic realm="traefik"

$ curl -u foo:bar -I http://10.0.2.15/
HTTP/1.1 200 OK

Pasos adicionales para clústeres de Kubernetes en AWS EKS

Para exponer el controlador de Ingress de Traefik a Internet en AWS EKS, debes aprovisionar un balanceador de carga de AWS. Pueden aplicarse costos adicionales.

  1. Instalar Traefik: Si Traefik no está ya instalado en tu clúster de EKS, sigue la guía de instalación oficial del Chart de Helm de Traefik.

  2. Configurar el Balanceador de Carga: Por defecto, establecer el tipo de servicio de Traefik a LoadBalancer desencadenará la creación de un ELB de AWS. Para una configuración avanzada (como usar un NLB o grupos de seguridad específicos), consulta la Guía de Traefik para AWS.