标签: traefik

Docker 上的 Traefik 使用 HTTPS(相对于 HTTP)是否会明显变慢?

我部署了https://librespeed.org/的本地实例来测试我的 LAN 速度。更换一些旧电缆后,速度很好(〜800mpbs 对称)。

我想让服务保持运行并给它一个 URL,所以我创建了一个docker-compose.yml并给它一些标签,以便通过 Traefik 公开它(就像我的其他服务一样)。令我惊讶的是,经过此更改,速度显着降低(约 450mbps,几乎降低了 50%)。

起初我责怪 Traefik,但后来我只是禁用了 HTTPS,速度又回到了约 800mbps。

我检查过的内容:

  • 所有其他设置和堆栈都完全相同。
  • TLS 握手似乎只发生一次,因此这并不能解释其中的差异。
  • 使用的密码是 TLS_AES_128_GCM_SHA256、128 位密钥、TLS 1.3。我没有更改任何有关密码的 Traefik 默认设置,因此这可能是 Traefik 的默认设置。
  • 用于测试的浏览器是Firefox 84.0.2(64位)。

我想知道的是:

  • 这是常见的性能下降吗?
  • Traefik 加密流量真的很慢吗?
  • docker 化是否会以某种方式影响 AES 加密(可能会阻止某些硬件访问)?

提前致谢

编辑:reddit 的高人让我意识到我的旧 CPU 没有硬件 AES 加速,所以这解决了我的大部分担忧。我认为这个问题无论如何仍然相关,至少可以提醒其他人这种情况可能发生)。

https aes docker traefik tls1.3

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

从 Traefik V2 defaultRule 中删除 docker-compose 堆栈名称

在 Traefik V2 中,defaultRule=Host( .Name .. ) 中的 .Name 属性会打印容器名称-stackName,而不是在使用 docker-compose 时仅打印容器名称。

知道如何删除它吗?这是我目前的规则:

- --providers.docker.defaultRule=Host(`{{ trimPrefix `/` .Name }}.containers.myorg.com`)
Run Code Online (Sandbox Code Playgroud)

如果我的撰写堆栈的名称是monitoring,并且容器是grafana,则会创建:

grafana-monitoring.containers.myorg.com
Run Code Online (Sandbox Code Playgroud)

代替

grafana.containers.myorg.com
Run Code Online (Sandbox Code Playgroud)

谢谢

docker docker-compose traefik

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

无法获取域的 ACME 证书 - 尝试在 docker 上的虚拟本地主机中设置 HTTPS

我正在尝试为虚拟主机上本地运行的反应应用程序设置证书local.example.com。这必须只在本地 docker 设置上工作。在阅读了一些文章之后,我想出了这个 docker-compose.yml:

version: "3"
services:
  mongo:
    image: mongo
    restart: always
    ports:
      - "27017:27017"
    volumes:
      - mongodbdata:/data/db
    networks:
      - proxy
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - "8081:8081"
    networks:
      - proxy
  react:
    build:
      context: ./client
      dockerfile: ./Dockerfile
    ports:
      - "3001:3001"
    stdin_open: true
    volumes:
      - ./client:/client
      - /client/node_modules
    labels:
      # this enables traefik for your service
      - "traefik.enable=true"
      # this defines the url, traefik will get the ssl certificate for
      - "traefik.http.routers.myapplication.rule=Host(`local.example.com`)"
      # this tells traefik to use …
Run Code Online (Sandbox Code Playgroud)

ssl-certificate docker docker-compose traefik

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

使用 Helm 使用 Traefik 配置 Lets Encrypt

我正在使用 helm 将 taefik 部署到我的 kubernetes 集群。这是我目前所拥有的:

helm upgrade --install load-balancer --wait --set ssl.enabled=true,ssl.enforced=true,acme.enabled=true,acme.email=an@email.com stable/traefik
Run Code Online (Sandbox Code Playgroud)

我正在尝试配置letsencrypt。根据此文档- 您将域添加到 .toml 文件的底部。

查看 helm chart的代码,没有提供此类配置。

有没有其他方法可以做到这一点,或者我是否需要分叉图表来创建我自己的 .toml 文件变体?

kubernetes lets-encrypt traefik kubernetes-helm

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

Traefik配置允许websocket

我有一个包含以下服务的应用程序:

  • tls终止(基于https-portal)
  • 反向代理(nginx)
  • 其他服务(Web,API,WSS等)

所有流量都是这样的:

https-portal-> nginx->其他服务

我用Traefik替换了https-portal,但我无法使websocket正确通过。

以下是我的docker-compose.yml文件的摘录。进入Traefik的流量将转发到反向代理的专用端口。这将执行几次检查,然后将请求转发到适当的服务(API,Web前端,WebSocket服务器等)。

  # Proxy
  proxy:
    image: mynginxproxy
    build: ../../../development/proxy
    restart: always
    labels:
      - traefik.web.frontend.rule=Host:app.dev
      - traefik.web.port=8000
      - traefik.wss.frontend.rule=Host:wss.app.dev
      - traefik.wss.protocol=ws
      - traefik.wss.port=9002
      - traefik.api.frontend.rule=Host:api.app.dev
      - traefik.api.port=8002
      - ... // other labels

  # Traefik
  traefik:
    image: traefik
    command: --web --docker --docker.domain=app.dev --logLevel=DEBUG
    labels:
      - "traefik.enable=false"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /dev/null:/traefik.toml
Run Code Online (Sandbox Code Playgroud)

