第 1 章 Routes
1.1. 创建基本路由 复制链接链接已复制到粘贴板!
如果您有未加密的 HTTP,您可以使用路由对象创建基本路由。
1.1.1. 创建基于 HTTP 的路由 复制链接链接已复制到粘贴板!
您可以使用以下步骤创建到 Web 应用程序的简单基于 HTTP 的路由,并将 hello-openshift 应用程序用作示例。
您可以通过公共 URL 创建路由来托管应用程序。根据应用程序的网络安全配置,路由可以是安全的或不受保护的。基于 HTTP 的路由是一个不受保护的路由,它使用基本的 HTTP 路由协议,并在未安全的应用程序端口上公开服务。
前提条件
-
已安装 OpenShift CLI(
oc)。 - 以管理员身份登录。
- 您有一个 web 应用,用于公开端口和侦听端口上流量的 TCP 端点。
流程
运行以下命令,创建一个名为
hello-openshift的项目:$ oc new-project hello-openshift运行以下命令,在项目中创建 pod:
$ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.json运行以下命令,创建名为
hello-openshift的服务:$ oc expose pod/hello-openshift运行以下命令,创建一个没有安全安全的路由到
hello-openshift应用程序:$ oc expose svc hello-openshift
验证
要验证您创建的
路由资源,请运行以下命令:$ oc get routes -o yaml hello-openshift创建的未安全路由的 YAML 定义示例
apiVersion: route.openshift.io/v1 kind: Route metadata: name: hello-openshift spec: host: www.example.com port: targetPort: 8080 to: kind: Service name: hello-openshift其中:
主机-
指定指向该服务的别名 DNS 记录。此字段可以是任何有效的 DNS 名称,如
www.example.com。DNS 名称必须遵循 DNS952 子域惯例。如果没有指定,则会自动生成路由名称。 targetPort指定此路由所指向的服务选择的 pod 上的目标端口。
注意要显示您的默认入口域,请运行以下命令:
$ oc get ingresses.config/cluster -o jsonpath={.spec.domain}
1.1.2. 基于路径的路由 复制链接链接已复制到粘贴板!
基于路径的路由指定了一个路径组件,可以与 URL 进行比较,该 URL 需要基于 HTTP 的路由流量。因此,可以使用同一主机名提供多个路由,每个主机名都有不同的路径。路由器应该匹配基于最具体路径的路由。
下表显示了路由及其可访问性示例:
| Route(路由) | 当比较到 | 可访问 |
|---|---|---|
| www.example.com/test | www.example.com/test | 是 |
| www.example.com | 否 | |
| www.example.com/test 和 www.example.com | www.example.com/test | 是 |
| www.example.com | 是 | |
| www.example.com | www.example.com/text | yes(由主机匹配,而不是路由) |
| www.example.com | 是 |
带有路径的未安全路由
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: route-unsecured
spec:
host: www.example.com
path: "/test"
to:
kind: Service
name: service-name
- 1
- 该路径是基于路径的路由的唯一添加属性。
使用 passthrough TLS 时,基于路径的路由不可用,因为路由器不会在这种情况下终止 TLS,且无法读取请求的内容。