标签: traefik

Traefik 和 PostgreSQL

我有带 Docker 的服务器并打开 80 端口。

我使用 Traefik 在容器之间重定向。我想托管 PostgreSQL 数据库。使用此设置启动容器后:

  postgresql:
    image: orchardup/postgresql
    environment:
      - "POSTGRESQL_PASS=***"
    labels:
      - "traefik.enable=true"
      - "traefik.frontend.rule=Path:/postgresql/"
Run Code Online (Sandbox Code Playgroud)

但不是工作

在此处输入图片说明

我究竟做错了什么?

postgresql docker traefik

1
推荐指数
1
解决办法
2001
查看次数

Traefik 路径上的基本身份验证

我正在尝试用密码保护应用程序的特定路径,但似乎我遗漏了一些东西,并且 traefik 文档没有帮助:

从 docker-compose 粘贴:

特拉菲克:

command:
  - "--log.level=INFO"
  - "--providers.docker=true"
  - "--providers.docker.exposedbydefault=false"
  - "--entrypoints.web.address=:80"
  - "--entrypoints.websecure.address=:443"
  - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
  - "--entrypoints.web.http.redirections.entryPoint.scheme=https"
  - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
  - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
  - "--certificatesresolvers.letsencrypt.acme.email=email@email.com"
  - "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"
Run Code Online (Sandbox Code Playgroud)

服务:

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.service.middlewares=service"
  - "traefik.http.routers.service.rule=Host(`domain.example.com`)"
  - "traefik.http.middlewares.service.headers.stsSeconds=31536000"
  - "traefik.http.middlewares.service.headers.forceSTSHeader=true"
  - "traefik.http.middlewares.service.headers.stsIncludeSubdomains=true"
  - "traefik.http.middlewares.service.headers.stsPreload=true"
  - "traefik.http.middlewares.service.headers.referrerPolicy=no-referrer"
  - "traefik.http.middlewares.service.headers.browserXssFilter=true"
  - "traefik.http.middlewares.service.headers.customRequestHeaders.X-Forwarded-Proto=https"
  - "traefik.http.routers.service.tls.certresolver=letsencrypt"
Run Code Online (Sandbox Code Playgroud)

如果我添加以下标签,基本身份验证正在工作,但它在整个网站上启用:

  • “traefik.http.middlewares.service-auth.basicauth.usersfile=/etc/traefik/auth”

  • “traefik.http.routers.service.middlewares=服务,服务身份验证”

我尝试像这样添加第二个路由器,但这似乎不起作用:

  • “traefik.http.routers.service-admin.rule=Host( domain.example.com) && PathPrefix( /somepath)”

  • “traefik.http.middlewares.service-auth.basicauth.usersfile=/etc/traefik/auth”

  • “traefik.http.routers.service-admin.middlewares=service-auth”

我缺少什么?

traefik traefik-authentication

1
推荐指数
1
解决办法
4770
查看次数

Kubernetes:Traefik(v2.2)仪表板返回“404页面未找到”

在 Kubernetes 环境中启动 Traefik 仪表板时遇到问题,以下是我的 traefik 部署设置:

kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: ingress-traefik
  name: traefik
  labels:
    app: traefik

spec:
  replicas: 1
  selector:
    matchLabels:
      app: traefik
  template:
    metadata:
      labels:
        app: traefik
    spec:
      serviceAccountName: traefik-ingress-controller
      containers:
        - name: traefik
          image: traefik:v2.2
          ports:
            - name: web
              containerPort: 80
            - name: websecure
              containerPort: 443
            - name: admin
              containerPort: 8080
          args:
            - --api
            - --api.dashboard=true
            - --providers.kubernetesingress
            - --providers.kubernetescrd
            - --entrypoints.web.Address=:80
            - --entrypoints.websecure.Address=:443
            - --ping.entryPoint=web
            - --log.level=debug
Run Code Online (Sandbox Code Playgroud)

和仪表板 ingressRoute 设置:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute …
Run Code Online (Sandbox Code Playgroud)

kubernetes traefik traefik-ingress

1
推荐指数
1
解决办法
5297
查看次数

