CNP实现应用CD部署

上一篇整体介绍了cnp的功能,这篇重点介绍下CNP产品应用开发的功能。

简介

CNP的应用开发,主要是指的应用CD部署的配置管理。

应用列表,用来创建一个应用,一般与项目对应,也可以多个应用对应到一个项目。具体很灵活。然后应用配置明细中,其实就是提供了一个web看板,可以快速定义k8s对象,包括工作负载、ConfigMap、Secret等等k8s对象,并且提供部署功能。部署时可以选择到前面cnp配置好的环境中去,同时提供了环境部署过程的监控、日志等功能。

制品库管理,云原生的cd基本都是通过镜像部署实现,所以纳管一个制品库就是标配功能。这里支持纳管移动云自己的CIS镜像库、Harbor,以及其他镜像库(如nexus等)。最终是为部署过程提供镜像库使用。

插件管理,主要是提供ISTIO的服务网格管理功能。

应用路由,主要是集成了cnp内置的apisix的路由配置功能。提供了一个更简洁的直观的可视化配置界面。

制品库管理

应用部署都依托于制品库,所以首先我们要纳管我们使用的制品库。CNP支持的制品库有两种:传统镜像库(例如Harbor)、Helm Chart仓库。其中后面应用部署的Helm方式,需要基于Helm Chart库实现。

我们这里基于磐舟的Harbor进行配置。

需要确保仓库地址和CNP的网络能够通。

录入地址、用户名、密码,点击验证。然后关联一个部署目标,确定保存。比较简单。

这里注意仓库地址末尾不要加"/"。

插件管理

目前提供两个插件。Fluxcd和Istio。

Fluxcd主要针对helm部署方式。

Istio提供服务网格服务。

我们这里安装Istio组件。点击Istio组件进入组件安装界面。

点击安装按钮,选择集群及项目,启动安装。安装完成效果如上图。

安装了Istio组建后,在后面应用创建时才能选择启用服务治理功能。

应用列表

新建应用。这里新建应用的时候,会直接给你创建一个工作负载,所以首次创建的时候需要注意一下,提前规划好部署那个负载。

绑定环境是cnp配置的系统环境。就是生命部署到拿一个项目下的哪一个环境中。选择环境时,同时会默认使用项目设置的namespace。

应用组件类型是提供了几种对象创建方式。webservice是基于server API接口封装的一个Web控制台页面。同时也支持k8s-objects(yml方式),helm。

这里我们是用WebService方式创建。

推荐启用服务治理模块,会自动配置Istio,后期CNP会陆续增加基于sidecar的很多功能,提供更好的服务网格功能。服务治理需要提前安装istio插件。可以到插件管理中安装。否则部署时会报错。

容器镜像,选择好纳管的Harbor镜像源,然后补充具体项目路径及版本信息。点击回车可以匹配验证。

设置内存配额和cpu配额,设置容器端口号。提交保存即可完成。

首次配置完,只有一个组件。可以根据项目实际情况,继续新增组件。这里的组件,包括configMap和deployment等。

ConfigMap创建时,推荐试用yml方式创建。首先使用文本编辑工具提前标记好yml文件,然后新增组件是选择k8s-objects类型,将yml贴到应用配置的文本区域中执行即可。

注意yml方式执行时,偶尔会因为字符问题导致提交时格式错乱。整合是由于windows的字符集和unix字符集差异导致的。cnp目前对类似特殊字符处理正在优化中,暂时需要自行通过类似nodepad++等文本编辑器处理后提交。如果格式变形,会导致yml解析错误,直接引发应用容器启动异常。

点击部署,启动应用到集群的cd流程。

下方可以看到具体部署情况。

也可以看部署信息。

到这里我们完成cd推送的操作。

应用路由

应用镜像启动起来了,不代表就能对外提供服务了。我们还需要配置应用入口路由。这里基于Apisix进行路由配置。当然你可以继续使用k8s传统的ingress或者svc的方式开通服务,直接到kcs的控制台进行配置即可。这里不再单独描述。

Apisix作为一个高性能,使用广泛,灵活可配置的服务网关,被cnp选中集成到环境中来。

在安装了apisix的组件后,你可以直接通过apisix的控制看板进行路由配置,也可以通过cnp集成的apisix的路由配置功能进行操作。

目前cnp的路由配置正在不断优化中,针对后台转发重写地址,支持不好,需要到apisix中进行配置。直接默认联通的路由,可以一次性直接开通。

点击新增路由

