天天看點

基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用

前言

上期

本文對基于專有雲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依賴。

基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用

圖1:添加依賴

擷取部門資訊

登入Apsara Stack控制台,在左側導航欄選擇使用者中心-->部門管理,選擇對應的部門,單擊“擷取accesskey”。擷取RegionId、AccessKey ID和AccessKey Secret。

基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用

圖2:Apsara Stack控制台部門管理

基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用

圖3:部門相關資訊

擷取EDAS API服務位址endpoint

登入天基平台,選擇報表-->全部報表-->資源申請報表,全局搜尋edas,如下圖中Parameters詳情界面domain即endpoint的值。

基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用

圖4:天基擷取EDAS API服務位址endpoint-1

基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用

圖5:天基擷取EDAS API服務位址endpoint-2

GetK8sApplication擷取容器服務中部署的應用資訊

擷取容器服務Kubernetes中部署的應用資訊。

  • 請求URL

/pop/v5/changeorder/co_application

  • 請求參數
基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用
  • 傳回參數
基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用
  • 請求示例
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;
    }
}
           

傳回示例

基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用

圖6:GetK8sApplication傳回示例

DeployK8sApplication部署容器服務K8S應用

部署容器服務K8S應用。

/pop/v5/k8s/acs/k8s_apps

基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用
基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用
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;
    }
}
           
基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用

圖7:DeployK8sApplication傳回示例

作者:劉偉業

阿裡雲智能混合雲PDSA團隊進階解決方案工程師

曾就職于新華三雲做軟體定義資料中心解決方案,負責多個省級雲平台的架構設計和落地。現就職于阿裡雲智能混合雲PDSA團隊負責容器和雲原生産品的方案設計、POC和最佳實踐工作。

我們是阿裡雲智能全球技術服務-SRE團隊,我們緻力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基于雲建構更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運作更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿裡雲SRE技術學院釘釘圈子,和更多雲上人交流關于雲平台的那些事。

基于專有雲EDAS OpenAPI建構企業級雲原生CICD——Series2:OpenAPI調用