root: upgrade to traefik 2.3
This commit is contained in:
		@ -12,16 +12,12 @@ services:
 | 
				
			|||||||
      - POSTGRES_PASSWORD=${PG_PASS:-thisisnotagoodpassword}
 | 
					      - POSTGRES_PASSWORD=${PG_PASS:-thisisnotagoodpassword}
 | 
				
			||||||
      - POSTGRES_USER=passbook
 | 
					      - POSTGRES_USER=passbook
 | 
				
			||||||
      - POSTGRES_DB=passbook
 | 
					      - POSTGRES_DB=passbook
 | 
				
			||||||
    labels:
 | 
					 | 
				
			||||||
      - traefik.enable=false
 | 
					 | 
				
			||||||
    env_file:
 | 
					    env_file:
 | 
				
			||||||
      - .env
 | 
					      - .env
 | 
				
			||||||
  redis:
 | 
					  redis:
 | 
				
			||||||
    image: redis
 | 
					    image: redis
 | 
				
			||||||
    networks:
 | 
					    networks:
 | 
				
			||||||
      - internal
 | 
					      - internal
 | 
				
			||||||
    labels:
 | 
					 | 
				
			||||||
      - traefik.enable=false
 | 
					 | 
				
			||||||
  server:
 | 
					  server:
 | 
				
			||||||
    image: beryju/passbook:${PASSBOOK_TAG:-0.11.0-stable}
 | 
					    image: beryju/passbook:${PASSBOOK_TAG:-0.11.0-stable}
 | 
				
			||||||
    command: server
 | 
					    command: server
 | 
				
			||||||
@ -34,9 +30,13 @@ services:
 | 
				
			|||||||
    networks:
 | 
					    networks:
 | 
				
			||||||
      - internal
 | 
					      - internal
 | 
				
			||||||
    labels:
 | 
					    labels:
 | 
				
			||||||
      - traefik.port=8000
 | 
					      traefik.enable: 'true'
 | 
				
			||||||
      - traefik.docker.network=internal
 | 
					      traefik.docker.network: internal
 | 
				
			||||||
      - traefik.frontend.rule=PathPrefix:/
 | 
					      traefik.http.routers.app-router.rule: PathPrefix(`/`)
 | 
				
			||||||
 | 
					      traefik.http.routers.app-router.service: app-service
 | 
				
			||||||
 | 
					      traefik.http.routers.app-router.tls: 'true'
 | 
				
			||||||
 | 
					      traefik.http.services.app-service.loadbalancer.healthcheck.hostname: passbook-healthcheck-host
 | 
				
			||||||
 | 
					      traefik.http.services.app-service.loadbalancer.server.port: '8000'
 | 
				
			||||||
    env_file:
 | 
					    env_file:
 | 
				
			||||||
      - .env
 | 
					      - .env
 | 
				
			||||||
  worker:
 | 
					  worker:
 | 
				
			||||||
@ -44,8 +44,6 @@ services:
 | 
				
			|||||||
    command: worker
 | 
					    command: worker
 | 
				
			||||||
    networks:
 | 
					    networks:
 | 
				
			||||||
      - internal
 | 
					      - internal
 | 
				
			||||||
    labels:
 | 
					 | 
				
			||||||
      - traefik.enable=false
 | 
					 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      PASSBOOK_REDIS__HOST: redis
 | 
					      PASSBOOK_REDIS__HOST: redis
 | 
				
			||||||
      PASSBOOK_POSTGRESQL__HOST: postgresql
 | 
					      PASSBOOK_POSTGRESQL__HOST: postgresql
 | 
				
			||||||
@ -60,12 +58,22 @@ services:
 | 
				
			|||||||
    networks:
 | 
					    networks:
 | 
				
			||||||
      - internal
 | 
					      - internal
 | 
				
			||||||
    labels:
 | 
					    labels:
 | 
				
			||||||
      - traefik.frontend.rule=PathPrefix:/static, /robots.txt, /favicon.ico
 | 
					      traefik.enable: 'true'
 | 
				
			||||||
      - traefik.port=80
 | 
					      traefik.docker.network: internal
 | 
				
			||||||
      - traefik.docker.network=internal
 | 
					      traefik.http.routers.static-router.rule: PathPrefix(`/static`, `/robots.txt`, `/favicon.ico`)
 | 
				
			||||||
 | 
					      traefik.http.routers.static-router.tls: 'true'
 | 
				
			||||||
 | 
					      traefik.http.routers.static-router.service: static-service
 | 
				
			||||||
 | 
					      traefik.http.services.static-service.loadbalancer.healthcheck.path: /
 | 
				
			||||||
 | 
					      traefik.http.services.static-service.loadbalancer.server.port: '80'
 | 
				
			||||||
  traefik:
 | 
					  traefik:
 | 
				
			||||||
    image: traefik:1.7
 | 
					    image: traefik:2.3
 | 
				
			||||||
    command: --api --docker --defaultentrypoints=https --entryPoints='Name:http Address::80 Redirect.EntryPoint:https' --entryPoints='Name:https Address::443 TLS'
 | 
					    command:
 | 
				
			||||||
 | 
					      - "--accesslog=true"
 | 
				
			||||||
 | 
					      - "--api.insecure=true"
 | 
				
			||||||
 | 
					      - "--providers.docker=true"
 | 
				
			||||||
 | 
					      - "--providers.docker.exposedbydefault=false"
 | 
				
			||||||
 | 
					      - "--entrypoints.http.address=:80"
 | 
				
			||||||
 | 
					      - "--entrypoints.https.address=:443"
 | 
				
			||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
      - /var/run/docker.sock:/var/run/docker.sock:ro
 | 
					      - /var/run/docker.sock:/var/run/docker.sock:ro
 | 
				
			||||||
    ports:
 | 
					    ports:
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,7 @@ This update brings these headline features:
 | 
				
			|||||||