无法删除 Kubernetes 命名空间 - 删除终结器失败

我的 Kubernetes 集群中有一个命名空间无法删除。当我运行时kubectl get ns traefik -o yaml,我得到以下信息:

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    cattle.io/status: '{"Conditions":[{"Type":"ResourceQuotaInit","Status":"True","Message":"","LastUpdateTime":"2021-06-11T20:28:59Z"},{"Type":"InitialRolesPopulated","Status":"True","Message":"","LastUpdateTime":"2021-06-11T20:29:00Z"}]}'
    field.cattle.io/projectId: c-5g2hz:p-bl9sf
    lifecycle.cattle.io/create.namespace-auth: "true"
  creationTimestamp: "2021-06-11T20:28:58Z"
  deletionTimestamp: "2021-07-04T07:21:20Z"
  labels:
    field.cattle.io/projectId: p-bl9sf
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:field.cattle.io/projectId: {}
        f:labels:
          .: {}
          f:field.cattle.io/projectId: {}
      f:status:
        f:phase: {}
    manager: agent
    operation: Update
    time: "2021-06-11T20:28:58Z"
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          f:cattle.io/status: {}
          f:lifecycle.cattle.io/create.namespace-auth: {}
    manager: rancher
    operation: Update
    time: "2021-06-11T20:28:58Z"
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1: …
Run Code Online (Sandbox Code Playgroud)

kubernetes traefik kubernetes-namespace

1
推荐指数
1
解决办法
2216
查看次数

Traefik docker 配置基于路径的路由重写

traefik 的 2 天新手,需要帮助了解 traefik v2 中的 istm 是基本的第一个 docker 提供程序配置...

我尝试搜索文档,但只是不知道如何做我想要的事情。

我想要像这样的 docker 容器

  • 应用程序1
  • 应用程序2
  • 应用程序3

并通过 traefik 通过 url 访问这些内容

  • http://app.mydomain.com/app1
  • http://app.mydomain.com/app2
  • http://app.mydomain.com/app3

但是,应用程序本身不喜欢这些额外的路径,因此我想从访问路径中删除前缀,以便应用程序看不到它们。

如果我访问,http://app.mydomain.com/app2/foo我希望容器app2接收请求http://{container.ip.addr}}/foo

作为重现,我知道部分有效的配置在我的 traefik 中具有以下内容docker-compose.yml

version: "3"
services:
  traefik:
    image: "traefik:v2.5.4"
    command:
      - --entrypoints.web.address=:80
      - --providers.docker=true
      - --api
      - --api.insecure=true
      - --api.dashboard=true
      - --providers.file.directory=/etc/traefik/dynamic
      - --providers.docker.defaultRule=Host(`app.mydomain.com`) && PathPrefix(`/{{ index .Labels "com.docker.compose.service" }}`)
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  app1:
    image: containous/whoami:v1.3.0
  app2:
    image: containous/whoami:v1.3.0
  app3: …
Run Code Online (Sandbox Code Playgroud)

docker traefik

1
推荐指数
1
解决办法
1335
查看次数

此服务需要 Traefik Acme“MissingEndpoint”“端点”配置

我已经使用 Traefik 一段时间来获取和续订 ACME 通配符证书。它使用 AWS Route 53 进行 DNS 挑战。证书最近过期了,由于错误而未能续订,我在任何地方都找不到解决方案。我能找到的 Traefik 的任何文档中似乎都不存在“Endpoint”。

route53: MissingEndpoint: 'Endpoint' configuration is required for this service
Run Code Online (Sandbox Code Playgroud)
FULL ERROR:

time="2022-05-09T20:23:49Z" level=error msg="Error renewing certificate from LE: {*.internal.<DOMAIN REMOVED> []}, error: one or more domains had a problem:\n[*.internal.<DOMAIN REMOVED>] [*.internal.<DOMAIN REMOVED>] acme: error presenting token: route53: MissingEndpoint: 'Endpoint' configuration is required for this service\n" providerName=dns-route53.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" here
Run Code Online (Sandbox Code Playgroud)

这是我的 docker-compose 文件的精简版本,用于定义 Traefik:

