Contour持续增加新性能,以帮忙大家更好地治理集群中的ingress操作。咱们的最新release版本Contour 1.9.0当初包含:
- 对外部受权的反对,从而能够依据受权服务器验证申请。
- CORS反对
- 反对提供用于TLS的客户端证书,以验证后端服务
- 迁徙到v1自定义资源定义(CRD)。
内部受权的反对
当初,能够利用Contour的内部受权反对来受权对ingress资源的传入申请。当初,Contour启用了Envoy中的内部受权网络过滤器,该过滤器调用内部受权服务以查看传入申请是否被受权。如果网络过滤器认为该申请是未受权的,则连贯将被敞开。
对这项新性能的反对依赖于名为ExtensionService
的新自定义资源定义(CRD)。这个新的API形容了Envoy如何连贯到内部受权服务器。
内部验证的事件程序:
- 将一个内部受权服务部署到您的群集:此服务与您的Auth Provider进行对话,并确定是否应受权该申请。
- 创立
ExtensionService
CRD:此CRD容许在上一步中创立的内部受权服务可用,以便Contour能够应用该gRPC端点配置Envoy。 - 创立
HTTPProxy
资源:ingress对象中的VirtualHost援用将虚拟主机链接到受权服务的ExternalService
CRD。 - 在每个客户申请中,Envoy都会向内部验证服务发送受权查看以确定受权。
CORS 反对
Contour的HTTPProxy API当初反对指定CORS策略,该策略配置了Envoy的CORS过滤器,以容许网络应用程序申请来自不同起源的资源。
CORS应用其余HTTP标头来通知浏览器,使运行在一个终点上的Web应用程序能够拜访来自其起源(域,协定或端口)不同的选定资源。
在此示例中,跨域申请将被容许用于任何域(请留神*值):
apiVersion: projectcontour.io/v1kind: HTTPProxyspec: virtualhost: fqdn: local.projectcontour.io corsPolicy: allowCredentials: true allowOrigin: - "*" # allows any origin allowMethods: - GET - POST - OPTIONS allowHeaders: - authorization - cache-control exposeHeaders: - Content-Length - Content-Range maxAge: "10m" # preflight requests can be cached for 10 minutes. routes: - conditions: - prefix: / services: - name: s1 port: 80
反对提供用于TLS的客户端证书,以验证后端服务
Contour当初反对可选地指定Envoy应该提供给Kubernetes的Kubernetes secret,以作为TLS的客户端证书,以便上游服务能够验证来自Envoy的连贯。
v1 CRD
当初,Contour生成v1自定义资源定义(CRD)作为其示例YAML的一部分。这使Contour能够充分利用v1 API的性能,包含验证,默认设置,通过kubectl解释的API文档等。一年多以前,在Kubernetes 1.16中广泛提供了CRD。
此更改将Contour的最低反对Kubernetes版本进步到1.16。
总结
1:Contour的最低反对Kubernetes版本进步到1.16 。在万物皆可CRD的明天,operator 流行的时代。大家须要尽快降级本人的Kubernetes到1.16,能够设想当前越来越多的开源operator都会反对1.16+以上的k8s。
2:Contour 最新版本反对了cors和内部认证,加上曾经反对的熔断,重试,超时等服务治理策略。能够设想到,其后续版本会反对限流等gateway具备的性能。
咱们须要的不仅仅是ingress,兴许是gateway。