更新时间:2023-12-15 GMT+08:00
分享

创建服务网关

控制台创建服务网关

  1. 登录UCS控制台,单击左侧导航栏中的“服务网格”,进入服务网格列表页。
  2. 单击服务网格名称,进入服务网格详情页。
  3. 在左侧导航栏,单击“服务网关 > 网关实例”,进入网关实例列表页面。
  4. 单击右上角“创建网关”,弹出创建网关界面。

  5. 填写参数配置。

    • 基本信息:
      • 网关名称:请输入4到59个字符的宇符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
      • 集群名称:选择已接入到网格的集群,部署网格负载。
      • 命名空间:选择网格命名空间。如果集群的命名空间未同步创建到网格,请单击“创建命名空间”选择命名空间后,单击确定。
    • 访问入口:
      • 负载均衡:选择负载均衡实例,提供网络访问。
        • 使用已有负载均衡:从已有负载均衡列表中选择。支持独享型和共享型实例。共享型仅支持集群所在VPC下的负载均衡实例,查询结果已自动过滤。独享型仅支持集群所在 VPC下、实例规格支持网络型、有私有IP地址的独享型负载均衡实例,查询结果已自动过滤。
        • 新建负载均衡:单击新建负载均衡,选择所需的负载均衡规格。
    • 网关负载:
      • 网关实例数:设置网关工作负载Pod数量。默认值为1。输入值必须在0到100之间。
      • CPU配额:申请:容器需要使用的最小CPU值,默认0.10Core。限制:允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。
      • 内存配额:申请:容器需要使用的内存最小值,默认128MiB。限制:允许容器使用的内存最大值。如果超过,容器会被终止。
    • 监听器:
      • 监控器名称:请输入4到59个字符的宇符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
      • 对外协议:HTTP、TCP、TLS、HTTPS四种协议选择一种即可。
      • 对外端口:输入值必须在1到65,535之间。必须保证该端口未被所选的负载均衡实例监听器端口占用。
      • 入口地址(可选):请输入域名。支持以通配符“*”开头。以通配符“*”为前缀的域名被解释为后缀匹配。即 *.example.com 将匹配 test.example.com 和 foo.test.example.com,但不匹配 example.com。
      • 路由配置:详情请看HTTP路由TLS路由TCP路由

  6. 单击“确定”,完成网关创建。

    创建网关将会同步创建其对应的工作负载Pod、Loadbalancer service,工作负载Pod请勿调度到CentOS 7.6操作系统的节点,否则将无法启动。1.22及以上集群,网关工作负载Pod将依赖内核ip_unprivileged_port_start能力,可执行“ls -l /proc/sys/net/ipv4/ip_unprivileged_port_start”命令,确认是否支持该能力,不支持该能力的节点,网关工作负载Pod调度上去将无法正常启动。

以HTTP流量在801端口上配置 Gateway为例,通过YAML创建服务网关。

YAML创建服务网关

  1. 登录UCS控制台,单击左侧导航栏中的“服务网格”,进入服务网格列表页。
  2. 单击服务网格名称,进入服务网格详情页。
  3. 在左侧导航栏,单击“服务网关 > 网关实例”,进入网关实例列表页面。
  4. 单击右上角“YAML创建”,弹出服务网关YAML创建界面。
  5. 在801端口上创建负载均衡器,用于接收HTTP连接,只处理HTTP协议的流量(根据实际需求调整配置参数):

    apiVersion: gateway.networking.k8s.io/v1beta1
    kind: Gateway
    metadata:
      annotations:
        gateway.asm/cluster-name: cluster-test # 必选。选择gateway工作负载实例及loadbalancer svc创建在哪个集群。
        gateway.asm/gateway-deployment-replicas: "2" # 可选。gateway工作负载实例个数。
    
    
        gateway.asm/gateway-deployment-resources: '{"requests":{"cpu":"100m","memory":"128Mi"},"limits":{"cpu":"2000m","memory":"1024Mi"}}' # 可选。gateway工作负载CPU、内存配额设置。
        kubernetes.io/elb.class: union # 必选。负载均衡器elb实例类型,union共享型,performance独享型。
        kubernetes.io/elb.id: 73febb1c-b191-4fd9-832e-138b2657d3b1 # 必选。负载均衡器elb实例ID。
      name: gateway 
      namespace: whtest
    spec:
      gatewayClassName: istio
      listeners:
      - name: default
        hostname: "*.example.com" # 可选
        port: 801  # 1-65535
        protocol: HTTP
        allowedRoutes:  # 可选,指定了哪些ns下route规则可以绑定在该gateway上,没有该字段默认是同gateway ns的才可以与该gateway绑定
          namespaces:
            from: All  # 支持All、Same、Selector