输入路由名称和路由描述。选择应用,选择应用中对应的组件(deploy),选择部署目标,选择网关(apisix,安装名称可能不同),下一步。

选择服务端口。这里跟上一步选择的组件是绑定的。

输入域名。需要解析到对应的负载均衡ip上。

输入路径。/* 表示所有路径。

优先级。优先级高的交叉路由会被优先执行。

提交保存。

去到apisix看一下。

apisix中创建了两个对象。一个“上游”,一个“路由”。

这里其实和到apisix直接配置是等效的。

转发配置

对于一些特殊设计,例如后台多个微服务之间的转发,可能会调整请求路径path,需要对请求进行重写。目前cnp对路径重写并不支持,需要到apisix中直接进行配置。配置如下。

先确定是否存在上游配置。上游配置就是请求到那个deployment的指向配置。

这里我们有一个独立的java的服务,叫asia-info。首先我们配置这个上游。

这里如果你熟悉kcs的配置,可以通过apisix直接配置。

但是更建议利用cnp的路由管理创建相关对象,确保无误。

我们先创建一个应用路由,按照路由选择对应的应用和组件。

路径可以先配置入口路径,优先级设置1。

然后cnp就会给我们创建好对应的apisix的上游和路由对象。

我们只需要重新创建一个路由对象,吧优先级设置为9,即可以让路由走我们的新路由来进行转发。具体如下。

在请求改写这里,采用正则改写,然后根据需要,配置正则表达式,然后填入转发模板。这里的意思是转发的时候移除“/prod-api/”这个路径。

下一步的时候直接选择cnp生成的那个上游对象,提交保存即可。

当你将所有的路由都配置上以后,应用就能够通过apisix进行访问了。

例如:village.sdchbn.com:30443

PS

        路由的配置,可以根据测试或者开发环境上,能够正常运行的应用的nginx的conf文件进行设计。如果开发环境是通过端口号进行的路由定义,你需要改写成一个入口的path,然后用路由转发到不通的服务镜像内。因为k8s集群肯定都是一个入口过来。当然你也可以使用二级域名进行入口路由。同时,增加path,需要打包镜像的时候对nginx也做相应的配置。总之需要根据具体情况进行设计。后面会分享一些具体实现配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/172246.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】可再生能源发电与电动汽车的协同调度策略研究

1 主要内容 之前发布了《可再生能源发电与电动汽车的协同调度策略研究》matlab版本程序,本次发布的为Python版本,采用gurobi作为求解器,有需要的可以下载对照学习研究。 首先详细介绍了优化调度模型的求解方案,分别采用二次规划…

WPF TextBox实现placeholder

WPF里TextBox没有placeholder,需要自己实现,本篇博客介绍WPF TextBox实现placeholder,效果如下: 实现技巧是在 TextBox 控件的 Style 中使用触发器(Triggers)来显示和隐藏placeholder文本。xmal代码如下&am…

虾皮网同行数据丨虾皮数据工具-知虾:监控竞争对手数据的利器

在如今的电商竞争激烈的市场中,了解竞争对手的销售情况和策略对于制定自己的营销策略至关重要。虾皮网作为一家知名的电商平台,提供了一款强大的同行数据工具-知虾,可以帮助卖家监控竞争对手的数据,为自己的业务发展提供有力支持。…

部署Kubernetes Dashboard

Dashboard简介 Dashboard 是基于网页的 Kubernetes 用户界面。 可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 Dashboard创建 #创建pods kubectl apply -f https://raw.githubusercontent.com/kub…

动手学深度学习(三)---Softmax回归

文章目录 一、理论知识 softmax回归 一、理论知识 回归估计一个连续值分类预测一个离散类别 回归单连续数值输出自然区间R跟真实值的区别作为损失 分类通常多个输出输出i是预测为第i类的置信度 一般我们使用交叉熵用来衡量两个概率的区别 将它作为损失 其梯度是真实概率和…

重磅解读 | 阿里云 云网络领域关键技术创新

云布道师 10 月 31 日,杭州云栖大会,阿里云技术主论坛带来了一场关于阿里云主力产品与技术创新的深度解读,阿里云网络产品线负责人祝顺民带来《云智创新,网络随行》的主题发言,针对阿里云飞天洛神云网络(下…

CMake 判断操作系统类型

上回的CMakeLists.txt里面有一句,if (WIN32)......endif(WIN32); 根据资料,这是判断操作系统是否是Windows; 下面单独看一下; 一个CMakeLists.txt文件如下; if(WIN32)# 如果是 Windowsmessage("当前操作系统为 Windows") elseif(UNIX AND NOT APPLE)# 如果…

【Mysql学习笔记】- 2 多表查询

一、加强查询 where子句,oder by子句 -- 查询加强 -- ■ 使用where子句 -- ?如何查找1992.1.1后入职的员工 -- 老师说明: 在mysql中,日期类型可以直接比较, 需要注意格式 SELECT * FROM empWHERE hiredate > 1992-01-01 -- ■ 如何使用like操作符…

自动化物流运输设备模组要选择哪种类型?

在自动化物流运输设备中,选择合适的模组类型取决于具体的运输需求和应用场景。 1、同步带模组:同步带模组是一种低噪音、低成本的物流运输设备,适用于中短距离、轻型货物的运输。它采用同步带传动的方式,具有传动准确、运行稳定、…

Linux应用开发基础知识——网络通信编程(九)

前言: 通过学习为后续Linux网络编程奠定基础。首先介绍网络编程的概念,即网络协议分层,旨在帮助读者对网络建立初步的、全面立体的认识,其次介绍包括协议、端口、地址等;最后介绍应用非常广泛的传输控制协议&#xff0…

Nature文章|博士后对就业更有信心 但仍是学术界的苦力

《自然》(Nature)杂志近期发表的全球博士后调查发现,新冠造成的负面影响已经下降,博士后对就业前景更有信心。但是,博士后仍然是学术界的苦力劳动者。鉴于很多博士后申请者关注这些问题,所以知识人网小编全…

C语言-求一个整数储存在内存中的二进制中1的个数

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {/*求一个整数储存在内存中的二进制中1的个数*/int number;scanf("%d", &number);int i 0;int count 0;for (i 0; i < 32; i){if (1 ((number >> i) & 1)){count;}}printf(…

坑惨啦!!!——符号冲突案例分析

背景 前段时间在北汽项目中&#xff0c;遇到了一个奇怪现象&#xff1a;程序启动之后&#xff0c;偶现运行一段时间后&#xff0c;crash&#xff0c;复现频率较高。困扰了大家较长时间。最终在和同事的不懈努力下&#xff0c;找到的根因&#xff0c;并找到了解决方法。过程中也…

Java语言的特点||运算符

Java语言的特点||运算符 1&#xff1a;2&#xff1a;JDK, JRE&#xff0c;JVM知识&#xff1a;3&#xff1a;注释4&#xff1a;标识符5&#xff1a; Java编译过程&#xff1a;6&#xff1a;赋值7&#xff1a;switch8:布尔表达式9&#xff1a;判定素数10&#xff1a;打印 1 - 10…

代码随想录二刷 | 链表 | 翻转链表

代码随想录二刷 &#xff5c; 链表 &#xff5c; 翻转链表 题目描述解题思路 & 代码实现双指针法递归法 206.翻转链表 题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4…

VR全景打造亮眼吸睛创意内容:三维模型、实景建模

随着VR技术在不同行业之间应用落地&#xff0c;市场规模也在快速扩大&#xff0c;VR全景这种全新的视觉体验为我们生活中的许多方面都带来了无限的可能。更加完整的呈现出一个场景或是物体的所有细节&#xff0c;让浏览者感受到自己仿佛置身于现场一般&#xff1b;其次&#xf…

uni-app:实现request请求的递归(设置request请求的访问次数),并且调用自定义方法给出返回值

一、效果展示 失败效果 成功效果 二、写入后端请求部分 分析 ①自定义一个模块common.js主要用于封装所有的请求函数 ②核心代码 function requestWithRetry(cmd, username, password, retryCount) {return new Promise((resolve, reject) > {uni.request({url: ip sys…

如何修改百科内容?百度百科内容怎么修改?

百科词条创建上去是相当不易的&#xff0c;同时修改也是如此&#xff0c;一般情况下&#xff0c;百科词条是不需要修改的&#xff0c;但是很多时候企业或是人物在近期收获了更多成就或是有更多的变动&#xff0c;这个时候就需要补充维护词条了&#xff0c;如何修改百科内容&…

视频剪辑技巧:如何高效地将多个视频合并成一个新视频

在视频制作过程中&#xff0c;将多个视频合并成一个新视频是一个常见的操作。这涉及到将多个片段组合在一起&#xff0c;或者将不同的视频素材进行混剪。无论是制作一部完整的影片&#xff0c;还是为社交媒体提供短视频&#xff0c;都要掌握如何高效地将多个视频合并。现在一起…

ssm青少年航天知识科普网站-计算机毕设 附源码59487

青少年航天知识科普网站 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&am…