Поиск по сайту:

Как установить и использовать Traefik в качестве обратного прокси с Docker на CentOS 8


На этой странице

  1. Предпосылки
  2. Установите Docker и Docker Compose
  3. Создать сеть Docker
  4. Установка и настройка прокси-сервера Traefik
  5. Создание файла Docker Compose
  6. Сборка контейнера Traefik Docker
  7. Доступ к веб-интерфейсу Traefik
  8. Заключение

Traefik — это обратный прокси-сервер HTTP с открытым исходным кодом и балансировщик нагрузки, который помогает вам легко развертывать микросервисы. Вы можете легко интегрировать его с компонентами вашей инфраструктуры, включая Docker, Kubernetes, Docker Swarm, Rancher, AWS и многие другие. Если вы хотите запускать несколько приложений на одном хосте Docker, вы можете использовать Traefik в качестве обратного прокси-сервера, чтобы открыть порты 80 и 443 для остального мира.

В этом руководстве мы покажем вам, как установить и настроить Traefik в качестве обратного прокси-сервера на CentOS 8.

Предпосылки

  • Сервер под управлением CentOS 8.
  • Действительное доменное имя, указанное с IP-адресом вашего сервера.
  • Пароль root настраивается на сервере.

Установите Docker и Docker Compose

Во-первых, вам нужно будет установить в вашей системе последнюю версию Docker и Docker Compose. По умолчанию Docker недоступен в репозитории CentOS 8 по умолчанию. Поэтому вам нужно будет добавить репозиторий Docker CE в вашу систему. Вы можете добавить его с помощью следующей команды:

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

После создания репозитория установите Docker CE с помощью следующей команды:

dnf install docker-ce --nobest -y

После установки Docker запустите службу Docker и включите ее запуск при перезагрузке системы с помощью следующей команды:

systemctl start docker
systemctl enable docker

Чтобы установить Docker Compose, вам необходимо установить Curl и загрузить двоичный файл Docker Compose в вашу систему. Вы можете сделать это с помощью следующей команды:

dnf install curl
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Создать сеть Docker

Далее вам нужно будет создать новую сеть Docker для запуска контейнера traefik. Вы можете создать его с именем \web\, выполнив следующую команду:

docker network create web

Затем проверьте свою сеть с помощью следующей команды:

docker network ls

Вы должны получить следующий результат:

NETWORK ID          NAME                DRIVER              SCOPE
76a9475e5ab0        bridge              bridge              local
2a3d79f64747        host                host                local
4c9123229eaa        none                null                local
0b6e010b43d0        web                 bridge              local

Установите и настройте прокси-сервер Traefik

Перед запуском вам необходимо установить httpd-tools для генерации зашифрованного пароля. Вы можете установить этот инструмент с помощью следующей команды:

dnf install httpd-tools -y

После установки сгенерируйте зашифрованный пароль с помощью следующей команды:

htpasswd -nb admin my_password

Вы должны получить следующий результат:

admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0

Затем создайте новый файл конфигурации Traefik с помощью следующей команды:

nano traefik.toml

Добавьте следующие строки, включая ваше действительное доменное имя, защищенный пароль и порт:

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.dashboard]
    address = ":8080"
    [entryPoints.dashboard.auth]
      [entryPoints.dashboard.auth.basic]
        users = ["admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0"]
  [entryPoints.http]
    address = ":80"
      [entryPoints.http.redirect]
        entryPoint = "https"
  [entryPoints.https]
    address = ":443"
      [entryPoints.https.tls]

[api]
entrypoint="dashboard"

[acme]
email = ""
storage = "acme.json"
entryPoint = "https"
onHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

[docker]
domain = "traefik.linuxbuz.com"
watch = true
network = "web"

Сохраните и закройте файл, когда закончите. Затем создайте пустой файл для хранения вашей информации Let’s Encrypt.

touch acme.json

Затем дайте правильное разрешение этому файлу с помощью следующей команды:

chmod 600 acme.json

Создайте файл компоновки Docker

Далее вам нужно будет создать новый файл docker-compose.yml и определить свой домен, порт, сеть и том.

Вы можете создать его с помощью следующей команды:

nano docker-compose.yml

Добавьте следующие строки:

version: '3'

services:

  traefik:
    image: traefik:1.7.21-alpine
    command: --docker --docker.domain=linuxbuz.com
    ports:
      - 80:80
      - 443:443
    networks:
      - web
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    labels:
      - "traefik.frontend.rule=Host:traefik.linuxbuz.com"
      - "traefik.port=8080"
    container_name: traefik
    restart: always

networks:
   web:
    external: true

Сохраните и закройте файл, когда закончите.

Сборка контейнера Traefik Docker

На этом файл конфигурации Traefik и Docker Compose готов. Теперь создайте контейнер Traefik с помощью следующей команды:

docker-compose up -d

Вы должны получить следующий результат:

Unable to find image 'traefik:1.7.21-alpine' locally
1.7.21-alpine: Pulling from library/traefik
c9b1b535fdd9: Pull complete 
c141e361698e: Pull complete 
2573c02b6f16: Pull complete 
1619fb3841d1: Pull complete 
Digest: sha256:0e4ac8ae724603898620dbd5eb9cda7ec05f405d25476eb0d32b716b490ba079
Status: Downloaded newer image for traefik:1.7.21-alpine
27e735357bb3b7d2d253ff78ddf6e78896851420eff399e8ade23affc7ff0bf7

Затем проверьте работающий контейнер с помощью следующей команды:

docker ps

Вы должны получить следующий результат:

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                      NAMES
7604696507a5        traefik:1.7.21-alpine   "/entrypoint.sh --do…"   6 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   traefik

Доступ к веб-интерфейсу Traefik

Теперь откройте веб-браузер и войдите в веб-интерфейс Traefik, используя URL-адрес https://traefik.linuxbuz.com. Вам будет предложено ввести имя пользователя и пароль:

Укажите имя пользователя в качестве администратора и пароль, которые вы создали ранее, и нажмите кнопку «Войти». Вы должны увидеть панель инструментов Traefik на следующем экране:

Нажмите на вкладку ЗДОРОВЬЕ. Вы должны увидеть состояние работоспособности контейнера Traefik на следующем экране:

Заключение

Поздравляем! вы успешно установили прокси-сервер Traefik на CentOS 8. Для получения дополнительной информации посетите документацию Traefik.