其他协议网关YAML示例可参考如下内容。

HTTPS协议网关

HTTPS协议网关,开启TLS终止,网关YAML示例如下:

apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  annotations:
    gateway.asm/cluster-name: cluster-test # 必选。选择gateway工作负载实例及loadbalancer svc创建在哪个集群。
    gateway.asm/gateway-deployment-replicas: "2" # 可选。gateway工作负载实例个数。

    gateway.asm/gateway-deployment-resources: '{"requests":{"cpu":"100m","memory":"128Mi"},"limits":{"cpu":"2000m","memory":"1024Mi"}}' # 可选。gateway工作负载CPU、内存配额设置。
    kubernetes.io/elb.class: union # 必选。负载均衡器elb实例类型,union共享型,performance独享型。
    kubernetes.io/elb.id: 73febb1c-b191-4fd9-832e-138b2657d3b1 # 必选。负载均衡器elb实例ID。
  name: https-gateway 
  namespace: whtest
spec:
  gatewayClassName: istio
  listeners:
  - name: https
    hostnames: ["httpbin.example.com", "httpbin2.example.com"] # 必选。如果证书只含一个域名,则使用hostname: "httpbin.example.com"
    port: 443  
    protocol: HTTPS
    allowedRoutes:  # 可选,指定了哪些ns下route规则可以绑定在该gateway上,没有该字段默认是同gateway ns的才可以与该gateway绑
      namespaces:
        from: All  # 支持All、Same、Selector
    tls:
      mode: Terminate
      certificateRefs:
      - name: httpbin-credential  # 必选。需要提前在同命名空间下创建网关证书。

TLS协议网关

TLS协议网关,不开启TLS终止,网关YAML示例如下:

apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  annotations:
    gateway.asm/cluster-name: cluster-test # 必选。选择gateway工作负载实例及loadbalancer svc创建在哪个集群。
    gateway.asm/gateway-deployment-replicas: "2" # 可选。gateway工作负载实例个数。
    gateway.asm/gateway-deployment-resources: '{"requests":{"cpu":"100m","memory":"128Mi"},"limits":{"cpu":"2000m","memory":"1024Mi"}}' # 可选。gateway工作负载CPU、内存配额设置。
    kubernetes.io/elb.class: union # 必选。负载均衡器elb实例类型,union共享型,performance独享型。
    kubernetes.io/elb.id: 73febb1c-b191-4fd9-832e-138b2657d3b1 # 必选。负载均衡器elb实例ID。
  name: tls-gateway 
  namespace: whtest
spec:
  gatewayClassName: istio
  listeners:
  - name: tls
    hostnames: ["httpbin.example.com", "httpbin2.example.com"] # 必选。如果证书只含一个域名,则使用hostname: "httpbin.example.com"
    port: 9443 
    protocol: TLS
    allowedRoutes:  # 可选,指定了哪些ns下route规则可以绑定在该gateway上,没有该字段默认是同gateway ns的才可以与该gateway绑定
      namespaces:
        from: All  # 支持All、Same、Selector
    tls:
      mode: Passthrough

TCP协议网关

TCP协议网关,网关YAML示例如下:

apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  annotations:
    gateway.asm/cluster-name: cluster-test # 必选。选择gateway工作负载实例及loadbalancer svc创建在哪个集群。
    gateway.asm/gateway-deployment-replicas: "2" # 可选。gateway工作负载实例个数。
    gateway.asm/gateway-deployment-resources: '{"requests":{"cpu":"100m","memory":"128Mi"},"limits":{"cpu":"2000m","memory":"1024Mi"}}' # 可选。gateway工作负载CPU、内存配额设置。
    kubernetes.io/elb.class: union # 必选。负载均衡器elb实例类型,union共享型,performance独享型。
    kubernetes.io/elb.id: 73febb1c-b191-4fd9-832e-138b2657d3b1 # 必选。负载均衡器elb实例ID。
  name: tcp-gateway 
  namespace: whtest
spec:
  gatewayClassName: istio
  listeners:
  - name: tcp
    port: 8899 
    protocol: TCP
    allowedRoutes:  # 可选,指定了哪些ns下route规则可以绑定在该gateway上,没有该字段默认是同gateway ns的才可以与该gateway绑定
      namespaces:
        from: All  # 支持All、Same、Selector
分享:

    相关文档

    相关产品