- Alerts now disappear automatically
 | 
					- Alerts now disappear automatically
 | 
				
			||||||
- Audit Logs are now searchable
 | 
					- Audit Logs are now searchable
 | 
				
			||||||
- Users can now create their own Tokens to access the API
 | 
					- Users can now create their own Tokens to access the API
 | 
				
			||||||
 | 
					- docker-compose deployment now uses traefik 2.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Fixes:
 | 
					Fixes:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -15,7 +16,11 @@ Fixes:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## Upgrading
 | 
					## Upgrading
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Docker-compose users can upgrade just as usual.
 | 
					### docker-compose
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Docker-compose users should download the latest docker-compose file. This includes the new traefik 2.3.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Kubernetes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For Kubernetes users, there are some changes to the helm values.
 | 
					For Kubernetes users, there are some changes to the helm values.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -100,14 +100,14 @@ spec:
 | 
				
			|||||||
              port: http
 | 
					              port: http
 | 
				
			||||||
              httpHeaders:
 | 
					              httpHeaders:
 | 
				
			||||||
                - name: Host
 | 
					                - name: Host
 | 
				
			||||||
                  value: kubernetes-healthcheck-host
 | 
					                  value: passbook-healthcheck-host
 | 
				
			||||||
          readinessProbe:
 | 
					          readinessProbe:
 | 
				
			||||||
            httpGet:
 | 
					            httpGet:
 | 
				
			||||||
              path: /
 | 
					              path: /
 | 
				
			||||||
              port: http
 | 
					              port: http
 | 
				
			||||||
              httpHeaders:
 | 
					              httpHeaders:
 | 
				
			||||||
                - name: Host
 | 
					                - name: Host
 | 
				
			||||||
                  value: kubernetes-healthcheck-host
 | 
					                  value: passbook-healthcheck-host
 | 
				
			||||||
          resources:
 | 
					          resources:
 | 
				
			||||||
            requests:
 | 
					            requests:
 | 
				
			||||||
              cpu: 100m
 | 
					              cpu: 100m
 | 
				
			||||||
 | 
				
			|||||||
@ -22,8 +22,13 @@ class ProxyDockerController(DockerController):
 | 
				
			|||||||
        for proxy_provider in ProxyProvider.objects.filter(outpost__in=[self.outpost]):
 | 
					        for proxy_provider in ProxyProvider.objects.filter(outpost__in=[self.outpost]):
 | 
				
			||||||
            proxy_provider: ProxyProvider
 | 
					            proxy_provider: ProxyProvider
 | 
				
			||||||
            external_host_name = urlparse(proxy_provider.external_host)
 | 
					            external_host_name = urlparse(proxy_provider.external_host)
 | 
				
			||||||
            hosts.append(external_host_name)
 | 
					            hosts.append(f"`{external_host_name}`")
 | 
				
			||||||
 | 
					        traefik_name = f"pb-outpost-{self.outpost.pk.hex}"
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            "traefik.frontend.rule": f"Host:{','.join(hosts)}",
 | 
					            "traefik.enable": "true",
 | 
				
			||||||
            "traefik.port": "4180",
 | 
					            f"traefik.http.routers.{traefik_name}-router.rule": f"Host({','.join(hosts)})",
 | 
				
			||||||
 | 
					            f"traefik.http.routers.{traefik_name}-router.tls": "true",
 | 
				
			||||||
 | 
					            f"traefik.http.routers.{traefik_name}-router.service": f"{traefik_name}-service",
 | 
				
			||||||
 | 
					            f"traefik.http.services.{traefik_name}-service.loadbalancer.healthcheck.path": "/",
 | 
				
			||||||
 | 
					            f"traefik.http.services.{traefik_name}-service.loadbalancer.server.port": "4180",
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -88,8 +88,8 @@ class ASGILogger:
 | 
				
			|||||||
                self.log(runtime)
 | 
					                self.log(runtime)
 | 
				
			||||||
            await send(message)
 | 
					            await send(message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if self.headers.get(b"host", b"") == b"kubernetes-healthcheck-host":
 | 
					        if self.headers.get(b"host", b"") == b"passbook-healthcheck-host":
 | 
				
			||||||
            # Don't log kubernetes health/readiness requests
 | 
					            # Don't log healthcheck/readiness requests
 | 
				
			||||||
            await send({"type": "http.response.start", "status": 204, "headers": []})
 | 
					            await send({"type": "http.response.start", "status": 204, "headers": []})
 | 
				
			||||||
            await send({"type": "http.response.body", "body": ""})
 | 
					            await send({"type": "http.response.body", "body": ""})
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user