对于部署在容器服务 Kubernetes 版中的网关应用,可以使用 AHAS 网关流控降级对其配置网关流控规则来保证系统稳定性。本文将介绍如何将容器服务 Kubernetes 版中的网关应用接入 AHAS 网关流控降级。

准备工作

在容器服务 Kubernetes 版控制台上创建 Kubernetes 集群,详细操作请参见快速创建Kubernetes集群

说明 默认集群地域为杭州,现支持杭州、深圳、北京和上海地域。

操作步骤

  1. 登录容器服务 Kubernetes 版控制台,在控制台左侧导航栏中选择市场 > 应用目录
  2. 应用目录页面单击 ack-ahas-springcloud-gateway,然后在 ack-ahas-springcloud-gateway 页面右侧创建面板中选择集群命名空间,并单击创建
    说明 若选择的集群不在杭州地域,则需在ack-ahas-springcloud-gateway 页面单击参数页签,并在 Helm chart 中更改地域。pg_helm_chart

    创建成功后,会生成 Config Map、Service 和 Deployment 三种类型的 K8s 资源,如下图所示。

    创建结果
  3. 在控制台左侧导航栏选择应用配置 > 配置项。然后在配置项列表中单击目标 Config Map 文件操作列的编辑,并按需配置文件。编辑配置项

    Config Map 文件中包含 application.yml 文件和 jvm_opts 文件。在 application.yml 文件中,需要进行服务发现客户端配置和具体内容配置。

    • AHAS 网关流控降级内置了三种服务发现客户端,使用时仅需开启一种,并将不使用的客户端对应的 enabled 字段设置为 falseapplication.yml文件的客户端配置如下:
      • Eureka:通过 eureka.client.enabled=true 开启,详情请参见 配置文档
      • Nacos:通过 spring.cloud.nacos.discovery.enabled=true 开启,详情请参见 配置文档
      • ZooKeeper:通过 spring.cloud.zookeeper.enabled=true 开启,详情请参见 配置文档
    • application.yml 文件的具体配置请参见Spring Cloud Gateway
    server:
      port: 8090
    # Eureka
    eureka:
      instance:
        leaseRenewalIntervalInSeconds: 10
        leaseExpirationDurationInSeconds: 30
      client:
        enabled: true  # 若希望开启 Euerka 支持,则置为 true 并将其它服务发现置为 false
        serviceUrl:
          defaultZone: http://my-eureka-ack-springcloud-eureka-svc:8761/eureka
    spring:
      application:
        name: spring-cloud-gateway-container # AHAS 网关流控中显示的网关应用名称
      cloud:
        nacos:
          discovery:
            server-addr: "localhost:8848"
            enabled: false # 若希望开启 Nacos 支持,则置为 true 并将其它服务发现置为 false
        zookeeper:
          connect-string: "localhost:2181"
          enabled: false # 若希望开启 ZooKeeper 支持,则置为 true 并将其它服务发现置为 false
        gateway:
          enabled: true
          discovery:
            locator:
              lower-case-service-id: true # 服务名称小写转换
          routes: # 在此处配置路由
            - id: aliyun_product_route # 普通路由示例
              uri: https://www.aliyun.com
              predicates:
                - Path=/product/**
            - id: discovery_route_foo # 服务发现示例
              uri: lb://foo-service
              predicates:
                - Path=/foo/**
    
    logging:
      file: /home/admin/spring-cloud-gateway/logs/application.log
    说明 jvm_opts 文件用于系统调优,一般不做更改。
  4. 在控制台左导航栏选择应用 > 容器组,在容器组页面删除 ahas-springcloud-gateway 前缀的 Pod。

    更新 Config Map 文件后需要重启网关 Pod 才能生效。删除 Spring Cloud Gateway Pod 后,K8s 会自动启动新的 Pod,更新后的配置将会在新的 Pod 生效。

结果验证

无状态(Deployment)有状态(StatefulSet)页面上,目标应用名称后出现 Sentinel 图标。

sentinel 图标

单击 Sentinel 图标可跳转至 AHAS 控制台。选择地域后,若您的网关应用名称出现在 AHAS 控制台网关列表页面且有数据上报,则说明接入成功。

网关列表

后续操作

为应用配置流控降级规则请参见网关流控规则