接入容器服务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. 配置项

      Parameter

      Description

      Default

      image.imageTag

      pilot镜像tag。

      0.1.1

      image.imagePullPolicy

      镜像拉取策略,必须是Always、IfNotPresent、Never三者中的一个。

      Always

      controller.logLevel

      pilot日志级别,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