Skip to content

Commit 64c9151

Browse files
author
Tom Softreck
committed
ansible tests
1 parent 4691a1f commit 64c9151

File tree

7 files changed

+97
-53
lines changed

7 files changed

+97
-53
lines changed

Makefile

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
up:
2+
podman-compose -f docker-compose.yml up -d
3+
4+
down:
5+
podman-compose -f docker-compose.yml down
6+
7+
logs:
8+
podman-compose -f docker-compose.yml logs
9+
10+
test:
11+
ansible-playbook ansible/test.yml
12+
13+
ps:
14+
podman ps -a
15+
16+
restart:
17+
podman-compose -f docker-compose.yml down && podman-compose -f docker-compose.yml up -d

README.md

Lines changed: 30 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 🔧 Tutorial Deployment Flask z Podman + Traefik
1+
# Tutorial Deployment Flask z Podman + Traefik
22

33
Jak używać Traefik jako zaawansowanego reverse proxy Jak konfigurować service discovery Jak używać labels w kontenerach Jak monitorować aplikacje przez dashboard
44

@@ -331,60 +331,47 @@ services:
331331
332332
---
333333
334-
## Krok 5: Uruchomienie systemu
334+
## Krok 5: Testowanie środowiska (Ansible)
335335
336-
### Przygotowanie aplikacji
337-
```bash
338-
# Skopiuj swoje aplikacje do odpowiednich folderów
339-
cp -r ~/moj-sklep/* ~/traefik-setup/sklep/
340-
cp -r ~/moj-blog/* ~/traefik-setup/blog/
341-
# itd...
342-
343-
# Lub utwórz przykładowe aplikacje
344-
cd ~/traefik-setup
345-
```
336+
Do automatycznych testów środowiska możesz użyć playbooka:
346337
347-
### Uruchomienie (wersja testowa)
348338
```bash
349-
# Uruchom z plikiem testowym
350-
docker-compose -f docker-compose-local.yml up -d
351-
352-
# Sprawdź status
353-
docker-compose -f docker-compose-local.yml ps
339+
ansible-playbook ansible/test.yml
354340
```
355341

356-
### Testowanie
357-
```bash
358-
# Sprawdź dashboard Traefik
359-
curl http://localhost:8082
342+
Testuje on:
343+
- dostępność dashboardu Traefika (domyślnie na http://localhost:8083/dashboard/ lub http://localhost:8081/dashboard/)
344+
- dostępność usług projekt1 i projekt2 przez Traefik
345+
- nagłówek Server dla dashboardu Traefika
360346

361-
# Testuj aplikacje
362-
curl http://localhost/sklep
363-
curl http://localhost/blog
364-
curl http://localhost/api
365-
curl http://localhost/portfolio
366-
```
347+
#### Przykład Makefile
367348

368-
---
349+
```Makefile
350+
up:
351+
podman-compose -f docker-compose.yml up -d
369352

370-
## Krop 6: Monitoring i Dashboard
353+
down:
354+
podman-compose -f docker-compose.yml down
371355

372-
### Dostęp do Dashboard Traefik
373-
Idź na: `http://twój-ip:8082`
356+
logs:
357+
podman-compose -f docker-compose.yml logs
374358

375-
W dashboard zobaczysz:
376-
- **HTTP Routers**: Twoje trasy
377-
- **HTTP Services**: Twoje usługi
378-
- **HTTP Middlewares**: Middleware (CORS, auth, itp.)
359+
test:
360+
ansible-playbook ansible/test.yml
379361

380-
### Zaawansowany monitoring z Prometheus
381-
```yaml
382-
# Dodaj do docker-compose.yml w sekcji traefik command:
383-
- "--metrics.prometheus=true"
384-
- "--metrics.prometheus.addEntryPointsLabels=true"
385-
- "--metrics.prometheus.addServicesLabels=true"
362+
ps:
363+
podman ps -a
364+
365+
restart:
366+
podman-compose -f docker-compose.yml down && podman-compose -f docker-compose.yml up -d
386367
```
387368

369+
## Krok 6: Debugowanie
370+
371+
- Jeśli dashboard nie działa na `/dashboard/`, sprawdź porty i ścieżki w traefik.yml.
372+
- Sprawdź logi Traefika: `make logs`
373+
- Sprawdź, czy backendy odpowiadają na `/projekt1` i `/projekt2`.
374+
388375
---
389376

390377
## Krok 7: Automatyzacja i zarządzanie
@@ -541,9 +528,7 @@ docker inspect sklep | grep traefik
541528

542529
#### Certyfikaty SSL nie działają
543530
```bash
544-
# Sprawdź logi Traefik
545-
docker-compose logs traefik | grep acme
546-
531+
# Sprawdź logi Traefika: `make logs`
547532
# Sprawdź plik certyfikatów
548533
ls -la letsencrypt/
549534
```

