Задать вопрос

Как добавить свои ssl-сертификаты в конфиг Traefik?

Здравствуйте коллеги!
Подскажите, пожалуйста.
Настроен файл провайдер в Traefik, который смотрит за изменениями в папке services. Внутри находится папка с ssl-сертификатами.
Внутри папки services лежит файл my-domain.yml c таким содержимым:

---
http:
  routers:
    router-mydomain:
      entryPoints:
        - https
      service: mydomain-service
      rule: Host(`mydomain.com`)
      tls:
        certificates:
          - certFile: "/services/ssl/my-domain.crt"
            keyFile: "/services/ssl/my-domain.key"
  services:
    mydomain-service:
      loadBalancer:
        servers:
          - url: http://192.168.1.100:8080/


Проблема в том, что по какой-то причине, мой сертификат не подхватывается Traefik-ом. Если использовать не мои сертификаты, а от letsEncrypt - то всё ок.
---
http:
  routers:
    router-mydomain:
      entryPoints:
        - https
      service: mydomain-service
      rule: Host(`mydomain.com`)
      tls:
        certResolver: letsEncrypt
  services:
    mydomain-service:
      loadBalancer:
        servers:
          - url: http://192.168.1.100:8080/

Подскажите, как правильно настроить проксирование до моего сервиса с моими сертификатами, что в конфиге не так ?
  • Вопрос задан
  • 498 просмотров
Подписаться 3 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@RELT1N
Системный администратор идущий к DevOps
Возможно вопрос уже не актуальный но я использую единый файл для записи указав его вот так:
volumes:
      - ./traefik/acme.json:/acme.json


после чего внутри файл могу пописать значения:

{
  "myresolver": {
    "Account": {
      "Email": "XXX@mail.ru",
      "Registration": {
        "body": {
          "status": "valid",
          "contact": [
            "mailto:XXX@mail.ru"
          ]
        },
        "uri": "https://acme-v02.api.letsencrypt.org/acme/acct/1627690517"
      },
      "PrivateKey": "MIIJKgIBAAKC"    
      "KeyType": "4096"
    },
    "Certificates": [
      {
        "domain": {
          "main": "proxy.domen.ru"
        },
        "certificate": "LS0tLS1CRUd"
        "key": "LS0tLS1CRUdJTi"       
        "Store": "default"
      },


и нужно не забыть указать в yaml файле траефика:

command:
      - "--certificatesresolvers.myresolver.acme.email=XXX@mail.ru"
      - "--certificatesresolvers.myresolver.acme.storage=/traefik/acme.json"


мой полный ymal файл в качестве примера:
version: '3.7'

services:
  traefik:
    image: traefik:v2.5
    container_name: traefik
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik/acme.json:/acme.json
      - ./traefik/traefik.yml:/traefik.yml
      - ./traefik/dynamic_conf.yml:/dynamic_conf.yml
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entryPoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.myresolver.acme.email=XXX@mail.ru"
      - "--certificatesresolvers.myresolver.acme.storage=/traefik/acme.json"
      - "--providers.file.filename=/traefik/dynamic_conf.yml"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.rule=Host(`proxy.domen.ru`)"
      - "traefik.http.routers.traefik.service=api@internal"
      - "traefik.http.routers.traefik.entrypoints=websecure"
      - "traefik.http.routers.traefik.tls.certresolver=myresolver"

networks:
  default:
    external:
      name: web


Файловая структура:
/home/sky/
├── docker-compose.yml
└── traefik/
└── acme.json
└── dynamic_conf.yml
└── traefik.yml
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы