3.5. 第 5 步 - 配置您的网关策略和 HTTP 路由
虽然您的网关现已部署,但它没有公开的端点,且您的 HTTPS 侦听器没有被编程。接下来,您可以设置一个 TLSPolicy
,它利用您的 CertificateIssuer
设置 HTTPS 侦听器证书。
您将定义一个 AuthPolicy
,它将为任何未保护的端点设置默认的 HTTP 403
响应,以及一个 RateLimitPolicy
,它将设置默认的 artificially low 全局限制,以进一步保护此网关公开的任何端点。
您还将使用负载平衡策略定义 DNSPolicy
,以及用于网关的 HTTPRoute
与后端应用程序 API 通信。
3.5.1. 设置 TLS 策略 复制链接链接已复制到粘贴板!
流程
为您的网关设置
TLSPolicy
,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查控制器是否接受了您的 TLS 策略,如下所示:
kubectl get tlspolicy ${gatewayName}-tls -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
kubectl get tlspolicy ${gatewayName}-tls -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.2. 设置 Auth 策略 复制链接链接已复制到粘贴板!
流程
为您的网关设置默认 deny-all
AuthPolicy
,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查控制器是否接受您的 auth 策略,如下所示:
kubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
kubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.3. 设置速率限制策略 复制链接链接已复制到粘贴板!
流程
为您的网关设置默认
RateLimitPolicy
,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意根据您的集群应用
RateLimitPolicy
可能需要几分钟时间。本例中的限制非常低,可轻松地显示它。要检查您的速率限值已被接受,请输入以下命令:
kubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
kubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.4. 设置 DNS 策略 复制链接链接已复制到粘贴板!
流程
为您的网关设置
DNSPolicy
,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意DNSPolicy
将使用您之前定义的 DNS ProviderSecret
。本例中的
地理位置是EU
,但您可以更改它以符合您的要求。检查您的
DNSPolicy
是否已接受,如下所示:kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.5. 创建 HTTP 路由 复制链接链接已复制到粘贴板!
出于测试目的,本节假定部署了 toystore 应用。如需更多信息,请参阅 第 4 章 连接链接应用程序开发人员工作流。
流程
创建一个
HTTPRoute
以测试您的网关,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查您的网关策略是否强制实施,如下所示:
kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}' kubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}' kubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}'
kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}' kubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}' kubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查您的 HTTPS 侦听器是否已就绪,如下所示:
kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type=="Programmed")].message}'
kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type=="Programmed")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow