Networking Operators
在 OpenShift Dedicated 中管理特定于网络的 Operator
摘要
第 1 章 OpenShift Dedicated 中的 DNS Operator 复制链接链接已复制到粘贴板!
在 OpenShift Dedicated 中,DNS Operator 部署和管理 CoreDNS 实例,为集群中的 pod 提供名称解析服务,启用基于 DNS 的 Kubernetes 服务发现,并解析内部 cluster.local 名称。
默认情况下,这个 Operator 安装在 OpenShift Dedicated 集群上。
1.1. 使用 DNS 转发 复制链接链接已复制到粘贴板!
为集群配置 DNS 转发服务器和上游解析器。
您可以使用以下方法使用 DNS 转发来覆盖 /etc/resolv.conf 文件中的默认转发配置:
为每个区指定名称服务器 (
spec.servers)。如果转发区是 OpenShift Dedicated 管理的入口域,则上游名称服务器必须为域授权。重要您必须至少指定一个区。否则,集群可能会丢失功能。
-
提供上游 DNS 服务器列表 (
spec.upstreamResolvers)。 - 更改默认转发策略。
默认域的 DNS 转发配置可以同时在 /etc/resolv.conf 文件和上游 DNS 服务器中指定默认服务器。
在创建 pod 的过程中,Kubernetes 使用节点上存在的 /etc/resolv.conf 文件。如果您修改主机节点上的 /etc/resolv.conf 文件,则更改不会传播到容器中存在的 /etc/resolv.conf 文件。您必须重新创建容器才能使更改生效。
流程
修改名为
default的 DNS Operator 对象:$ oc edit dns.operator/default发出上一命令后,Operator 会根据
spec.servers创建并更新名为dns-default的配置映射,并使用额外的服务器配置块。重要当为
zones参数指定值时,请确保只转发到特定区域,如您的内网。您必须至少指定一个区。否则,集群可能会丢失功能。如果任何服务器都没有与查询匹配的区域,则名称解析会返回上游 DNS 服务器。
配置 DNS 转发
apiVersion: operator.openshift.io/v1 kind: DNS metadata: name: default spec: cache: negativeTTL: 0s positiveTTL: 0s logLevel: Normal nodePlacement: {} operatorLogLevel: Normal servers: - name: example-server zones: - example.com forwardPlugin: policy: Random upstreams: - 1.1.1.1 - 2.2.2.2:5353 upstreamResolvers: policy: Random protocolStrategy: "" transportConfig: {} upstreams: - type: SystemResolvConf - type: Network address: 1.2.3.4 port: 53 status: clusterDomain: cluster.local clusterIP: x.y.z.10 conditions: ...其中:
spec.servers.name-
必须符合
rfc6335服务名称语法。 spec.servers.zones-
必须符合
rfc1123子域语法。对于区域,集群域cluster.local无效。 spec.servers.forwardPlugin.policy-
指定上游选择策略。默认值为
Random;允许的值是RoundRobin和Sequential。 spec.servers.forwardPlugin.upstreams-
必须为每个
forwardPlugin提供超过 15个上游条目。 spec.upstreamResolvers.upstreams-
指定
upstreamResolver,以覆盖默认转发策略,并将 DNS 解析转发到默认域的指定 DNS 解析器(上游解析器)。当您需要自定义上游解析器时,您可以使用此字段;否则,查询使用/etc/resolv.conf中声明的服务器。 spec.upstreamResolvers.policy-
指定上游选择顺序。默认值为
Sequential;允许的值为Random、RoundRobin和Sequential。 spec.upstreamResolvers.protocolStrategy-
指定
TCP以强制协议用于上游 DNS 请求,即使请求使用了 UDP。有效值为TCP并省略。如果被省略,平台会选择一个默认值,通常是原始客户端请求的协议。 spec.upstreamResolvers.transportConfig- 指定在将 DNS 请求转发到上游解析器时要使用的传输类型、服务器名称和可选的自定义 CA 或 CA 捆绑包。
spec.upstreamResolvers.upstreams.type-
指定上游两种类型:SystemResolvConf或Network。SystemResolvConf将上游配置为使用/etc/resolv.conf和Network定义一个Networkresolver。您可以指定其中一个或两者都指定。 spec.upstreamResolvers.upstreams.address-
当类型为
Network时,指定有效的 IPv4 或 IPv6 地址。 spec.upstreamResolvers.upstreams.port-
指定提供端口号的可选字段。有效值在
1到65535之间;省略时默认为 853。
第 2 章 OpenShift Dedicated 中的 Ingress Operator 复制链接链接已复制到粘贴板!
Ingress Operator 实现 IngressController API,是负责启用对 OpenShift Dedicated 集群服务的外部访问的组件。
默认情况下,这个 Operator 安装在 OpenShift Dedicated 集群上。
2.1. OpenShift Dedicated Ingress Operator 复制链接链接已复制到粘贴板!
在创建 OpenShift Dedicated 集群时,在集群中运行的 pod 和服务各自分配自己的 IP 地址。IP 地址可供附近运行的其他容器集和服务访问,但外部客户端无法访问这些 IP 地址。
Ingress Operator 通过部署和管理一个或多个基于 HAProxy 的 Ingress Controller 来处理路由,使外部客户端可以访问您的服务。
Red Hat Site Reliability engineerss (SRE) 为 OpenShift Dedicated 集群管理 Ingress Operator。虽然您无法更改 Ingress Operator 的设置,但您可以查看默认的 Ingress Controller 配置、状态和日志以及 Ingress Operator 状态。
2.2. 查看默认的 Ingress Controller 复制链接链接已复制到粘贴板!
Ingress Operator 是 OpenShift Dedicated 的一个核心功能,开箱即用。
每个 OpenShift Dedicated 安装都有一个名为 default 的 ingresscontroller。它可以通过额外的 Ingress Controller 来补充。如果删除了默认的 ingresscontroller,Ingress Operator 会在一分钟内自动重新创建。
流程
查看默认的 Ingress Controller:
$ oc describe --namespace=openshift-ingress-operator ingresscontroller/default
2.3. 查看 Ingress Operator 状态 复制链接链接已复制到粘贴板!
您可以查看并检查 Ingress Operator 的状态。
流程
查看您的 Ingress Operator 状态:
$ oc describe clusteroperators/ingress
2.4. 查看 Ingress Controller 日志 复制链接链接已复制到粘贴板!
您可以查看 Ingress Controller 日志。
流程
查看 Ingress Controller 日志:
$ oc logs --namespace=openshift-ingress-operator deployments/ingress-operator -c <container_name>
2.5. 查看 Ingress Controller 状态 复制链接链接已复制到粘贴板!
您可以查看特定 Ingress Controller 的状态。
流程
查看 Ingress Controller 的状态:
$ oc describe --namespace=openshift-ingress-operator ingresscontroller/<name>
2.6. 管理默认 Ingress Controller 功能 复制链接链接已复制到粘贴板!
下表详细介绍了由 Ingress Operator 管理 的默认 Ingress Controller 组件,以及 Red Hat Site Reliability Engineering (SRE)是否维护 OpenShift Dedicated 集群上的此组件。
| Ingress 组件 | 管理方 | 默认配置? |
|---|---|---|
| Scaling Ingress Controller | SRE | 是 |
| Ingress Operator thread count | SRE | 是 |
| Ingress Controller 访问日志 | SRE | 是 |
| Ingress Controller 分片 | SRE | 是 |
| Ingress Controller 路由准入策略 | SRE | 是 |
| Ingress Controller 通配符路由 | SRE | 是 |
| Ingress Controller X-Forwarded 标头 | SRE | 是 |
| Ingress Controller 路由压缩 | SRE | 是 |
2.7. 在创建集群时为默认入口设置命名空间排除 复制链接链接已复制到粘贴板!
在创建 OpenShift Dedicated 集群时,您可以指定命名空间标签选择器,以便与这些标签匹配的命名空间不包括在默认 应用程序入口 中。这可让您通过默认入口排除托管工作负载的命名空间,如带有敏感数据或内部服务的命名空间。
不要排除托管所需平台路由的命名空间(如 openshift-console 或 openshift-authentication)。排除它们可能会破坏 Web 控制台、下载或 OAuth 流。
2.7.1. 在 CLI 中创建集群时,为默认入口设置命名空间排除 复制链接链接已复制到粘贴板!
使用 ocm CLI 在创建集群时为默认入口传递命名空间排除。
先决条件
-
已安装
ocmCLI,并使用可以在 Red Hat OpenShift Cluster Manager 中创建集群的凭证登录。 -
用于
ocm create cluster的非交互模式。对于互动模式,在ocm版本可用时,使用提示进行 ingress 设置。
流程
-
运行
ocm create cluster -h并确认您的ocm版本列出了 the--exclude-namespace-selector标志。 使用云供应商和订阅模型所需的参数构建
ocm create cluster命令。以下示例显示了与入口相关的片段。将其余标记替换为您的环境所需的值。
$ ocm create cluster <cluster_name> \ --provider=<aws_or_gcp> \ <other_required_flags> \ --default-ingress-excluded-namespace-selectors '<key>=<value>,<key2>=<value2>'其中:
<cluster_name>- 指定集群名称。
--provider=<aws_or_gcp>- 指定云供应商。
<other_required_flags>- 所需的参数,如区域、版本、客户云订阅(CCS)设置或计费标志,如平台集群创建文档中所述。
--default-ingress-excluded-namespace-selectors-
指定从默认应用程序入口中排除匹配的命名空间的标签选择器。服务验证这些排除。将 &
lt;key>=<value> 替换为您的标签。不要在=符号中包含空格。
验证
集群进入
就绪状态后,确认入口设置并检查配置的排除数据的默认入口对象。$ ocm list ingress -c <cluster_name>
2.7.2. 在 CLI 中更改集群中默认入口的命名空间排除 复制链接链接已复制到粘贴板!
使用 ocm CLI 将默认入口的命名空间排除传递给 OpenShift Dedicated 集群。
先决条件
-
已安装
ocmCLI,并使用修改 Red Hat OpenShift Cluster Manager 中的集群的凭证登录。 - 您已配置了 OpenShift Dedicated 集群。
流程
运行以下命令将命名空间排除传递给集群:
$ ocm edit ingress <ingress_name> -c <cluster_id> \ --excluded-namespace-selectors "key1=val1,key2=val2,key1=val3,foo=bar" \ <cluster_name>其中:
<ingress_name>- 指定您的入口名称。
<cluster_id>- 指定集群 ID。
--excluded-namespace-selectors "key1=val1,key2=val2,key1=val3,foo=bar"-
指定从默认应用程序入口中排除匹配的命名空间的标签选择器。服务验证这些排除。将 &
lt;key>=<value> 替换为您的标签。不要在=符号中包含空格。 <cluster_name>- 指定集群名称。
指定命名空间标签选择器,以便在 OpenShift Cluster Manager 中创建 OpenShift Dedicated 集群时,与这些标签匹配的命名空间不包括在默认 应用程序入口 中。
流程
在 Networking 屏幕上,选择 Application ingress settings 下的 Custom Settings。
注意所有自定义设置都是可选的。
-
在 Route selector 中,输入以逗号分隔的
key=value对列表来限制此入口公开的路由。如果所有路由都应根据您的其他选择保持合格,请将该字段留空。 - 在 Excluded 命名空间中,输入以逗号分隔的命名空间名称列表,其路由不得使用此入口。
在 Exclude namespace selectors 中,指定一个或多个标签选择器。对于每个选择器,提供标签键和以逗号分隔的标签值列表。默认 Ingress Controller 不适用于标签满足任何配置的选择器的命名空间。
重要不要包括逗号之间的空格,例如,使用
finance、HR、legal,而不是财务、HR、法律。- 在命名空间共享主机名时为路由准入设置 Namespace ownership 策略,例如,为限制性准入选择 Strict。
将 Wildcard 策略设置为 允许或禁止路由主机名中的通配符模式,例如,选择 Disallowed to block wildcard host routes。
有关自定义应用程序入口设置的更多信息,请点击每个设置提供的信息图标。
指定命名空间标签选择器,以便与这些标签匹配的命名空间不包括在 OpenShift Cluster Manager 中配置的 OpenShift Dedicated 集群的默认 应用程序入口 中。
流程
- 在 OpenShift Cluster Manager 中,导航到 Cluster List 页面,再选择您要为其设置命名空间排除的集群。
- 在所选集群中,选择 Networking 选项卡。
选择 Edit application ingress。
注意所有自定义设置都是可选的。
-
在 Route selector 中,输入以逗号分隔的
key=value对列表来限制此入口公开的路由。如果所有路由都应根据您的其他选择保持合格,请将该字段留空。 - 在 Excluded 命名空间中,输入以逗号分隔的命名空间名称列表,其路由不得使用此入口。
在 Exclude namespace selectors 中,指定一个或多个标签选择器。对于每个选择器,提供标签键和以逗号分隔的标签值列表。默认 Ingress Controller 不适用于标签满足任何配置的选择器的命名空间。
重要不要包括逗号之间的空格,例如,使用
finance、HR、legal,而不是财务、HR、法律。- 在命名空间共享主机名时为路由准入设置 Namespace ownership 策略,例如,为限制性准入选择 Strict。
将 Wildcard 策略设置为 允许或禁止路由主机名中的通配符模式,例如,选择 Disallowed to block wildcard host routes。
有关自定义应用程序入口设置的更多信息,请点击每个设置提供的信息图标。
- 选择 Save 来配置带有您的更改的 ingress。