服务条目用于将网格外的服务添加到网格内部维护的服务注册表中,描述了服务的域名、端口、协议、端点等信息,以便网格内的服务可以访问到网格外服务。本文介绍如何创建、修改和删除服务条目。

注意事项

  • 为了避免与Sidecar的端口发生冲突,创建服务条目时请勿使用以下Envoy端口:
    端口 协议 使用者 描述
    15000 TCP Envoy Envoy管理端口。
    15001 TCP Envoy Envoy出口流量的端口。
    15006 TCP Envoy Envoy入口流量的端口。
    15020 HTTP Envoy 合并来自Istio代理、Envoy和应用程序的Prometheus遥测的端口。
    15021 HTTP Envoy 健康检查端口。
    15090 HTTP Envoy Envoy Prometheus遥测的端口。
  • 在服务条目中命名端口时必须遵循以下规则:
    协议 端口名称 带后缀的端口名称
    HTTP http http-<后缀>
    HTTP2 http2 http2-<后缀>
    HTTPS https https-<后缀>
    TLS tls tls-<后缀>
    gRPC grpc grpc-<后缀>
    TCP tcp tcp-<后缀>
    UDP UDP udp-<后缀>
    Mongo mongo mongo-<后缀>
    MySQL mysql mysql-<后缀>
    Redis redis redis-<后缀>
  • 使用HTTP、HTTPS、TLS和TCP协议时请注意以下事项:
    • 使用HTTP、HTTPS和TLS协议时,必须在服务条目中指定主机。
      apiVersion: networking.istio.io/v1alpha3
      kind: ServiceEntry
      metadata:
        name: aliyun
      spec:
        hosts:
        - www.aliyun.com
        ports:
        - number: 443
          name: https
          protocol: HTTPS
        resolution: DNS
        location: MESH_EXTERNAL
    • 使用TCP协议时,必须在服务条目中指定IP范围。
      apiVersion: networking.istio.io/v1alpha3
      kind: ServiceEntry
      metadata:
        name: mysql-external
      spec:
        hosts:
        - mysql-01.foo.bar
        addresses:
        - 10.0.0.5/32
        - 10.0.0.6/32
        ports:
        - name: tcp
          number: 3306
          protocol: tcp
        location: MESH_EXTERNAL
  • 如果您有多个外部服务使用TCP协议共享同一个端口,请区分服务的IP地址。
    • 外部服务1
      apiVersion: networking.istio.io/v1beta1
      kind: ServiceEntry
      metadata:
        name: external-svc-1
        namespace: default
      spec:
        hosts:
        - fqdna.fqdn.com
        addresses:
        - 10.0.0.0/8
        location: MESH_EXTERNAL
        ports:
        - name: TCP
          number: 3306
          protocol: TCP
        resolution: DNS
    • 外部服务2
      apiVersion: networking.istio.io/v1beta1
      kind: ServiceEntry
      metadata:
        name: external-svc-2
        namespace: default
      spec:
        hosts:
        - fqdnb.fqdn.com
        addresses:
        - 10.1.0.0/8
        location: MESH_EXTERNAL
        ports:
        - name: TCP
          number: 3306
          protocol: TCP
        resolution: DNS
  • 默认情况下,使用服务条目添加到网格的任何外部服务将可用于所有命名空间。如果您不希望其他istio-proxy访问外部服务,您可以在服务条目中添加exportTo参数,设置值为".",从而将外部服务的访问范围限定为仅创建服务条目的命名空间。
    apiVersion: networking.istio.io/v1alpha3
    kind: ServiceEntry
    metadata:
      name: aliyun
    spec:
      hosts:
      - www.aliyun.com
      exportTo:
      - "."
      ports:
      - number: 443
        name: https
        protocol: HTTPS
      resolution: DNS
      location: MESH_EXTERNAL
  • 建议使用DNS解析。DNS解析将忽略原始目标IP地址并将流量定向到选定的主机,然后执行DNS查询以获取主机的IP地址。
    apiVersion: networking.istio.io/v1alpha3
    kind: ServiceEntry
    metadata:
      name: aliyun
    spec:
      hosts:
      - '*.aliyun.com'
      addresses:
       - 192.168.0.0/16
       - 172.16.0.0/16
      location: MESH_EXTERNAL
      ports:
      - number: 443
        protocol: https
        name: https
      resolution: DNS

    resolution:设置参数值为DNS,表示使用DNS解析;设置参数值为NONE,表示不使用DNS解析。

创建服务条目

  1. 登录ASM控制台
  2. 在左侧导航栏,选择服务网格 > 网格管理
  3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理
  4. 在网格详情页面左侧导航栏选择集群与工作负载管理 > 服务条目,然后在右侧页面单击使用YAML创建
  5. 设置服务条目配置信息,支持以下两种方式:
    • 创建页面选择命名空间,选择场景模板,在YAML文本框中修改服务条目场景模板配置信息,单击创建
    • 创建页面选择命名空间,不选择场景模板,在YAML文本框中自定义服务条目配置信息,单击创建

相关操作

修改服务条目

在网格详情页面左侧导航栏选择集群与工作负载管理 > 服务条目,在服务条目页面单击目标服务条目右侧操作列下的查看YAML,在编辑对话框修改服务条目配置信息,然后单击确定

删除服务条目

在网格详情页面左侧导航栏选择集群与工作负载管理 > 服务条目,在服务条目页面单击目标服务条目右侧操作列下的删除,在确认对话框单击确定