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也做相应的配置。总之需要根据具体情况进行设计。后面会分享一些具体实现配置。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty源码学习4——服务端是处理新连接的netty的reactor模式

零丶引入 在前面的源码学习中,梳理了服务端的启动,以及NioEventLoop事件循环的工作流程,并了解了Netty处理网络io重要的Channel ,ChannelHandler,ChannelPipeline。 这一篇将学习服务端是如何构建新的连接。 一丶网络包…

【STM32】W25Q64 SPI(串行外设接口)

一、SPI通信 0.IIC与SPI的优缺点 https://blog.csdn.net/weixin_44575952/article/details/124182011 1.SPI介绍 同步(有时钟线),高速,全双工(数据发送和数据接收各占一条线) 1)SCK:时钟线--&…

【数据结构】栈和队列的模拟实现

前言:前面我们学习了单链表并且模拟了它的实现,今天我们来进一步学习,来学习栈和队列吧!一起加油各位,后面的路只会越来越难走需要我们一步一个脚印! 💖 博主CSDN主页:卫卫卫的个人主页 &#x…

Golang基础-面向对象篇

文章目录 struct结构体类的表示与封装类的继承多态的基本要素与实现interface空接口反射变量的内置pairreflect包解析Struct TagStruct Tag在json中的应用 struct结构体 在Go语言中,可以使用type 关键字来创建自定义类型,这对于提高代码的可读性和可维护…

win11,引导项管理

1,打开cmd,输入msconfig 2,进入引导选项卡 3,删除不需要的引导项

ETL-使用kettle批量复制sqlserver数据到mysql数据库

文章标题 1、安装sqlserver数据库2、下载kettle3、业务分析4、详细流程(1)转换1:获取sqlserver所有表格名字,将记录复制到结果(2)转换2:从结果设置变量(3)转换3&#xff…

【Linux】:共享内存

共享内存 一.原理二.创建共享内存1.shmget2.写一个共享内存代码 三.进行通信1.各种接口2.各接口使用代码3.一次简单的通信四.共享内存的特点 一.原理 直接原理 共享内存顾名思义就是共同使用的一块空间。 很明显操作系统需要对这块内存进行管理,那么就避免不了先描…

Servlet执行流程Servlet 生命周期

Servlet 生命周期 对象的生命周期指一个对象从被创建到被销毁的整个过程 import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; WebServlet(urlPatterns "/demo",loadOnStartup 10) public class ServletDemo imple…

华为ac+fit漫游配置案例

Ap漫游配置: 其它配置上面一样,ap管理dhcp和业务dhcp全在汇聚交换机 R1: interface GigabitEthernet0/0/0 ip address 11.1.1.1 255.255.255.0 ip route-static 12.2.2.0 255.255.255.0 11.1.1.2 ip route-static 192.168.0.0 255.255.0.0 11.1.1.2 lsw1: vlan batch 100 200…

存储日志数据并满足安全要求

日志数据是包含有关网络中发生的事件的记录的重要信息,日志数据对于监控网络和了解网络活动、用户操作及其动机至关重要。 由于网络中的每个设备都会生成日志,因此收集的数据量巨大,管理和存储所有这些数据成为一项挑战,日志归档…

Windows系统如何安装与使用TortoiseSVN客户端,并实现在公网访问本地SVN服务器

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

2023年以就业为目的学习Java还有必要吗?

文章目录 1活力四射的 Java2从零开始学会 Java3talk is cheap, show me the code4结语写作末尾 现在学 Java 找工作还有优势吗? 在某乎上可以看到大家对此问题的热议:“2023年以就业为目的学习Java还有必要吗?” 。有人说市场饱和&#xff0c…

关于lenra你需要了解的

monorepo:项目代码管理方式,单个仓库中管理多个项目是一种设计思想 lenra:是一种工具,对于使用npm和git管理多软件包代码仓库的工作流程进行优化 使用这些工具的优点: 公共依赖只要安装一次,Monorepo 中…

C/C++内存管理(1):C/C++内存分布,C++内存管理方式

一、C/C内存分布 1.1 1.2 二、C内存管理方式 C可以通过操作符new和delete进行动态内存管理。 2.1 new和delete操作内置类型 int main() {int* p1 new int;// 注意区分p2和p3int* p2 new int(10);// 对*p2进行初始化 10int* p3 new int[10];// p3 指向一块40个字节的int类…

网络运维与网络安全 学习笔记2023.11.21

网络运维与网络安全 学习笔记 第二十二天 今日目标 端口隔离原理与配置、路由原理和配置、配置多路由器静态路由 配置默认路由、VLAN间通信之路由器 端口隔离原理与配置 端口隔离概述 实现报文之间的2层隔离,除了使用VLAN技术以后,还可以使用端口隔…

Linux socket编程(5):三次握手和四次挥手分析和SIGPIPE信号的处理

在我之前写的Wireshark抓包:理解TCP三次握手和四次挥手过程中,通过抓包分析了TCP传输的三次握手和四次挥手的过程。在这一节中,将分析在Linux中的三次握手和四次挥手的状态和过程,另外还有一个在我们编程过程中值得注意的SIGPIPE信…

gitBash中如何使用Linux中的tree命令

文章目录 在gitBash中安装tree的目的如何安装安装完成,就可以直接完美适配Linux系统了在gitBash中安装tree的目的 如下图,powershell虽然可以看做是window下的Linux系统,但是根本就不适配很多Linux中的命令 如何安装 tree.exe安装网址 下载 tree 命令的 二进制包,安装 tr…

OAK相机通过振动测试!

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 Hello,大家好,这里是OAK中国,我是助手君。 当…

【python】Python生成GIF动图,多张图片转动态图,pillow

pip install pillow 示例代码: from PIL import Image, ImageSequence# 图片文件名列表 image_files [car.png, detected_map.png, base64_image_out.png]# 打开图片 images [Image.open(filename) for filename in image_files]# 设置输出 GIF 文件名 output_g…

java算法学习索引之数组矩阵问题

一 将正方形矩阵顺时针转动90 给定一个NN的矩阵matrix,把这个矩阵调整成顺时针转动90后的形式。 顺时针转动90后为: 【要求】额外空间复杂度为O(1)。 public void rotate(int[][] matrix) {int tR 0; // 左上角行坐标int tC 0;…