接入容器服务Kubernetes版应用

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

前提条件

快速创建Kubernetes托管版集群

步骤一:安装AHAS组件

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

  1. 在控制台左侧导航栏中选择市场 > 应用市场
  2. 应用目录页面的搜索框中输入ack-ahas-sentinel-pilot应用并单击。
  3. ack-ahas-sentinel-pilot页面右上角单击一键部署,在弹出的创建面板选择目标集群,单击下一步然后单击确定efgh
    参数描述备注
    region_id
    • 如果集群和VPC之间有专线,该参数为专线连接的region。
    • 如果集群和VPC之间没有专线,该参数填入cn-public
    根据所选集群自动生成。
    cluster_id您的集群ID。
    cluster_name您的集群名称。

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

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

  • 如需在创建新应用的同时开启AHAS应用防护,具体步骤如下:
    1. 在控制台左侧导航栏中,单击集群
    2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    3. 在集群管理页左侧导航栏中,选择工作负载 > 无状态
    4. 无状态 Deployment页面右上角单击使用YAML创建资源
    5. 创建页面上方选择示例模板,在模板中替换image为Java应用的image,并在模板中将以下annotations添加到spec > template > metadata层级下,然后单击创建
      类别annotations
      公网
      annotations:
        # 是否开启AHAS插件,on、true表示开启,off、false表示关闭。
        ahasPilotAutoEnable: "on"
        # 将 <your-deployment-name> 替换为应用名称。
        ahasAppName: "<your-deployment-name>"
        # 命名空间默认为default。
        ahasNamespace: "default"
        # 将 <your-license> 替换为真实license。
        ahasLicenseKey: "<your-license>"
        ahasRegionId: "cn-public"
      非公网
      annotations:
        # 是否开启AHAS插件,on、true表示开启,off、false表示关闭。
        ahasPilotAutoEnable: "on"
        # 将 <your-deployment-name> 替换为应用名称。
        ahasAppName: "<your-deployment-name>"
        # 命名空间默认为default。
        ahasNamespace: "default"
        # 将<RegionId> 替换为应用所在地域。
        ahasRegionId: <RegionId>
      说明 将<RegionId>替换应用所在地域,地域与RegionId对应表请参见下文地域与RegionId对应表

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

      表 1. 配置项
      ParameterDescriptionDefault
      image.imageTagpilot镜像tag。0.1.1
      image.imagePullPolicy镜像拉取策略,必须是Always、IfNotPresent、Never三者中的一个。Always
      controller.logLevelpilot日志级别,1表示INFO,2表示DEBUG。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"
              ahasRegionId: "cn-hangzhou"
          spec:
            containers:
            - name: foo
              image: registry.cn-hangzhou.aliyuncs.com/sentinel-docker-repo/foo:0.1.1
              imagePullPolicy: Always
  • 如需为现有应用开启AHAS应用防护,操作步骤如下。
    1. 在控制台左侧导航栏中,单击集群
    2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    3. 在集群管理页左侧导航栏中,选择工作负载 > 无状态工作负载 > 有状态
    4. 无状态(Deployment)有状态(StatefulSet)页面上,单击目标应用右侧操作列中选择更多 > 查看YAML
    5. 编辑YAML对话框中将以下annotations添加到spec > template > metadata层级下,并单击更新
      类别annotations
      公网
      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>"
        ahasRegionId: "cn-public"
      非公网
      annotations:
        # 是否开启AHAS插件,on、true表示开启,off、false表示关闭。
        ahasPilotAutoEnable: "on"
        # 将 "<your-deployment-name>" 替换为应用名称。
        ahasAppName: "<your-deployment-name>"
        # 命名空间默认为default。
        ahasNamespace: "default"
        # 将<RegionId> 替换为应用所在地域。
        ahasRegionId: <RegionId>
      说明 将<RegionId>替换应用所在地域,地域与RegionId对应表请参见下文地域与RegionId对应表

结果验证

  1. 在控制台左侧导航栏中,单击集群
  2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  3. 在集群管理页左侧导航栏中,选择工作负载 > 无状态工作负载 > 有状态

在目标应用的操作列将出现应用流控按钮。单击应用流控即可跳转至AHAS控制台

result_k8s

地域与RegionId对应表

地域RegionId
公网cn-public
华东1(杭州)cn-hangzhou
华东2(上海)cn-shanghai
华北2(北京)cn-beijing
华北3(张家口)cn-zhangjiakou
华南1(深圳)cn-shenzhen
新加坡ap-southeast-1
德国(法兰克福)eu-central-1