2. Практика - запуск сервисов Traefik

Thank you for reading this post, don't forget to subscribe!


Traefik – это обрат­ный прок­си с под­держ­кой Docker, кото­рый предо­став­ля­ет встро­ен­ную панель мониторинга.

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

Панель инстру­мен­тов пред­став­ля­ет собой отдель­ное веб-при­ло­же­ние, кото­рое будет рабо­тать в кон­тей­не­ре Traefik по пор­ту 8080.

Если нет необ­хо­ди­мо­сти в запа­ро­лен­ном досту­пе к пане­ли управ­ле­ния, то про­стей­шая фор­ма для запус­ка будет выгля­деть сле­ду­ю­щим образом:

# docker -v
Docker version 19.03.1, build 74b1e89
# docker-compose -v
docker-compose version 1.22.0, build f46880fe

# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.170 test.ru nginx.test.ru nginx2.test.ru

cat docker-compose.yml

У traefik толь­ко 1 точ­ка вхо­да, это 80 порт. На пор­ту 8080 будет доступ­на панель в кото­рой визу­аль­но отоб­ра­жа­ет­ся какие сер­ви­сы доступ­ны.
Для под­ни­ма­е­мых нами сер­ви­сов ука­за­ны сле­ду­ю­щие домен­ные име­на: nginx.test.ru и nginx2.test.ru,
они исполь­зу­ют создан­ную ранее docker сеть traefik
и как мы видим, отве­ча­ют по одно­му 80 пор­ту.  Для того что­бы рабо­тал сер­вис рабо­тал ему про­пи­сы­ва­ет­ся пункт label где зада­ют­ся пара­мет­ры для traefik.
Ниже пока­зан ответ curl по нашим сервисам:

curl nginx.test.ru

[spoiler] [/spoiler]

 

curl nginx2.test.ru
test

================================

если необ­хо­ди­мо вклю­чить базо­вую аутен­ти­фи­ка­цию для сер­ви­са и для dashboard traefik, то исполь­зу­ем сле­ду­ю­щую стро­ку:

traefik.frontend.auth.basic: "admin:$$apr1$$s8D70azI$$zyyC7/WNXteoQpYwVB3zd0"

пароль гене­ри­ру­ем сле­ду­ю­щим обра­зом:
echo $(htpasswd -nb admin admin) | sed -e s/\\$/\\$\\$/g

если отсут­ству­ет:
htpasswd

то ста­вим пакет httpd-tools

 

кон­фиг будет иметь сле­ду­ю­щий вид:


 

Обя­за­тель­но зада­ём expose 8080

EXPOSE сооб­ща­ет кон­тей­не­ру, какие пор­ты сле­ду­ет исполь­зо­вать для внут­рен­ней сети Docker. Дру­гие кон­тей­не­ры могут исполь­зо­вать эту инфор­ма­цию для под­клю­че­ния к нему.
т.е. вы откры­ва­е­те пор­ты, не пуб­ли­куя их на хост-машине - они будут доступ­ны толь­ко для свя­зан­ных служб

 

================

если необ­хо­ди­мо под­клю­чить ssl сер­ти­фи­кат то необ­хо­ди­мо создать допол­ни­тель­ный файл traefik.toml


в docker-compose.yaml про­ки­ды­ва­ем наш файл:
volume /opt/traefik/traefik.toml:/traefik.toml

подроб­нее тут:
https://docs.traefik.io/basics/#entrypoints