Traefik 与 Knative¶
使用 Knative 提供者时,Traefik 通过 Knative 的自定义资源定义(CRD)获取路由配置。 Knative 概念和资源的详细信息,请参阅官方文档。
Knative 提供者支持 v1.19.0 和 v1.20.0 版本的规范。
部署 Knative 服务¶
Service 是 Knative 规范的核心资源,用于定义流量进入 Knative 应用的入口。
它关联到一个 Ingress,后者指定负责管理和处理流量的 Knative 网络控制器,
确保流量被发送到适当的 Knative 后端服务。
下面的 Service 清单将运行中的 Traefik 控制器配置为处理传入流量。
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: gcr.io/knative-samples/helloworld-go
env:
- name: TARGET
value: "Go Sample v1"
全部部署完成后,向 HTTP 端点发送 GET 请求,应得到以下响应:
$ curl http://helloworld-go.default.example.com
Hello Go Sample v1!
说明
example.com 是部署 Traefik 控制器时配置的公共域名。
更多信息请参阅安装配置。
基于标签的路由¶
要在 Knative 中添加基于标签和百分比的路由,可以在 Service 清单的 traffic 配置段中,为不同修订版本指定标签和流量百分比。
以下是一个示例:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: gcr.io/knative-samples/helloworld-go
env:
- name: TARGET
value: "Go Sample v2"
traffic:
- tag: v1
revisionName: helloworld-go-00001
percent: 50
- tag: v2
revisionName: helloworld-go-00002
percent: 50
在此示例中:
- traffic 配置段指定两个修订版本(helloworld-go-00001 和 helloworld-go-00002),分别带有 v1 和 v2 标签,各接收 50% 的流量。
- tag 字段允许使用标签将流量路由到特定修订版本。
可以通过以下 URL 访问带标签的修订版本:
http://v1-helloworld-go.default.example.comhttp://v2-helloworld-go.default.example.com
使用默认 URL 访问按百分比分配的路由:
http://helloworld-go.default.example.com
HTTP/HTTPS¶
HTTP/HTTPS 配置请参阅 Knative 文档。
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为 Traefik OSS 增加企业级 API 网关能力或商业支持。
为 Traefik OSS 增加 API 网关能力快捷且平滑,无需推倒重来,现有配置也会完整保留。请通过这个简短视频了解实际效果。