在app.dev域上为Web前端提供服务时,在ws://wss.app.dev上尝试了websocket连接,但它无法连接到基础的websocket服务器。错误似乎链接到Origin头,该头设置为app.dev,目标服务器为wss.app.dev。

日志表格traefik:

traefik_1        | time="2017-08-02T13:55:05Z" level=warning msg="Error while upgrading connection : websocket: 'Origin' header value not allowed"
Run Code Online (Sandbox Code Playgroud)

我不确定我在这里缺少什么,因为这可以通过https-portal正确传递。Traefik是否需要其他选择?

proxy websocket traefik

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

存储 traefik 让我们加密证书而不是 json

你知道 traefik 能够为你的网络服务做所有让我们加密的东西(请求和更新)。但是 traefik 将请求的证书存储为 JSON 文件,这不是证书的通用格式。

我想对我的邮件服务器也使用 Let's Encrypt 证书,所以我需要它们的简单格式:*.pem 或 *.crt。

我的问题是:traefik 是否有可能以通用格式存储 Let's Encrypt 证书?

感谢帮助!

ssl-certificate lets-encrypt traefik

3
推荐指数
2
解决办法
4210
查看次数

Kubernetes pod 机密 /var/run/secrets 丢失

特尔;博士:

通过 terraform 创建的 Kubernetes pod 没有/var/run/secrets文件夹,但根据hello-minikube教程创建的 pod 有-为什么会这样,我该如何解决

动机:我需要 traefik 才能与 k8s 集群通信。

细节

我已经设置了一个带有 minikube 的本地 Kubernetes 集群,并设置了 terraform 以使用该集群。

要设置traefik,你需要创建一个IngressDeployment它们尚未被terraform支持。根据该问题中发布的解决方法,我使用一个更简单的模块通过 terraform 执行 yaml 文件:

# A tf-module that can create Kubernetes resources from YAML file descriptions.
variable "name" {}
variable "file_name" { }
resource "null_resource" "kubernetes_resource" {
  triggers {
    configuration = "${var.file_name}"
  }
  provisioner "local-exec" {
    command = "kubectl apply -f ${var.file_name}"
  }
}
Run Code Online (Sandbox Code Playgroud)

以这种方式创建的资源在 …

kubernetes terraform minikube traefik

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

traefik:一起使用PathPrefixStrip和PathPrefix

使用trafix w/docker后端,我想匹配表单的所有URL /manage/users/api...并将它们映射到/api....我试过了:

traefik.frontend.rule=PathPrefixStrip:/manage/users;PathPrefix:/api;
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.有没有办法做到这一点?

traefik

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

为什么当PathPrefix不能使用PathPrefixStrip时?

我有一个GatsbyJS静态站点--prefix-paths.将pathPrefix被设置为/environment/testgatsby-config.js.它被部署到运行Traefik的码头工人群中.

将以下标签添加到服务使一切运行正常: traefik.frontend.rule=PathPrefixStrip:/environment/test

然后我可以浏览/environment/test并点击我的GatsbyJs网站.

但是我发现它很奇怪,因为后端是使用路径前缀构建的.

添加以下标签不起作用: traefik.frontend.rule=PathPrefix:/environment/test

不应该用PathPrefix而不是PathPrefixStrip吗?

gatsby traefik

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

GKE traefik无法创建rbac权限

我尝试traefikGKE(google cloud kubernetes引擎)上安装为入口控制器,并且在尝试时:

kubectl apply -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-rbac.yaml
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

来自服务器的错误(禁止):创建“ https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-rbac.yaml时出错“ :: clusterroles.rbac.authorization.k8s.io“ traefik-ingress-controller”被禁止:尝试授予额外的特权:[PolicyRule {APIGroups:[“”],资源:[“服务”],动词:[“ get “]} PolicyRule {APIGroups:[”“],资源:[” services“],动词:[” list“]} PolicyRule {APIGroups:[”“],资源:[” services“],动词:[”监视“]} PolicyRule {APIGroups:[”“],资源:[” endpoints]],动词:[“ get”]} PolicyRule {APIGroups:[“”],资源:[“ endpoints”],动词:[“列表“]} PolicyRule {APIGroups:[”“],资源:[”端点“],动词:[” watch“]} PolicyRule {APIGroups:[”“],资源:[” secrets“],动词:[” get “]} PolicyRule {APIGroups:[“”],资源:[“ secrets”],动词:[“ list”]} PolicyRule {APIGroups:[“”],资源:[“ secrets”],动词:[“ watch”]} PolicyRule {APIGroups: [“扩展名”],资源:[“入口”],动词:[“ get”]} PolicyRule {APIGroups:[“扩展名”],资源:[“入口”],动词:[“列表”]} PolicyRule { APIGroups:[“扩展名”],资源:[“ ingresses”],动词:[“ watch”]}] user=&{IzoPi4a@gmail.com [system:authenticated] map [user-assertion.cloud.google.com :[ADKE0IBz9kwSuZRZkfbLil8iC / ijcmJJmuys2DvDGxoxQ5yP6Pdq1IQs3JRwDmd / lWm2vGdMXGB4h1QKiwx + 3uV2ciTb / oQNtkthBvONnVp4fJGOSW1S + 8O8dqvoUNRLNeB5gADNn1TKEYoB + JvRkjrkTOxtIh7rPugLaP5Hp7thWft9xwZqF9U4fgYHnPjCdRgvMrDvGIK8z7ONljYuStpWdJDu7LrPpT0L]]} …

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

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