第 6 章 创建网关实例
本节介绍如何在 OpenShift 集群中部署网关。在设置应用程序开发人员要使用的基础架构时,此任务通常由平台工程师执行。
注意
在多集群环境中,为了通过跨集群使用 DNS 来平衡流量的连接链接,您必须使用共享主机名定义网关。您可以使用基于根域的通配符主机名的 HTTPS 侦听器来定义它。如前文所述,您必须将这些资源应用到所有集群。
先决条件
- 请参阅 第 3 章 设置您的环境。
步骤
输入以下命令来创建网关:
kubectl apply -f - <<EOF apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: ${KUADRANT_GATEWAY_NAME} namespace: ${KUADRANT_GATEWAY_NS} labels: kuadrant.io/gateway: "true" spec: gatewayClassName: istio listeners: - allowedRoutes: namespaces: from: All hostname: "api.${KUADRANT_ZONE_ROOT_DOMAIN}" name: api port: 443 protocol: HTTPS tls: certificateRefs: - group: "" kind: Secret name: api-${KUADRANT_GATEWAY_NAME}-tls mode: Terminate EOF
kubectl apply -f - <<EOF apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: ${KUADRANT_GATEWAY_NAME} namespace: ${KUADRANT_GATEWAY_NS} labels: kuadrant.io/gateway: "true" spec: gatewayClassName: istio listeners: - allowedRoutes: namespaces: from: All hostname: "api.${KUADRANT_ZONE_ROOT_DOMAIN}" name: api port: 443 protocol: HTTPS tls: certificateRefs: - group: "" kind: Secret name: api-${KUADRANT_GATEWAY_NAME}-tls mode: Terminate EOF
Copy to Clipboard Copied! 检查网关的状态,如下所示:
kubectl get gateway ${KUADRANT_GATEWAY_NAME} -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Programmed")].message}'
kubectl get gateway ${KUADRANT_GATEWAY_NAME} -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Programmed")].message}'
Copy to Clipboard Copied! 您的网关应
被接受
并编程
了,这意味着它有效并分配了外部地址。检查 HTTPS 侦听器的状态,如下所示:
kubectl get gateway ${KUADRANT_GATEWAY_NAME} -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type=="Programmed")].message}'
kubectl get gateway ${KUADRANT_GATEWAY_NAME} -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type=="Programmed")].message}'
Copy to Clipboard Copied! 您将看到 HTTPS 侦听器尚未编程,或者准备好因为错误的 TLS 配置而接受流量。连接链接可使用 TLSPolicy 来帮助解决这个问题,该策略在下一步中描述。