3.2. 在 MicroShift 中配置入口控制


您可以通过更新 MicroShift 服务配置文件来使用详细的入口控制设置。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 有对集群的 root 访问权限。
  • 集群使用 OVN-Kubernetes 网络插件。

流程

  1. 使用以下两种方式之一应用入口控制设置:

    1. 通过在 /etc/microshift/ 目录中生成提供的 config.yaml.default 文件的副本,将其命名为 config.yaml 并将其保留在源目录中,来更新 MicroShift config.yaml 配置文件。

      • 创建后,config.yaml 文件优先于内置设置。每次 MicroShift 服务启动时都会读取配置文件。
    2. 使用配置片段应用您想要的 ingress 控制设置。要做到这一点,创建一个配置片断 YAML 文件,并将其放在 /etc/microshift/config.d/ 配置中。

      • 配置片断 YAML 优先于内置设置和 config.yaml 配置文件。如需更多信息,请参阅附加资源链接。
  2. 将 MicroShift YAML 的 network 部分中的默认值替换为您的有效值,或将配置片断文件替换为您需要的部分。

    带有默认值的 Ingress 控制器配置字段

    apiServer:
    # ...
    ingress:
        defaultHTTPVersion: 1
        forwardedHeaderPolicy: Append
        httpCompression:
            mimeTypes:
                - ""
        httpEmptyRequestsPolicy: Respond
    # ...
        logEmptyRequests: Log
    # ...
        tuningOptions:
            clientFinTimeout: 1s
            clientTimeout: 30s
            headerBufferBytes: 0
            headerBufferMaxRewriteBytes: 0
            healthCheckInterval: 5s
            maxConnections: 0
            serverFinTimeout: 1s
            serverTimeout: 30s
            threadCount: 4
            tlsInspectDelay: 5s
            tunnelTimeout: 1h
    # ...

    表 3.1. Ingress 控制器配置字段定义表
    参数描述

    defaultHTTPVersion

    为入口控制器设置 HTTP 版本。HTTP 1.1 的默认值为 1

    forwardedHeaderPolicy

    指定入口控制器何时和如何设置 Forwarded ,X- Forwarded -For,X-Forwarded-Host,X-Forwarded-Port,X-Forwarded-Proto, 和 X-Forwarded-Proto-Version HTTP 标头。以下值有效:

    • 附加,通过指定入口控制器附加它们来保留任何现有的标头。
    • 替换,通过指定入口控制器设置标头来删除任何现有标头。
    • IfNone 通过指定入口控制器设置标头(如果未设置标头)来设置标头。
    • 永不,通过指定 ingress 控制器永远不会设置标头来保留任何现有的标头。

    httpCompression

    定义 HTTP 流量压缩的策略。

    • httpCompression.mimeTypes 定义压缩应用到的单个 MIME 类型列表。例如,text/css; charset=utf-8, text/html, text/*, image/svg+xml, application/octet-stream, X-custom/customsub,格式为 type/subtype; [;attribute=value]类型 包括:application, image, message, multipart, text, video, 或一个自定义类型,前是 X-。要查看 MIME 类型和子类型的完整表示法,请参阅 RFC1341 (IETF Datatracker 文档)。

    httpEmptyRequestsPolicy

    描述在收到请求前连接超时时如何处理 HTTP 连接。此字段允许的值是 RespondIgnore。默认值为 Respond。以下是有效值:

    • 响应,会导致入口控制器发送 HTTP 400408 响应,在启用了访问日志时记录连接,并在适当的指标中统计连接。
    • 忽略,在 HAproxy 配置中添加 http-ignore-probes 参数。如果字段设置为 Ignore,则入口控制器在不发送响应的情况下关闭连接,然后记录连接或递增指标。

    通常,空请求连接来自负载均衡器健康探测或 Web 浏览器预先连接,可以安全地忽略。但是,网络错误和端口扫描也可以创建这些空请求,因此将此字段设置为 Ignore 可能会妨碍检测或诊断问题,并妨碍入侵尝试检测。

    logEmptyRequests

    指定没有接收和记录请求的连接。通常,这些空请求来自负载均衡器健康探测或 Web 浏览器规范连接,如 preconnects。记录这些类型的空请求是不正常的。但是,网络错误和端口扫描也可以创建空请求,因此将此字段设置为 Ignore 可能会妨碍检测或诊断问题,并妨碍入侵尝试检测。

    以下是有效值:

    • 日志,表示应记录事件。
    • 忽略,该选项在 HAproxy 配置中设置 dontlognull 选项。

    tuningOptions

    指定用于调整入口控制器 pod 性能的选项。

    • tuningOptions.clientFinTimeout 参数指定连接在等待客户端响应关闭连接时保持打开的时长。默认超时为 1s
    • tuningOptions.clientTimeout 参数指定连接在等待客户端响应时保持打开的时长。默认超时为 30s
    • tuningOptions.headerBufferBytes 参数指定为 Ingress Controller 连接会话保留多少内存(以字节为单位)。如果为 Ingress Controller 启用了 HTTP/2,则必须至少为 16384。如果没有设置,则默认值为 32768 字节。

      重要

      不建议设置此字段,因为 headerBufferMaxRewriteBytes 参数值太小可能会破坏入口控制器。相反,headerBufferMaxRewriteBytes 的值太大可能会导致入口控制器使用比必要更多的内存。

    • tuningOptions.headerBufferMaxRewriteBytes 参数指定从 headerBufferBytes 为 HTTP 标头重写和附加 Ingress Controller 连接会话应保留多少内存(以字节为单位)。headerBufferMaxRewriteBytes 的最小值是 4096headerBufferBytes 值必须大于传入的 HTTP 请求的 headerBufferMaxRewriteBytes 值。
    • 如果没有设置,则默认值为 8192 字节。

      重要

      不建议设置此字段,因为 headerBufferMaxRewriteBytes 参数值太小可能会破坏入口控制器。相反,headerBufferMaxRewriteBytes 的值太大可能会导致入口控制器使用比必要更多的内存。

    • tuningOptions.healthCheckInterval 参数指定路由器在健康检查之间等待的时间。默认值为 5s
    • tuningOptions.serverFinTimeout 参数指定连接在等待服务器响应关闭连接时保持打开的时长。默认超时为 1s
    • tuningOptions.serverTimeout 参数指定连接在等待服务器响应时保持打开的时长。默认超时为 30s
    • tuningOptions.threadCount 参数指定每个 HAProxy 进程创建的线程数量。创建更多线程可让每个入口控制器 pod 处理更多连接,而代价会增加所使用的系统资源。HAProxy 支持最多 64 个线程。如果此字段为空,则默认值为 4 个线程。

      重要

      不建议设置此字段,因为增加 HAProxy 线程数量允许入口控制器 pod 在负载下使用更多 CPU 时间,并防止其他 pod 接收需要执行的 CPU 资源。

    • tuningOptions.tlsInspectDelay 参数指定路由器可以保存数据以查找匹配的路由的时间。将此值设置为太短可能会导致路由器回退到边缘终止、重新加密或透传路由的默认证书,即使在使用更好匹配的证书时也是如此。默认检查延迟为 5s
    • tuningOptions.tunnelTimeout 参数指定隧道连接(包括 websocket)在隧道闲置时保持打开的时长。默认超时为 1h
  3. 运行以下命令完成任何其他配置,然后启动或重启 MicroShift:

    $ sudo systemctl start microshift
    $ sudo systemctl restart microshift

验证

在进行 ingress 配置更改并重启 MicroShift 后,您可以检查路由器 Pod 的年龄,以确保应用了更改。

  • 要检查路由器 pod 的状态,请运行以下命令:

    $ oc get pods -n openshift-ingress

    输出示例

    NAME                              READY   STATUS    RESTARTS   AGE
    router-default-8649b5bf65-w29cn   1/1     Running   0          6m10s

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.