Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

470
Visualizações
¿Por qué no puedo acceder a mi tablero traefik a través de HTTPS?

Estoy tratando de ejecutar un contenedor traefik en mi clúster de enjambre acoplable. Debido a que estamos utilizando comunicación encriptada TLS, quiero que el tablero de traefik esté disponible a través de https.

En mi navegador, trato de acceder a traefik a través del nombre de host del administrador de enjambre de docker a través de https://my.docker.manager y, por lo tanto, monté mi certificado de host y la clave en el servicio traefik.

Cuando intento abrir https://my.docker.manager en mi navegador, se agota el tiempo de espera.

Cuando intento curl https://my.docker.manager directamente en el host (my.docker.manager), obtengo el código HTTP 403 como respuesta

Mi configuración traefik:

 debug=true logLevel = "DEBUG" defaultEntryPoints = ["http","https"] [entryPoints] [entryPoints.http] address = ":80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] [[entryPoints.https.tls.certificates]] certFile = "/etc/traefik/certs/my.docker.manager.crt" keyFile = "/etc/traefik/certs/my.docker.manager.key" [entryPoints.https.tls.defaultCertificate] certFile = "/etc/traefik/certs/my.docker.manager.crt" keyFile = "/etc/traefik/certs/my.docker.manager.key" [api] address = ":8080" [docker] watch = true swarmMode = true

Mi archivo de composición traefik:

 version: "3.7" services: traefik: image: traefik ports: - 80:80 - 443:443 networks: - devops-net volumes: - /var/run/docker.sock:/var/run/docker.sock - /mnt/docker-data/secrets/certs/:/etc/traefik/certs/ configs: - source: traefik.conf target: /etc/traefik/traefik.toml deploy: placement: constraints: - node.role == manager labels: - "traefik.docker.network=devops-net" - "traefik.frontend.rule=Host:my.docker.manager" - "traefik.port=8080" networks: devops-net: driver: overlay external: true configs: traefik.conf: external: true

Como se describe en este artículo ( https://www.digitalocean.com/community/tutorials/how-to-use-traefik-as-a-reverse-proxy-for-docker-containers-on-ubuntu-16-04 ) , esperaba ver el tablero traefik cuando llamo a https://my.docker.manager en mi navegador. Pero solo tengo un tiempo de espera. Cuando uso curl https://my.docker.manager , obtengo el código HTTP 403. Seguí el artículo mencionado excepto dos diferencias: 1) No configuré las credenciales 2) Usé mis propios certificados de host en lugar de letsencrypt

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Mientras tanto, encontré la razón de mi problema (no estoy seguro de cuál es la mejor solución). Por el caso de que a alguien le interese, intentaré explicarlo.

Tengo un Swarm de tres nodos, en la red prod.company.de

Mi cliente está en otra red intranet.comnpany.de

Mi administrador de enjambre está dirigido por docker-manager.prod.company.de. En este host, implementé el servicio traefik, al que quiero acceder a través de https://docker-manager.prod.company.de (Este es el puerto 443 y, debido a la configuración de traefik, se reenvió al tablero de traefik en 8080 dentro del contenedor ).

Si hago un seguimiento del tráfico de mi red, puedo ver que la solicitud https ( https://docker-manager.prod.company.de ) del navegador de mi cliente llega al servidor y luego el tráfico se reenvía a la dirección 17.18.0.2 de docker_gwbridge. Pero la respuesta no encuentra el camino de regreso a mi cliente debido a la configuración NAT de la ventana acoplable.

iptables -t nat -L -v

Cadena POSTROUTING (política ACEPTAR 0 paquetes, 0 bytes)
 pkts bytes target prot opt in out fuente destino
    8 504 MASQUERADE todo -- cualquier docker_gwbridge en cualquier lugar en cualquier lugar ADDRTYPE coincide con tipo-src LOCAL
    0 0 MASQUERADE todo -- cualquier !docker0 172.17.0.0/16 en cualquier lugar
    0 0 MASQUERADE todo -- cualquier !docker_gwbridge 172.18.0.0/16 en cualquier lugar

MASQERADE dice que la IP de origen de la solicitud debe reemplazarse con la IP del puente (en mi caso, 172.18.0.1) para que las respuestas se enruten de nuevo a esta IP. EN el caso anterior, la regla 8 504 MASQUERADE all -- any docker_gwbridge anywhere anywhere haría esto, pero está limitado a solicitudes de LOCAL por ADDRTYPE match src-type LOCAL , lo que significa que usar un navegador en el host docker funcionaría, pero mis conexiones del cliente no funcionan, porque la respuesta no encontrará el camino de regreso a la dirección de mi cliente.

Actualmente, agregué una regla NAT más a mis iptables: iptables -t nat -A POSTROUTING -o docker_gwbridge -j MASQUERADE

lo que resulta en

 1 52 MASQUERADE todo -- cualquier docker_gwbridge en cualquier lugar en cualquier lugar

Después de eso, puedo ver el Tablero traefik, al abrir https://docker-manager.prod.company.de en mi navegador en el cliente.

Pero no entiendo por qué tengo que hacer esto, porque no encontré nada al respecto en ninguna documentación y no creo que mi caso de uso sea realmente raro. Es por eso que estaría feliz, si alguien pudiera echar un vistazo a esta publicación y tal vez comprobar si hice alguna otra cosa mal o explicarme por qué tengo que hacer esas cosas para que funcione un caso de uso estándar.

Saludos cordiales

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda