對于部署在容器服務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 |