1 后端协议
自 v1.2.0 开始支持
并非所有网关API实现都支持自动协议选择。在某些情况下,协议在没有明确选择加入的情况下被禁用。
当 Route 的后端引用Kubernetes Service 时,应用程序开发人员可以使用 ServicePort
appProtocol 字段指定协议。
例如,以下 Kubernetes Service store
表示端口 8080
支持 HTTP/2。
apiVersion: v1
kind: Service
metadata:
name: store
spec:
selector:
app: store
ports:
- protocol: TCP
appProtocol: kubernetes.io/h2c
port: 8080
targetPort: 8080
目前,Gateway API对以下方面进行了一致性测试:
kubernetes.io/h2c
HTTP/2kubernetes.io/ws
基于HTTP的WebSocket
2 网关基础设置标签
Gateway API 实现负责创建使每个 Gateway 工作所需的后端基础设施。例如,在 Kubernetes 集群中运行的实现通常会创建 Services 和 Deployments,而基于云的实现可能会创建云负载均衡器资源。在许多情况下,能够将标签或注释传播到这些生成的资源是非常有帮助的。
Gateway 上的基础设施字段允许您为由 Gateway API 控制器创建的基础设施指定标签和注释。例如,如果您的 Gateway 基础设施在集群内运行,您可以使用以下 Gateway 配置同时指定 Linkerd 和 Istio 的注入,从而使基础设施更容易集成到您安装的任何服务网格中。
以下是一个示例配置:
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: meshed-gateway
namespace: incoming
spec:
gatewayClassName: meshed-gateway-class
listeners:
- name: http-listener
protocol: HTTP
port: 80
infrastructure:
labels:
istio-injection: enabled
annotations:
linkerd.io/inject: enabled