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

准备工作

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

说明 AHAS现支持杭州、深圳、北京和上海等地域,默认集群地域为杭州。创建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生效。

结果验证

  1. 登录容器服务Kubernetes版控制台,在控制台导航栏选择集群
  2. 单击目标集群,在左侧导航栏选择工作负载
  3. 单击无状态有状态页签,可以看到目标应用名称后出现Sentinel图标。sentinel图标
  4. 单击Sentinel图标可跳转至AHAS控制台。选择地域后,若您的网关应用名称出现在AHAS控制台网关防护页面且有数据上报,则说明接入成功。网关防护.png

后续操作

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