基于专有云EDAS OpenAPI构建企业级云原生CICD——Series2:OpenAPI调用-阿里云开发者社区

开发者社区> 阿里云SRE技术社区> 正文

基于专有云EDAS OpenAPI构建企业级云原生CICD——Series2:OpenAPI调用

简介: 基于专有云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依赖。
图1:添加依赖.png

图1:添加依赖

获取部门信息

登录Apsara Stack控制台,在左侧导航栏选择用户中心-->部门管理,选择对应的部门,单击“获取accesskey”。获取RegionId、AccessKey ID和AccessKey Secret。
图2:Apsara Stack控制台部门管理.png

图2:Apsara Stack控制台部门管理


图3:部门相关信息.png

图3:部门相关信息

获取EDAS API服务地址endpoint

登录天基平台,选择报表-->全部报表-->资源申请报表,全局搜索edas,如下图中Parameters详情界面domain即endpoint的值。
图4:天基获取EDAS API服务地址endpoint-1.png

图4:天基获取EDAS API服务地址endpoint-1


图5:天基获取EDAS API服务地址endpoint-2.png

图5:天基获取EDAS API服务地址endpoint-2

GetK8sApplication获取容器服务中部署的应用信息

获取容器服务Kubernetes中部署的应用信息。

  • 请求URL

/pop/v5/changeorder/co_application

  • 请求参数

3.请求参数.png

  • 返回参数

3.返回参数.png

  • 请求示例
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("f66a22ec-c98d-4b79-ab41-c8641bf9ac87");
        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返回示例.png

图6:GetK8sApplication返回示例

DeployK8sApplication部署容器服务K8S应用

部署容器服务K8S应用。

  • 请求URL

/pop/v5/k8s/acs/k8s_apps

  • 请求参数

4.请求参数.png

  • 返回参数

4.返回参数.png

  • 请求示例
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("f66a22ec-c98d-4b79-ab41-c8641bf9ac87");
        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返回示例.png

图7:DeployK8sApplication返回示例

作者:刘伟业

阿里云智能混合云PDSA团队高级解决方案工程师

曾就职于新华三云做软件定义数据中心解决方案,负责多个省级云平台的架构设计和落地。现就职于阿里云智能混合云PDSA团队负责容器和云原生产品的方案设计、POC和最佳实践工作。

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。
阿里云SRE技术学院(钉钉圈子)-lyl.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

阿里云智能全球技术服务部(GTS)-SRE团队于2019年正式成立,由原专有云、公共云的TAM团队及集团高可用基础技术团队融合而成,是阿里为确保客户平台稳定、业务连续而打造的核心支撑团队,也是阿里集团高可用基础技术核心缔造团队,为集团设计和建设了异地多活、大促容量规划、限流降级、开关预案、流量调度、故障演练、资损防控等高可用架构基础设施,深度参与支持了集团历年双11大促的技术保障工作。团队核心技术源于集团双十一最佳实践,形成以PTS、AHAS等商业化产品输出的方式帮助客户一次又一次安全度过大促流量高峰,同时积极参与开源社区高可用能力的建设,团队开源的Sentinel和ChaosBlade已成为极具影响力的领域技术。 通过 SRE技术社区,我们期望:一. 将阿里云智能最先进的产品、运维技术传递给不同行业的客户和伙伴,帮助大家更全面、深入地了解阿里云的产品。二. 促进技术上互相交流,取长补短,打造阿里云产品运维人社区论坛,共同促进阿里云产品的不断完善。

官方博客
官网链接