Как включить внешний интерфейс HTTPS с помощью Traefk в контейнере Azure Service Fabric - PullRequest
0 голосов
/ 06 марта 2019

Моя внутренняя служба находится в контейнере Docker, размещенном в Azure Service Fabric.И сервис с учетом состояния.Поэтому мы используем Traefik для преобразования запроса с сохранением состояния в состояние без сохранения состояния.Для этого Traefik направляет запрос от внешнего интерфейса к нашему внутреннему интерфейсу.Он отлично работает, когда он использует HTTP.Теперь нам нужно включить HTTPS на внешнем интерфейсе.

Я настроил HTTPS для Azure Service Fabric.Когда я захожу на узел кластера, я могу зайти на свой серверный сервис по частному IP.Но я не могу посетить свой сервис из настроенного домена.Журнал Traefik показывает «сервер не найден».Я использую самоподписанный сертификат.И вот моя конфигурация:

[traefikLog]
  filePath = "log/traefik.log"
  format = "json"
  logLevel = "DEBUG"
# Enable debug mode
#
# Optional
# Default: false
#
debug = true

# Traefik logs file
# If not defined, logs to stdout
#
# Optional
#
#traefikLogsFile = "log/traefik.log"

# Log level
#
# Optional
# Default: "ERROR"

#logLevel = "DEBUG"

# Entrypoints to be used by frontends that do not specify any entrypoint.
# Each frontend can specify its own entrypoints.
#
# Optional
# Default: ["http"]
#
defaultEntryPoints = ["http", "https"]

# Entrypoints definition
#
# Optional
# Default:
[entryPoints]
[entryPoints.http]
address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

[acme]
email = "abc@abc.com"
storage = "acme.json"
caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
entryPoint = "https"
  [acme.httpChallenge]
  entryPoint = "http"
[[acme.domains]]
  main = "domain1.azure.com"
[[acme.domains]]
  main = "domain2.azure.com"
[entryPoints.traefik]
address = ":8080"

# Enable access logs
# By default it will write to stdout and produce logs in the textual
# Common Log Format (CLF), extended with additional fields.
#
# Optional
#
[accessLog]

# Sets the file path for the access log. If not specified, stdout will be used.
# Intermediate directories are created if necessary.
#
# Optional
# Default: os.Stdout
#
filePath = "log/log.txt"

# Format is either "json" or "common".
#
# Optional
# Default: "common"
#
# format = "common"

################################################################
# API definition
################################################################

[api]
  # Name of the related entry point
  #
  # Optional
  # Default: "traefik"
  #
  entryPoint = "traefik"

  # Enabled Dashboard
  #
  # Optional
  # Default: true
  #
  dashboard = true

  # Enable debug mode.
  # This will install HTTP handlers to expose Go expvars under /debug/vars and
  # pprof profiling data under /debug/pprof.
  # Additionally, the log level will be set to DEBUG.
  #
  # Optional
  # Default: false
  #
  debug = true

################################################################
# Service Fabric provider
################################################################

# Enable Service Fabric configuration backend
[servicefabric]
filename = "custom_config_template.tmpl" 
debugLogGeneratedTemplate = true

# Service Fabric Management Endpoint
clustermanagementurl = "https://localhost:19080"
# Note: use "https://localhost:19080" if you're using a secure cluster

# Service Fabric Management Endpoint API Version
apiversion = "3.0"

refreshSeconds = 10

# Enable TLS connection.
#
# Optional
#
[serviceFabric.tls]
  cert = "certs/servicefabric.crt"
  key = "certs/servicefabric.key"
  insecureskipverify = true

# Enable REST Provider.
[rest]
  # Name of the related entry point
  #
  # Optional
  # Default: "traefik"
  #
  entryPoint = "traefik"


Вот некоторые вопросы, которые я не понимаю:

  1. В панели инструментов,почему интерфейс все еще HTTP не HTTPS?Note the HTTP entry point

  2. Почему я не могу посетить свой сервис из домена https://domain1.azure.com?

  3. Нужно ли включать https длямой бэкэнд сервис тоже?Сейчас я сделал это, но я думаю, что это может быть ненужным, потому что https или http для моей бэкэнд-службы имеют значение только тогда, когда Traefik вызывает мой бэкэнд.Но нам просто нужно включить https при вызове внешнего интерфейса Traefik.Я прав?

  4. В любом случае, поскольку я также включил https для своей серверной службы, нужно ли привязывать свою серверную службу к тому же сертификату, который я настроил в [entryPoints.https?.tls]?

1 Ответ

1 голос
/ 26 марта 2019

Проблема вызвана моим развертыванием. После того, как я обновил конфигурацию, я только повторно развернул службу Traefik.

  1. Мне нужно повторно развернуть и Traefik, и бэкэнд-сервис.
  2. Некоторая причина, как вопрос 1.
  3. Бэкэнд https не нужен.
  4. Номер
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...