ansible/test.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,19 @@
1313
register: traefik_dashboard
1414
ignore_errors: yes
1515

16+
- name: Check Traefik dashboard headers
17+
uri:
18+
url: http://localhost:8083/dashboard/
19+
method: GET
20+
status_code: 200
21+
return_content: no
22+
register: traefik_headers
23+
24+
- name: Assert Traefik Server header
25+
assert:
26+
that:
27+
- "'traefik' in traefik_headers.headers['server'] | lower"
28+
1629
- name: Check Projekt1 service
1730
uri:
1831
url: http://localhost:8081/projekt1

docker-compose.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ services:
99
- "8083:8083" # Traefik dashboard
1010
volumes:
1111
- "./traefik/traefik.yml:/etc/traefik/traefik.yml:ro"
12-
- "./traefik/rules.yml:/etc/traefik/rules.yml:ro"
12+
- "./traefik/dynamic.yml:/etc/traefik/dynamic.yml:ro"
13+
- "/run/user/1000/podman/podman.sock:/var/run/docker.sock" # Mount Podman socket
14+
environment:
15+
- DOCKER_HOST=unix:///var/run/docker.sock
1316
networks:
1417
- podman
1518
restart: unless-stopped
@@ -21,22 +24,30 @@ services:
2124
build: ./projekt1
2225
networks:
2326
- podman
27+
expose:
28+
- 5000
2429
labels:
2530
- "traefik.enable=true"
2631
- "traefik.http.routers.projekt1.rule=Host(`localhost`) && PathPrefix(`/projekt1`)"
2732
- "traefik.http.routers.projekt1.entrypoints=web"
2833
- "traefik.http.services.projekt1.loadbalancer.server.port=5000"
29-
- "traefik.http.middlewares.strip-prefix.stripprefix.prefixes=/projekt1"
30-
- "traefik.http.routers.projekt1.middlewares=strip-prefix@docker"
34+
- "traefik.http.middlewares.strip-projekt1.stripprefix.prefixes=/projekt1"
35+
- "traefik.http.routers.projekt1.middlewares=strip-projekt1@docker"
3136
restart: unless-stopped
3237

3338
projekt2:
3439
build: ./projekt2
3540
networks:
3641
- podman
42+
expose:
43+
- 5000
3744
labels:
3845
- "traefik.enable=true"
3946
- "traefik.http.routers.projekt2.rule=Host(`localhost`) && PathPrefix(`/projekt2`)"
47+
- "traefik.http.routers.projekt2.entrypoints=web"
48+
- "traefik.http.services.projekt2.loadbalancer.server.port=5000"
49+
- "traefik.http.middlewares.strip-projekt2.stripprefix.prefixes=/projekt2"
50+
- "traefik.http.routers.projekt2.middlewares=strip-projekt2@docker"
4051
restart: unless-stopped
4152

4253
networks:

traefik/dynamic.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Dynamic configuration is now handled through Docker labels
2+
# This file is kept as a placeholder but is not actively used
3+
4+
http:
5+
serversTransports:
6+
myTransport:
7+
insecureSkipVerify: true
8+
maxIdleConnsPerHost: 200
9+
10+
# All routing and middleware configuration is now managed through Docker labels in docker-compose.yml

traefik/rules.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ http:
3333
projekt1:
3434
loadBalancer:
3535
servers:
36-
- url: "http://projekt1:5000"
36+
- url: "http://python-podman-traefik_projekt1_1:5000"
3737

3838
# Project 2 service
3939
projekt2:
4040
loadBalancer:
4141
servers:
42-
- url: "http://projekt2:5000"
42+
- url: "http://python-podman-traefik_projekt2_1:5000"
4343

4444
middlewares:
4545
# Strip /projekt1 prefix
@@ -59,3 +59,4 @@ http:
5959
stripPrefix:
6060
prefixes:
6161
- "/dashboard"
62+
forceSlash: true

traefik/traefik.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,20 @@ api:
66
entryPoints:
77
web:
88
address: ":80"
9-
dashboard:
9+
traefik:
1010
address: ":8083"
1111

1212
providers:
13-
file:
14-
filename: "/etc/traefik/rules.yml"
13+
docker:
14+
endpoint: "unix:///var/run/docker.sock"
15+
exposedByDefault: false # Only expose containers with traefik.enable=true
16+
network: podman # Match your Podman network name
17+
useBindPortIP: false # Important for Podman compatibility
1518
watch: true
1619

20+
serversTransport:
21+
insecureSkipVerify: true
22+
1723
log:
1824
level: DEBUG
25+
format: common

0 commit comments

Comments
 (0)