1.18.9. 为联合配置 Service Mesh control plane


在网格可以被联邦前,您必须为网格联邦配置 ServiceMeshControlPlane。因为属于联邦成员的所有网格都是相等的,并且每个网格都独立管理,所以您必须 为每个 加入联邦的网格配置 SMCP。

在以下示例中,red-mesh 的管理员将配置 SMCP 以同时使用 green-meshblue-mesh 进行联邦。

Red-mesh 的 SMCP 示例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: red-mesh
  namespace: red-mesh-system
spec:
  version: v2.2
  runtime:
    defaults:
      container:
        imagePullPolicy: Always
  gateways:
    additionalEgress:
      egress-green-mesh:
        enabled: true
        requestedNetworkView:
        - green-network
        routerMode: sni-dnat
        service:
          metadata:
            labels:
              federation.maistra.io/egress-for: egress-green-mesh
          ports:
          - port: 15443
            name: tls
          - port: 8188
            name: http-discovery  #note HTTP here
      egress-blue-mesh:
        enabled: true
        requestedNetworkView:
        - blue-network
        routerMode: sni-dnat
        service:
          metadata:
            labels:
              federation.maistra.io/egress-for: egress-blue-mesh
          ports:
          - port: 15443
            name: tls
          - port: 8188
            name: http-discovery  #note HTTP here
    additionalIngress:
      ingress-green-mesh:
        enabled: true
        routerMode: sni-dnat
        service:
          type: LoadBalancer
          metadata:
            labels:
              federation.maistra.io/ingress-for: ingress-green-mesh
          ports:
          - port: 15443
            name: tls
          - port: 8188
            name: https-discovery  #note HTTPS here
      ingress-blue-mesh:
        enabled: true
        routerMode: sni-dnat
        service:
          type: LoadBalancer
          metadata:
            labels:
              federation.maistra.io/ingress-for: ingress-blue-mesh
          ports:
          - port: 15443
            name: tls
          - port: 8188
            name: https-discovery  #note HTTPS here
  security:
    trust:
      domain: red-mesh.local

表 1.7. ServiceMeshControlPlane 联邦配置参数
参数描述默认值
spec:
  cluster:
    name:

集群的名称。您不需要指定集群名称,但有助于进行故障排除。

字符串

N/A

spec:
  cluster:
    network:

集群网络的名称。您不必为网络指定名称,但对配置和故障排除很有帮助。

字符串

N/A

1.18.9.1. 了解联邦网关

您可以使用 网关 来管理入站和出站流量,允许您指定您要进入或离开网格的流量。

您可以使用入口和出口网关来管理进入和离开服务网格(North-South 流量)的流量。当您创建联邦网格时,您可以创建额外的入口/出口网关,以便联邦网格间的服务发现、联邦网格之间的通信,以及管理服务网格(East-West 流量)之间的流量流。

为了避免网格间的命名冲突,您必须为每个网格创建单独的出口和入口网关。例如,red-mesh 将具有单独的出口网关,用于发送到 green-meshblue-mesh 的流量。

表 1.8. 联邦网关参数
参数描述默认值
spec:
  gateways:
    additionalEgress:
      <egressName>:

在联邦中为每个网格对等点定义额外的出口网关。

  
spec:
  gateways:
    additionalEgress:
      <egressName>:
        enabled:

这个参数启用或禁用联邦出口。

true/false

true

spec:
  gateways:
    additionalEgress:
      <egressName>:
        requestedNetworkView:

与导出的服务关联的网络。

设置为网格 SMCP 中的 spec.cluster.network 值,否则使用 <ServiceMeshPeer-name>-network。例如,如果那个网格的 ServiceMeshPeer 资源命名为 west,则该网络将命名为 west-network

 
spec:
  gateways:
    additionalEgress:
      <egressName>:
        routerMode:

网关要使用的路由器模式。

sni-dnat

 
spec:
  gateways:
    additionalEgress:
      <egressName>:
        service:
          metadata:
            labels:
              federation.maistra.io/egress-for:

为网关指定一个唯一标签,以防止联邦流量通过集群的默认系统网关流。

  
spec:
  gateways:
    additionalEgress:
      <egressName>:
        service:
          ports:

指定用于 TLS 和服务发现的 port:name:。联邦流量由服务流量的原始加密 TCP 组成。

将 TLS 服务请求发送到联邦中的其他网格需要端口 15443。将服务发现请求发送到联邦中的其他网格需要端口 8188

 
spec:
  gateways:
    additionalIngress:

在联邦中为每个 网格对等点定义额外的入口网关网关。

  
spec:
  gateways:
    additionalIgress:
      <ingressName>:
        enabled:

此参数启用或禁用联邦入口。

true/false

true

spec:
  gateways:
    additionalIngress:
      <ingressName>:
        routerMode:

网关要使用的路由器模式。

sni-dnat

 
spec:
  gateways:
    additionalIngress:
      <ingressName>:
        service:
          type:

入口网关服务必须通过在 OSI 模型的第 4 层运行并公开可用的负载均衡器公开。

LoadBalancer

 
spec:
  gateways:
    additionalIngress:
      <ingressName>:
        service:
          type:

如果集群不支持 LoadBalancer 服务,则可以通过 NodePort 服务公开入口网关服务。

NodePort

 
spec:
  gateways:
    additionalIngress:
      <ingressName>:
        service:
          metadata:
            labels:
              federation.maistra.io/ingress-for:

为网关指定一个唯一标签,以防止联邦流量通过集群的默认系统网关流。

  
spec:
  gateways:
    additionalIngress:
      <ingressName>:
        service:
          ports:

指定用于 TLS 和服务发现的 port:name:。联邦流量由服务流量的原始加密 TCP 组成。联邦流量由 HTTPS 用于发现。

在向联邦中的其他网格接收 TLS 服务请求时,需要端口 15443。在向联邦中的其他网格接收服务发现请求时,需要端口 8188

 
spec:
  gateways:
    additionalIngress:
      <ingressName>:
        service:
          ports:
            nodePort:

用于指定 nodePort: 如果集群不支持 LoadBalancer 服务。

如果指定,除了 port:name: 外,还需要用于 TLS 和服务发现。NodePort: 范围需要为 30000-32767

 

在以下示例中,管理员使用 NodePort 服务与 green-mesh 来配置 SMCP。

NodePort 的 SMCP 示例

  gateways:
     additionalIngress:
      ingress-green-mesh:
        enabled: true
        routerMode: sni-dnat
        service:
          type: NodePort
          metadata:
            labels:
              federation.maistra.io/ingress-for: ingress-green-mesh
          ports:
          - port: 15443
            nodePort: 30510
            name: tls
          - port: 8188
            nodePort: 32359
            name: https-discovery

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.