Compare commits

...

8 Commits

Author SHA1 Message Date
f9b3475086 Version v2.4.9; sync labels 2021-06-27 20:18:21 +02:00
ef443bae50 Add "headless mode" config
Closes https://git.autonomic.zone/coop-cloud/traefik/issues/24.
2021-06-27 20:17:41 +02:00
aacf00309e Update traefik Docker tag to v2.4.9 2021-06-23 07:03:18 +00:00
f73e38d143 Use new image namespace 2021-06-21 12:32:15 +02:00
661bec4727 Bump versions for CI 2021-06-10 12:38:42 +02:00
7258b129c4 Support OVH configuration
See https://github.com/Autonomic-Cooperative/traefik/pull/1.
2021-06-10 12:36:54 +02:00
bbbdfc272d Merge pull request #1 from ahdinosaur/lets-encrypt-dns-challenge-ovh
add support for Let's Encrypt DNS-01 challenge (for wildcard domains)
2021-06-10 12:01:37 +02:00
2c81622d9a add support for Let's Encrypt DNS-01 challenge (for wildcard domains)
start with support for OVH provider, but in a way for others to be added in the future:

https://doc.traefik.io/traefik/https/acme/#dnschallenge
2021-06-10 14:53:17 +12:00
8 changed files with 82 additions and 6 deletions

View File

@ -14,8 +14,9 @@ steps:
STACK_NAME: traefik
LETS_ENCRYPT_ENV: production
LETS_ENCRYPT_EMAIL: helo@autonomic.zone
TRAEFIK_YML_VERSION: v3
FILE_PROVIDER_YML_VERSION: v2
TRAEFIK_YML_VERSION: v4
FILE_PROVIDER_YML_VERSION: v3
ENTRYPOINT_VERSION: v1
trigger:
branch:
- master
@ -24,7 +25,7 @@ kind: pipeline
name: recipe release
steps:
- name: release a new version
image: decentral1se/drone-abra:latest
image: thecoopcloud/drone-abra:latest
settings:
command: recipe traefik release
deploy_key:

View File

@ -8,6 +8,19 @@ LETS_ENCRYPT_EMAIL=certs@example.com
# WARN, INFO etc.
LOG_LEVEL=WARN
## Enable dns challenge (for wildcard domains)
## https://doc.traefik.io/traefik/https/acme/#dnschallenge
#LETS_ENCRYPT_DNS_CHALLENGE_ENABLED=1
#LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER=ovh
## OVH configuration
# COMPOSE_FILE="compose.yml:compose.ovh.yml"
# OVH_ENABLED=1
# OVH_APPLICATION_KEY=
# OVH_ENDPOINT=
# SECRET_OVH_APP_SECRET_VERSION=v1
# SECRET_OVH_CONSUMER_KEY=v1
## Enable Keycloak
#COMPOSE_FILE="compose.yml:compose.keycloak.yml"
#KEYCLOAK_MIDDLEWARE_ENABLED=1
@ -38,3 +51,6 @@ LOG_LEVEL=WARN
## Host-mode networking
#COMPOSE_FILE="compose.yml:compose.host.yml"
## "Headless mode" (no domain configured)
#COMPOSE_FILE="compose.yml:compose.headless.yml"

View File

@ -1,2 +1,3 @@
export TRAEFIK_YML_VERSION=v8
export TRAEFIK_YML_VERSION=v9
export FILE_PROVIDER_YML_VERSION=v2
export ENTRYPOINT_VERSION=v1

14
compose.headless.yml Normal file
View File

@ -0,0 +1,14 @@
---
version: "3.8"
services:
app:
deploy:
update_config:
failure_action: rollback
order: start-first
labels:
- "traefik.enable=true"
- "traefik.http.services.traefik.loadbalancer.server.port=web"
- "traefik.http.routers.traefik.entrypoints=web-secure"
- "traefik.http.routers.traefik.service=api@internal"

21
compose.ovh.yml Normal file
View File

@ -0,0 +1,21 @@
version: "3.8"
services:
app:
environment:
- OVH_APPLICATION_KEY
- OVH_APPLICATION_SECRET_FILE=/run/secrets/ovh_app_secret
- OVH_CONSUMER_KEY_FILE=/run/secrets/ovh_consumer_key
- OVH_ENABLED
- OVH_ENDPOINT
secrets:
- ovh_app_secret
- ovh_consumer_key
secrets:
ovh_app_secret:
name: ${STACK_NAME}_ovh_app_secret_${SECRET_OVH_APP_SECRET_VERSION}
external: true
ovh_consumer_key:
name: ${STACK_NAME}_ovh_consumer_key_${SECRET_OVH_CONSUMER_KEY}
external: true

View File

@ -1,7 +1,7 @@
version: "3.8"
services:
app:
image: "traefik:v2.4.8"
image: "traefik:v2.4.9"
# Note(decentral1se): *please do not* add any additional ports here.
# Doing so could break new installs with port conflicts. Please use
# the usual `compose.$app.yml` approach for any additional ports
@ -16,6 +16,9 @@ services:
target: /etc/traefik/traefik.yml
- source: file_provider_yml
target: /etc/traefik/file-provider.yml
- source: entrypoint
target: /custom-entrypoint.sh
mode: 0555
networks:
- proxy
environment:
@ -27,6 +30,8 @@ services:
timeout: 10s
retries: 10
start_period: 1m
command: traefik
entrypoint: /custom-entrypoint.sh
deploy:
update_config:
failure_action: rollback
@ -40,7 +45,7 @@ services:
- "traefik.http.routers.traefik.tls.options=default@file"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.middlewares=security@file"
- coop-cloud.${STACK_NAME}.app.version=v2.4.8-d7d63b0d
- coop-cloud.${STACK_NAME}.app.version=v2.4.9-be23e1f6
networks:
proxy:
external: true
@ -53,5 +58,9 @@ configs:
name: ${STACK_NAME}_file_provider_yml_${FILE_PROVIDER_YML_VERSION}
file: file-provider.yml.tmpl
template_driver: golang
entrypoint:
name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION}
file: entrypoint.sh.tmpl
template_driver: golang
volumes:
letsencrypt:

10
entrypoint.sh.tmpl Normal file
View File

@ -0,0 +1,10 @@
#!/bin/sh
set -e
{{ if eq (env "OVH_ENABLED") "1" }}
export OVH_CONSUMER_KEY=$(cat "$OVH_CONSUMER_KEY_FILE")
export OVH_APPLICATION_SECRET=$(cat "$OVH_APPLICATION_SECRET_FILE")
{{ end }}
/entrypoint.sh "$@"

View File

@ -66,3 +66,7 @@ certificatesResolvers:
storage: /etc/letsencrypt/production-acme.json
httpChallenge:
entryPoint: web
{{ if eq (env "LETS_ENCRYPT_DNS_CHALLENGE_ENABLED") "1" }}
dnsChallenge:
provider: {{ (env "LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER") }}
{{ end }}