对于部署在容器服务Kubernetes版中的Java应用,可以使用AHAS应用防护对其配置流控、降级和系统规则来保证系统稳定性。本文将介绍如何将容器服务Kubernetes版中的应用接入AHAS应用防护。
前提条件
步骤一:安装AHAS组件
在容器服务Kubernetes中安装AHAS组件后才能将Java应用接入AHAS应用防护。
在控制台左侧导航栏中选择
。在应用目录页面的搜索框中输入ack-ahas-sentinel-pilot应用并单击。
在ack-ahas-sentinel-pilot页面右上角单击一键部署,在弹出的创建面板选择目标集群,单击下一步然后单击确定。
参数
描述
备注
region_id
如果集群和VPC之间有专线,该参数为专线连接的region。
如果集群和VPC之间没有专线,该参数填入cn-public。
根据所选集群自动生成。
cluster_id
您的集群ID。
cluster_name
您的集群名称。
步骤二:为Java应用开启AHAS应用防护
您可以按需为新建的应用或已有的应用开启AHAS应用防护。
如需在创建新应用的同时开启AHAS应用防护,具体步骤如下:
在控制台左侧导航栏中,单击集群。
在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
在集群管理页左侧导航栏中,选择
。在无状态 Deployment页面右上角单击使用YAML创建资源。
在创建页面上方选择示例模板,在模板中替换
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应用防护,操作步骤如下。
在控制台左侧导航栏中,单击集群。
在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
在集群管理页左侧导航栏中,选择
或 。在无状态(Deployment)或有状态(StatefulSet)页面上,单击目标应用右侧操作列中选择
。在编辑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对应表。
结果验证
在控制台左侧导航栏中,单击集群。
在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
在集群管理页左侧导航栏中,选择
或 。
在目标应用的操作列将出现应用流控按钮。单击应用流控即可跳转至AHAS控制台。
地域与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 |