services:
  traefik:
    image: "traefik:latest"
    environment:
      - AWS_ACCESS_KEY_ID=${TRAEFIK_AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${TRAEFIK_AWS_SECRET_ACCESS_KEY}
      - AWS_REGION=${AWS_REGION}
      - AWS_HOSTED_ZONE_ID=${ROUTE53_HOSTED_ZONE_ID}
    command: …
Run Code Online (Sandbox Code Playgroud)

amazon-route53 traefik acme

1
推荐指数
1
解决办法
1635
查看次数

如何配置 traefik 来处理 CORS 预检请求?

我有一个非常简单的 FastAPI-Traefik-Docker 设置,您可以在这里找到: https: //github.com/mshajarrazip/fastapi-traefik-docker-cors

\n

只需docker-compose up -d运行 FastAPI 和 traefik 服务即可。

\n

此设置中未配置 TLS/SSL。

\n

该应用程序有两个端点 GET“/hello”和 POST“/add”,它们除了返回 json 响应之外什么也不做:

\n

app/main.py

\n
import logging\n\nfrom app import routes\nfrom fastapi import FastAPI\nfrom fastapi.middleware.cors import CORSMiddleware\n\ndef create_application() -> FastAPI:\n    app = FastAPI(title="\xe2\x9c\xa8 ML API \xe2\x9c\xa8")\n\n    app.include_router(routes.hello.router)\n\n    # add CORS\n    # origins = ["*"]\n    app.add_middleware(\n        CORSMiddleware,\n        allow_origins=["*"], # Allows all origins\n        allow_credentials=True,\n        allow_methods=["*"], # Allows all methods\n        allow_headers=["*"], # Allows all headers\n        )\n\n    return app\n\n\napp = create_application()\n
Run Code Online (Sandbox Code Playgroud)\n …

cors preflight docker traefik fastapi

1
推荐指数
1
解决办法
7103
查看次数

traefik - 简单修改URL

我想修改 URL 的端点,同时它从 traefik 到我的容器之一。我想要的是这个。
我的 URL 看起来像这样 - http://backend/asd 它应该指向我的具有不同端点的容器之一,如下所示 - http://asd/dfg
我尝试过的 -

  asd:
    image: asd
    container_name: "asd"
    labels:
      - "traefik.backend=asd"
      - "traefik.frontend.rule=Host:backend;PathPrefixStrip:/asd,PathPrefix:/dfg"
      - "traefik.frontend.entryPoints=http"
      - "traefik.enable=true"
      - "traefik.port=80"
Run Code Online (Sandbox Code Playgroud)

但这没有用。欢迎任何建议。
问候,
阿舒托什

traefik

0
推荐指数
1
解决办法
8443
查看次数

在GCP上将Traefik设置为Kubernetes Ingress

我正在尝试使用此Traefik用户指南:https://docs.traefik.io/user-guide/kubernetes/

用户指南和我的设置之间的主要区别在于指南假设我在Minikube上,而我正在尝试在Google Cloud Platform(GCP)上进行此设置.我是Kubernetes的新手,但我认为我对基本面有一个很好的处理.

无论如何,关于上面的用户指南中提供的基于角色的访问控制配置,我不断收到此错误:

服务器出错(禁止):创建"rbac.yml"时出错:cl usterroles.rbac.authorization.k8s.io"traefik-ingress-controller"被禁止:尝试授予额外权限:[PolicyRule {Resources:["services "],APIGroups:[""],动词:["get"]} PolicyRule {Resour ces:["services"],APIGroups:[""],动词:["list"]} PolicyRule {资源:["服务"],APIGroups:[""],动词:["观察"]} PolicyRule {资源:["端点"],APIGroups:[""],动词:["get"]} PolicyRule {资源:[ "端点"],APIGroups:[""],动词:["list"]} PolicyRule {资源:["端点"],APIGroups:[""],动词:["watch"]} PolicyRule {资源:[ "秘密"],APIGroups:[""],动词:["get"]} PolicyRule {资源:["秘密"],APIGroups:[""],动词:["list"]} PolicyRule {资源:[ "秘密"],APIGroups:[""],动词:["观看"]} PolicyRule {资源:["ingresses"],APIGroups:["extensions"],动词:["get"]} PolicyRule {资源: ["ingresses"],APIGroups:["extensions"],动词:["list"]} PolicyRule {资源:["ingresses"],APIGroups:["扩展名 s"],动词:["watch"]}] user=&{evan@sherwood.io [system:authenti cated] map [authenticator:[GKE]]} ownerrules = [PolicyRule {Resources:["selfsubjectaccessreviews"], APIGroups:["authorization.k8s.io"],动词:["create"]} PolicyRule {资源:["selfsubjectrulesreviews"],APIGroups:["authorization.k8s.io"],动词:["create"]} PolicyRule {NonResourceURLs:["/ api""/ api/""/ apis""/ apis / ""/ healthz""/ swagger-2.0.0.pb-v1""/ swagger.json""/ swaggerapi""/swaggerapi/*""/ version"],动词:["get"]}] ruleResolutionErrors = []

我觉得我正在遇到特权升级预防和引导,但我不确定我需要改变/做什么才能超越这个.

google-cloud-platform kubernetes google-kubernetes-engine traefik

0
推荐指数
1
解决办法
1329
查看次数

使用Traefik,Nginx和Laravel配置Docker

我试图弄清楚如何为开发和以后的部署设置简单的堆栈。我想利用Docker作为面向公众的反向代理在容器中提供Traefik,然后根据需要与Nginx容器进行接口,该Nginx容器仅用于提供静态前端文件(HTML,CSS,JS)和后端PHP容器运行Laravel(我有意将这个项目的前端和API分离)。

我正在尽力从那里学习所有视频和书面教程,但是事情变得非常复杂(至少对于我刚起步的大脑而言),而且有点让人不知所措。我有一个为期一周的截止日期才能完成此项目,并且我强烈考虑暂时放弃Docker,因为我担心我会花整整时间试图弄乱配置而不是实际编码!

首先,我有一个简单的docker-compose,其以下配置至少已正确运行:

version: '3'

services:
  reverse-proxy:
    image: traefik
    command: --api --docker # Enables Web UI and tells Traefik to listen to Docker.
    ports:
      - "80:80" # HTTP Port
      - "8080:8080" # Web UI
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events.
Run Code Online (Sandbox Code Playgroud)

现在,我需要弄清楚如何有效地连接Nginx和PHP / Laravel。

nginx laravel docker traefik

0
推荐指数
1
解决办法
1077
查看次数

带有 Letsencrypt 的 Traefik V2.0 无法为域生成证书

我正在使用 Whoami 进行测试并在生成证书时遇到问题。

acme.json 文件中没有生成任何证书,并且站点使用的是 Traefik 的默认证书,导航器认为该证书无效。

这是错误:

traefik         | time="2019-10-14T21:16:15Z" level=error msg="Unable to obtain ACME certificate for domains \"inner-whoami.mysite.com\": unable to generate a certificate for the domains [inner-whoami.mysite.com]: acme: Error -> One or more domains had a problem:\n[inner-whoami.mysite.com] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized :: Invalid response from https://inner-whoami.mysite.com/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxx [51.75.207.100]: \"Hostname: xxxxxxxxxx\\nIP: 127.0.0.1\\nIP: 172.18.0.2\\nRemoteAddr: 172.18.0.3:55692\\nGET /.well-known/acme-challenge/xxxxxxxxxx\", url: \n" rule="Host(`inner-whoami.mysite.com`)" routerName=inner-whoami-secured providerName=myhttpchallenge.acme
traefik         | time="2019-10-14T21:16:17Z" level=debug msg="legolog: [INFO] Unable to deactivate the authorization: https://acme-v02.api.letsencrypt.org/acme/authz-v3/xxxxxxxxxx"
Run Code Online (Sandbox Code Playgroud)

这是 docker-compose.yml 文件。一切都在里面。如您所见,这是一个准备进一步部署的测试。不是实际的生产文件。我需要在能够使用 Traefik 服务器范围之前解决这个问题......

version: "3.3" …
Run Code Online (Sandbox Code Playgroud)

https docker docker-compose lets-encrypt traefik

0
推荐指数
1
解决办法
7091
查看次数

Traefik v2 和带路径的路由

我试过这个:

version: "3.3"                                                                          
services:                                                                               
  traefik:                                                                              
    image: "traefik:latest"                                                             
    command:                                                                            
      - --api.insecure=true                                                             
      - --providers.docker=true                                                         
      - --providers.docker.exposedbydefault=false                                       
      - --api=true                                                                      
      - --api.dashboard=true                                                            
      - --entrypoints.web.address=:80                                                   
      - --log.filePath=/home/docker/traefik.log                                         
      - --log.level=DEBUG                                                               
    ports:                                                                              
      - "80:80"                                                                         
      - "8080:8080"                                                                     
    volumes:                                                                            
      - "/var/run/docker.sock:/var/run/docker.sock:ro"                                  

  whoami:                                                                               
    image: "containous/whoami"                                                          
    labels:                                                                             
      - "traefik.enable=true"                                                           
      - "traefik.http.routers.whoami.rule=Host(`whoami.traefik.kb`) && Path(`/who`)" 
      - "traefik.http.routers.whoami.entrypoints=web"                                   
      - "traefik.http.routers.whoami.service=whoami"                                    
      - "traefik.http.services.whoami.loadbalancer.server.port=80"                      
  nginx:                                                                                
    image: "nginx:alpine"                                                               
    labels:                                                                             
      - "traefik.enable=true"                                                           
      - "traefik.http.routers.nginx.rule=Host(`nginx.traefik.kb`) && Path(`/ng`)"       
      - "traefik.http.routers.nginx.entrypoints=web"                                    
      - "traefik.http.routers.nginx.service=nginx"                                      
      - "traefik.http.services.nginx.loadbalancer.server.port=80"                       
  nginx2:                                                                               
    image: "nginx:alpine"                                                               
    labels:                                                                             
      - "traefik.enable=true"                                                           
      - "traefik.http.routers.nginx2.rule=Host(`nginx2.traefik.kb`)"                    
      - "traefik.http.routers.nginx2.entrypoints=web"                                   
      - "traefik.http.routers.nginx2.service=nginx2"                                    
      - "traefik.http.services.nginx2.loadbalancer.server.port=80" 
Run Code Online (Sandbox Code Playgroud)

我在 docker …

nginx docker docker-swarm traefik

0
推荐指数
1
解决办法
1613
查看次数

如何在同一个项目中使用Traefik和Envoy来处理grpc-web?

我已经在 grpc.mydomain.com 上使用 LetsEncrypt 在 traefik 上启动并运行了一项服务。但是,由于 CORS 的一些问题,traefik 不支持路由 grpc-web 请求(https://github.com/containous/traefik/issues/4210)。Envoy 似乎是 traefik 的替代品,它与 grpc-web 一起使用,但我不想重新配置所有内容。

如果我将 envoy 放在 envoy.mydomain.com 上,那么它实际上会首先访问 traefik,并且 traefik 无法将 grpc-web 请求路由到 envoy。所以这是行不通的。

如果我将 envoy 置于 traefik (mydomain.com:9091) 之外,则 envoy 不具备 traefik 所具备的 TLS 支持。

我需要将所有内容都切换为 Envoy 吗?还有我没有考虑过的替代方案吗?欢迎任何指导:)

当前 Traefik 设置:

  traefik:
    image: traefik:v2.0.0
    container_name: traefik
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --entrypoints.grpc.address=:8090
      - --providers.docker
      - --api
      - --serversTransport.rootCAs=/certs/grpc.cert
      # Lets Encrypt Resolvers
      - --certificatesresolvers.leresolver.acme.email=${EMAIL}
      - --certificatesresolvers.leresolver.acme.storage=/etc/acme/cert.json
      - --certificatesresolvers.leresolver.acme.tlschallenge=${TLS_CHALLENGE}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - …
Run Code Online (Sandbox Code Playgroud)

traefik grpc-web envoyproxy

0
推荐指数
1
解决办法
2238
查看次数