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

前提条件

您已在容器服务Kubernetes版控制台上创建Kubernetes集群,请参见快速创建Kubernetes托管版集群

步骤一:安装AHAS组件

在容器服务Kubernetes中安装AHAS组件后才能将Java应用接入AHAS应用防护。

  1. 登录容器服务Kubernetes版控制台
  2. 在控制台左侧导航栏中选择市场 > 应用目录
  3. 应用目录页面单击ack-ahas-sentinel-pilot,然后在ack-ahas-sentinel-pilot页面右侧创建面板中选择集群命名空间
  4. 应用目录页面单击参数页签,修改region_id参数,然后在创建面板单击创建

步骤二:为Java应用开启AHAS应用防护

您可以按需为新建的应用或已有的应用开启AHAS应用防护。

  • 如需在创建新应用的同时开启AHAS应用防护,具体步骤如下。
    1. 容器服务Kubernetes版控制台左侧导航栏中选择应用 > 无状态
    2. 无状态(Deployment)页面右上角单击使用模板创建
    3. 使用模板创建页面上选择集群命名空间示例模板,并在模板(YAML格式)中将以下annotations添加到spec > template > metadata层级下。
      annotations:
        # 是否开启AHAS插件,on、true表示开启,off、false表示关闭。
        ahasPilotAutoEnable: "on"
        # 将 <your-deployment-name> 替换为应用名称。
        ahasAppName: "<your-deployment-name>"
        #命名空间默认为default。
        ahasNamespace: "default"
        # 将 <your-license> 替换为真实license。
        ahasLicenseKey: "<your-license>"  
      annotations:
        # 是否开启AHAS插件,on、true表示开启,off、false表示关闭。
        ahasPilotAutoEnable: "on"
        # 将 <your-deployment-name> 替换为应用名称。
        ahasAppName: "<your-deployment-name>"
        #命名空间默认为default。
        ahasNamespace: "default"
       

      如需修改YAML文件中其它配置项,配置项说明如下:

      表 1. 配置项
      Parameter Description Default
      image.imageTag pilot镜像tag。 0.1.1
      image.imagePullPolicy 镜像拉取策略,必须是Always、IfNotPresent、Never三者中的一个。 Always
      controller.logLevel pilot日志级别,1表示INFO,2表示DEBBUG。 1
      controller.region_id 目标集群所在的region,如cn-hangzhou、cn-beijing、cn-shenzhen、cn-shanghai。如果是公网,则为cn-public。 cn-hangzhou

      完整YAML示例模板如下:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: agent-foo
        labels:
          name: agent-foo
      spec:
        replicas: 1
        selector:
          matchLabels:
            name: agent-foo
        template:
          metadata:
            labels:
              name: agent-foo
            annotations:
              ahasPilotAutoEnable: "on"
              ahasAppName: "K8sFooTest"
              ahasNamespace: "default"
          spec:
            containers:
            - name: foo
              image: registry.cn-hangzhou.aliyuncs.com/sentinel-docker-repo/foo:0.1.1
              imagePullPolicy: Always          
  • 如需为现有应用开启AHAS应用防护,操作步骤如下。
    1. 容器服务Kubernetes版控制台左侧导航栏中选择应用 > 无状态应用 > 有状态
    2. 无状态(Deployment)有状态(StatefulSet)页面上,选择集群命名空间,并在目标应用右侧操作列中选择更多 > 查看Yaml
    3. 编辑Yaml对话框中将以下annotations添加到spec > template > metadata层级下,并单击更新
      annotations:
        # 是否开启AHAS插件,on、true表示开启,off、false表示关闭。
        ahasPilotAutoEnable: "on"
        #将 <your-deployment-name> 替换为应用名称。
        ahasAppName: "<your-deployment-name>" 
        #命名空间默认为default。
        ahasNamespace: "default"
        #将 <your-license> 替换为真实license,在公网环境中AHAS控制台 > 流量防护 >应用防护 > 新应用接入页面获取。
        ahasLicenseKey: "<your-license>"
      annotations:
        # 是否开启AHAS插件,on、true表示开启,off、false表示关闭。
        ahasPilotAutoEnable: "on"
        #将 "<your-deployment-name>" 替换为应用名称。
        ahasAppName: "<your-deployment-name>"
        #命名空间默认为default。
        ahasNamespace: "default"

结果验证

容器服务Kubernetes版控制台左侧导航栏选择应用 > 无状态应用 > 有状态,目标应用的操作列将出现应用流控按钮。单击应用流控即可跳转至AHAS控制台

result_k8s