前言
上期本文對基于專有雲EDAS OpenAPI建構企業級雲原生CICD的前期工作進行了介紹,本期将對調用EDAS OpenAPI拉取鏡像部署應用進行詳細介紹。
流程
Jenkins建構完項目可以按版本号把鏡像上傳到鏡像倉庫,調用EDAS OpenAPI拉取鏡像部署應用、通知相關人員等。
CICD流程調用EDAS OpenAPI接口:
(1)調用GetK8sApplication接口擷取容器服務Kubernetes中部署的應用鏡像URL資訊。
(2)調用DeployK8sApplication接口拉取應用鏡像部署容器服務K8S應用。
準備工作
在專有雲中調用EDAS的OpenAPI需要完成以下3件事:
- 在JAVA項目工程中聲明并引入EDAS-SDK。
- 擷取EDAS-OpenAPI對外的服務域名,即專有雲EDAS-endpoint位址。
- 在适配插件中拼裝請求封包,完成API調用的指令。
在适配插件中引入EDAS-SDK
在IDE工具上打開Maven項目下的pom.xml檔案,在檔案中添加sdk:aliyun-java-sdk-core和sdk:aliyun-java-sdk-edas依賴。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SZ5QmZzUTM5AzMxQWMkFTY1Y2N0YmZhFWYmdDN2MWYz8CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
圖1:添加依賴
擷取部門資訊
登入Apsara Stack控制台,在左側導航欄選擇使用者中心-->部門管理,選擇對應的部門,單擊“擷取accesskey”。擷取RegionId、AccessKey ID和AccessKey Secret。
圖2:Apsara Stack控制台部門管理
圖3:部門相關資訊
擷取EDAS API服務位址endpoint
登入天基平台,選擇報表-->全部報表-->資源申請報表,全局搜尋edas,如下圖中Parameters詳情界面domain即endpoint的值。
圖4:天基擷取EDAS API服務位址endpoint-1
圖5:天基擷取EDAS API服務位址endpoint-2
GetK8sApplication擷取容器服務中部署的應用資訊
擷取容器服務Kubernetes中部署的應用資訊。
- 請求URL
/pop/v5/changeorder/co_application
- 請求參數
- 傳回參數
- 請求示例
public class GetK8sApplicationSimpleInfo {
public String getK8sApplication() throws ClientException {
//請填寫要執行 API 調用的應用所在地域 ID.
String regionId = "your_ regionId ";
//請填寫阿裡雲主賬号或子賬号 AccessKey ID.
String accessKeyId = " your_accessKeyId ";
//請填寫阿裡雲主賬号或子賬号 AccessKey Secret.
String accessKeySecret = " your_accessKeySecret ";
String productName = "Edas";
String domain = "edas-api.console.cn-neimeng-poc2-d01.cloud.poc2.com";
DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
DefaultAcsClient defaultAcsClient = new DefaultAcsClient(defaultProfile);
GetK8sApplicationRequest request = new GetK8sApplicationRequest();
request.setAppId("f66a****-c***-4***-a***-c***********");
request.setEndpoint("edas-api.console. your_regionId.cloud.poc2.com");
GetK8sApplicationResponse response;
String resp = "";
try {
response = defaultAcsClient.getAcsResponse(request);
resp = "傳回碼:" + response.getCode() + "----" + "傳回資訊:" + response.getMessage()
+ "鏡像URL:" + response.getApplcation().getImageInfo().getImageUrl();
System.out.printf("傳回碼:" + response.getCode() + "----" + "傳回資訊:" + response.getMessage()
+ "鏡像URL:" + response.getApplcation().getImageInfo().getImageUrl());
} catch (ClientException e) {
e.printStackTrace();
}
return resp;
}
}
傳回示例
圖6:GetK8sApplication傳回示例
DeployK8sApplication部署容器服務K8S應用
部署容器服務K8S應用。
/pop/v5/k8s/acs/k8s_apps
public class DeployK8sApplictionSimpleInfo {
public String deployK8sApplication() {
//請填寫阿裡雲主賬号或子賬号 AccessKey ID.
String aliyun_user_ak = "your_ AccessKey ID ";
//請填寫阿裡雲主賬号或子賬号 AccessKey Secret.
String aliyun_user_sk = "your_ AccessKey Secret ";
//請填寫要執行 API 調用的應用所在地域 ID.
String region_id = "your_regionid";
DefaultProfile defaultProfile = DefaultProfile.getProfile(region_id, aliyun_user_ak, aliyun_user_sk);
DefaultAcsClient defaultAcsClient = new DefaultAcsClient(defaultProfile);
DeployK8sApplicationRequest request = new DeployK8sApplicationRequest();
request.setAppId("f6******-c***-4***-a***-c***********");
request.setEndpoint("edas-api.console. your_regionId.cloud.poc2.com");
request.setImage("cr.registry.cloud.poc2.com/pdsa/k8s-nacos-consumer:v2");
request.setImageTag("v2");
request.setJDK("Open JDK 8");
request.setEnvs("[{\"name\":\"updatetime\",\"value\":\""+ new Date() + "\"}]");
DeployK8sApplicationResponse response;
String resp = "";
try {
response = defaultAcsClient.getAcsResponse(request);
resp = "傳回碼:" + response.getCode() + "----" + "傳回資訊:" + response.getMessage();
System.out.printf("傳回碼:" + response.getCode() + "----" + "傳回資訊:" + response.getMessage());
} catch (ClientException e) {
e.printStackTrace();
}
return resp;
}
}
圖7:DeployK8sApplication傳回示例
作者:劉偉業
阿裡雲智能混合雲PDSA團隊進階解決方案工程師
曾就職于新華三雲做軟體定義資料中心解決方案,負責多個省級雲平台的架構設計和落地。現就職于阿裡雲智能混合雲PDSA團隊負責容器和雲原生産品的方案設計、POC和最佳實踐工作。
我們是阿裡雲智能全球技術服務-SRE團隊,我們緻力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基于雲建構更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運作更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿裡雲SRE技術學院釘釘圈子,和更多雲上人交流關于雲平台的那些事。