基于专有云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("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返回示例.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("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返回示例.png

图7:DeployK8sApplication返回示例

作者:刘伟业

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

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

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

image.png

相关实践学习
通过EDAS实现K8s微服务应用的金丝雀发布
本实验旨在通过使用分布式应用服务EDAS纳管容器服务ACK Serverless,体验微服务应用的部署、访问和高级发布能力。
SpringMVC框架入门
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts2等。 相关的阿里云产品企业级分布式应用服务 EDAS:企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。产品详情: https://www.aliyun.com/product/edas 
相关文章
|
25天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
5天前
|
人工智能 Cloud Native 大数据
DataWorks深度技术解读:构建开放的云原生数据开发平台
Dateworks是一款阿里云推出的云原生数据处理产品,旨在解决数据治理和数仓管理中的挑战。它强调数据的准确性与一致性,确保商业决策的有效性。然而,严格的治理模式限制了开发者的灵活性,尤其是在面对多模态数据和AI应用时。为应对这些挑战,Dateworks进行了重大革新,包括云原生化、开放性增强及面向开发者的改进。通过Kubernetes作为资源底座,Dateworks实现了更灵活的任务调度和容器化支持,连接更多云产品,并提供开源Flowspec和Open API,提升用户体验。
|
20天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
26天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
30天前
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。
|
2月前
|
运维 Cloud Native Docker
云端漫步:构建你的第一个云原生应用
在这篇文章中,我们将一起踏上一段激动人心的旅程,探索如何从零开始构建一个云原生应用。我们将深入理解云原生的核心概念,并通过实际代码示例,学习如何利用云平台的强大功能来部署和管理应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的指导和启发。让我们一起开启这场云端之旅,发现云原生应用的魅力吧!
40 3
|
2月前
|
Kubernetes Cloud Native Ubuntu
庆祝 .NET 9 正式版发布与 Dapr 从 CNCF 毕业:构建高效云原生应用的最佳实践
2024年11月13日,.NET 9 正式版发布,Dapr 从 CNCF 毕业,标志着云原生技术的成熟。本文介绍如何使用 .NET 9 Aspire、Dapr 1.14.4、Kubernetes 1.31.0/Containerd 1.7.14、Ubuntu Server 24.04 LTS 和 Podman 5.3.0-rc3 构建高效、可靠的云原生应用。涵盖环境准备、应用开发、Dapr 集成、容器化和 Kubernetes 部署等内容。
73 5
|
2月前
|
存储 Cloud Native 块存储
EBS深度解析:云原生时代企业级块存储
企业上云的策略,从 Cloud-Hosting 转向 Serverless 架构。块存储作为企业应用上云的核心存储产品,将通过 Serverless 化来加速新的计算范式全面落地。在本话题中,我们将会介绍阿里云块存储企业级能力的创新,深入解析背后的技术细节,分享对未来趋势的判断。
146 2
|
2月前
|
Cloud Native 持续交付 云计算
云原生技术深度探索:构建现代化应用的基石####
【10月更文挑战第21天】 本文将深入探讨云原生技术的核心概念、关键技术及其在现代软件开发中的应用。我们将从容器化、微服务架构、持续集成/持续部署(CI/CD)、无服务器架构等关键方面展开,揭示这些技术如何共同作用,帮助企业实现高效、弹性且易于维护的应用部署与管理。通过实例分析,展现云原生技术在实际项目中的显著优势,为读者提供一套全面理解并应用云原生技术的指南。 ####
42 2
|
2月前
|
运维 Kubernetes Cloud Native
云原生架构:构建现代应用程序的基石####
本文将深入探讨云原生架构的核心概念、关键特征及其对现代软件开发的重要性。不同于传统的摘要概述,我们将通过一个生动的案例引入——想象一下,一家初创企业如何在短短几个月内,从零开始构建起一个能够支撑数百万用户访问量、具备高可用性与弹性伸缩能力的在线服务平台。这个过程中,云原生技术扮演了怎样的角色?它是如何帮助这家企业快速响应市场变化,同时保持系统稳定性和成本效益的?带着这些问题,让我们一起揭开云原生架构背后的神秘面纱。 ####

热门文章

最新文章