我部署了https://librespeed.org/的本地实例来测试我的 LAN 速度。更换一些旧电缆后,速度很好(〜800mpbs 对称)。
我想让服务保持运行并给它一个 URL,所以我创建了一个docker-compose.yml并给它一些标签,以便通过 Traefik 公开它(就像我的其他服务一样)。令我惊讶的是,经过此更改,速度显着降低(约 450mbps,几乎降低了 50%)。
起初我责怪 Traefik,但后来我只是禁用了 HTTPS,速度又回到了约 800mbps。
我检查过的内容:
我想知道的是:
提前致谢
编辑:reddit 的高人让我意识到我的旧 CPU 没有硬件 AES 加速,所以这解决了我的大部分担忧。我认为这个问题无论如何仍然相关,至少可以提醒其他人这种情况可能发生)。
在 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)
谢谢
我正在尝试为虚拟主机上本地运行的反应应用程序设置证书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) 我正在使用 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 文件变体?
我有一个包含以下服务的应用程序:
所有流量都是这样的:
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是否需要其他选择?
你知道 traefik 能够为你的网络服务做所有让我们加密的东西(请求和更新)。但是 traefik 将请求的证书存储为 JSON 文件,这不是证书的通用格式。
我想对我的邮件服务器也使用 Let's Encrypt 证书,所以我需要它们的简单格式:*.pem 或 *.crt。
我的问题是:traefik 是否有可能以通用格式存储 Let's Encrypt 证书?
感谢帮助!
通过 terraform 创建的 Kubernetes pod 没有/var/run/secrets文件夹,但根据hello-minikube教程创建的 pod 有-为什么会这样,我该如何解决?
动机:我需要 traefik 才能与 k8s 集群通信。
我已经设置了一个带有 minikube 的本地 Kubernetes 集群,并设置了 terraform 以使用该集群。
要设置traefik,你需要创建一个Ingress和Deployment它们尚未被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)
以这种方式创建的资源在 …
使用trafix w/docker后端,我想匹配表单的所有URL /manage/users/api...并将它们映射到/api....我试过了:
traefik.frontend.rule=PathPrefixStrip:/manage/users;PathPrefix:/api;
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.有没有办法做到这一点?
我有一个GatsbyJS静态站点--prefix-paths.将pathPrefix被设置为/environment/test在gatsby-config.js.它被部署到运行Traefik的码头工人群中.
将以下标签添加到服务使一切运行正常:
traefik.frontend.rule=PathPrefixStrip:/environment/test
然后我可以浏览/environment/test并点击我的GatsbyJs网站.
但是我发现它很奇怪,因为后端是使用路径前缀构建的.
添加以下标签不起作用:
traefik.frontend.rule=PathPrefix:/environment/test
不应该用PathPrefix而不是PathPrefixStrip吗?
我尝试traefik在GKE(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