Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

16.2. 创建路由

您可以使用 Web 控制台或 CLI 创建不受保护和安全的路由。

使用 Web 控制台,您可以进入 Routes 页面,在导航的 Applications 部分找到。

点击 Create Route 在项目中创建路由:

图 16.1. 使用 Web 控制台创建路由

使用 Web 控制台创建路由

使用 CLI 时,以下示例会创建一个不受保护的路由:

$ oc expose svc/frontend --hostname=www.example.com

新路由从服务继承名称,除非您使用 --name 选项指定名称。

上面创建的非安全路由的 YAML 定义

apiVersion: v1
kind: Route
metadata:
  name: frontend
spec:
  host: www.example.com
  path: "/test" 1
  to:
    kind: Service
    name: frontend

1
对于 基于路径的路由,请指定与 URL 相比的路径组件。

有关使用 CLI 配置路由的详情,请参考 Route Types

非安全的路由是默认配置,因此最容易设置。但是,安全路由 为连接保持私有提供安全性。要创建使用密钥和证书加密的安全 HTTPS 路由(PEM-format 文件必须单独生成和签名),您可以使用 create route 命令并选择性地提供证书和密钥。

注意

TLS 是 HTTPS 和其他加密协议的 SSL 替代。

$ oc create route edge --service=frontend \
    --cert=${MASTER_CONFIG_DIR}/ca.crt \
    --key=${MASTER_CONFIG_DIR}/ca.key \
    --ca-cert=${MASTER_CONFIG_DIR}/ca.crt \
    --hostname=www.example.com

上面创建的安全路由的 YAML 定义

apiVersion: v1
kind: Route
metadata:
  name: frontend
spec:
  host: www.example.com
  to:
    kind: Service
    name: frontend
  tls:
    termination: edge
    key: |-
      -----BEGIN PRIVATE KEY-----
      [...]
      -----END PRIVATE KEY-----
    certificate: |-
      -----BEGIN CERTIFICATE-----
      [...]
      -----END CERTIFICATE-----
    caCertificate: |-
      -----BEGIN CERTIFICATE-----
      [...]
      -----END CERTIFICATE-----

目前,不支持密码保护的密钥文件。启动后,HAProxy 会提示输入密码,且无法自动执行此过程。要从密钥文件中删除密码短语,您可以运行以下命令:

# openssl rsa -in <passwordProtectedKey.key> -out <new.key>

您可以在不指定密钥和证书的前提下创建安全路由,在这种情况下,路由器的默认证书 将用于 TLS 终止。

注意

OpenShift Container Platform 中的 TLS 终止依赖于 SNI 来提供自定义证书。任何在端口 443 上收到的非SNI 流量都使用 TLS 终止处理,默认证书可能与请求的主机名不匹配,从而导致验证错误。

如需有关所有类型的 TLS 终止 以及 基于路径的路由 的更多信息,请参阅 架构部分