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.mzph.cn/news/155422.shtml

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

相关文章

结合两个Python小游戏,带你复习while循环、if判断、函数等知识点

💐作者:insist-- 💐个人主页:insist-- 的个人主页 理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里 ❤️欢迎点…

Ubuntu18.04安装LeGO-LOAM保姆级教程

系统环境:Ubuntu18.04.6 LTS 1.LeGO-LOAM的安装前要求: 1.1 ROS安装:参考我的另一篇博客Ubuntu18.04安装ROS-melodic保姆级教程_灬杨三岁灬的博客-CSDN博客文章浏览阅读168次。Ubuntu18.04安装ROS-melodic保姆级教程https://blog.csdn.net/…

.Net中Redis的Hash表操作

前言 Redis中的Hash是一种存储数据的数据结构,用于存储键值对的集合。Hash常用于存储对象或者记录,因为它可以将多个属性存储为一个键值对,这样可以方便地获取、修改、和删除对象中的单个属性。 Redis的使用 安装包ServiceStack.Redis Nu…

javascript开发经验小结

javascript 面向对象的编程方法 对象声明: 1。 var MapX {}; 2。 var XLngLat new Class(); 3.//菜单项对象。 function MenuItem(id,text,clickEvent,accelerator) //指定菜单项属性,ID,中文名,单击事件快捷键…

鸿蒙系统扫盲(二):再谈鸿蒙是不是安卓套壳?

最近小米发布了澎湃OS,vivo发布了蓝OS,好像自从华为回归后,大伙都开始写自己的OS了,小米官方承认是套壳安卓,然后被大家喷了,于是鸿蒙是不是安卓套壳的话题又回到了大众的视野,今天在讨论下这个…

Docker-compose 安装mysql8

1、编写docker-compose.yml文件 version: 3.8 services:mysql:container_name: mysql8image: mysql:8.0.18restart: alwaysports:- 3306:3306privileged: truevolumes:- $PWD/log:/var/log/mysql- $PWD/conf/my.cnf:/etc/mysql/my.cnf- $PWD/data:/var/lib/mysqlenvironment:M…

解决uncompyle6反编译报错KeyError

报错内容:KeyError:3.11.0 (这个是我自己的Python版本号) 主要原因就是你的Python版本没在它库文件支持的版本里,我们需要进行手动添加即可。 首先找到文件:magics.py 我的是在这个路径下:D:\…

5.2 Windows驱动开发:内核取KERNEL模块基址

模块是程序加载时被动态装载的,模块在装载后其存在于内存中同样存在一个内存基址,当我们需要操作这个模块时,通常第一步就是要得到该模块的内存基址,模块分为用户模块和内核模块,这里的用户模块指的是应用层进程运行后…

ubuntu linux C/C++环境搭建

目录 前言 1.1 vim安装与配置 ​编辑 1.2 vim配置 1.3 gcc g编译器的安装 与gdb调试器的安装 1.4 写个C/C程序测试一下 1.6 vscode安装 1.7 vscode插件下载​编辑 前言 在开始C之前,我们需要搭建好C的开发环境,我这里使用的操作系统是ubuntu Linux&a…

python之随机数

生成随机数 工具库:random 生成随机整数:random.randint(0, 99999) 生成随机大写英文字母:random.choice(string.ascii_uppercase) 例子 3. 写代码实现,车牌的区域划分。如 car_list [鲁A32444, 沪B12333, 京B8989M, 京C49678, 黑…

Java实现象棋算法

象棋算法包括搜索算法、评估函数和剪枝算法。以下是一个简单的实现: 搜索算法:使用极大极小值算法,即每个玩家都会做出最好的选择,考虑到对方也会做出最好的选择,所以需要搜索多层。 public int search(int depth, i…

数据库-索引

一、概述 索引是SQL优化的核心 索引(index)是帮助MySQL高效获取数据的数据结构。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种引用(指向数据),这样可以在这些数据结构上实现高级查找算法,这种数…

docker下移除不使用的镜像、容器、卷、网络

Prune images docker image prune移除没有标签并且没有被容器引用的镜像,这种镜像称为 dangling(摇晃的) 镜像。 示例1:docker image prune 删除了redis,无标签且无引用 docker ps -a CONTAINER ID IMAGE COMMAND CREATED STA…

深度学习之基于YoloV5抽烟检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于YOLOv5(You Only Look Once)的抽烟检测系统可以用于实时检测图像或视频中是否存在抽烟行…

CF 1894A 学习笔记 思维 题意理解分析

原题 A. Secret Sport time limit per test 3 seconds memory limit per test 512 megabytes input standard input output standard output Lets consider a game in which two players, A and B, participate. This game is characterized by two positive integer…

IvorySQL3.0:基于PG16.0最新内核,实现兼容Oracle数据库再升级

Oracle作为全球最大的数据库厂商之一,具有较高的市场知名度和份额。但随着数据处理需求日益增长,使用Oracle的企业可能面临一些挑战,如数据库复杂性、高昂维护成本、数据迁移和集成问题等,难以满足企业实时数据处理需求&#xff0…

服务器能分成的四种类型有哪些?

1、文件服务器:是一种网络服务器,他能够把共享文件夹或者是网络驱动器映射到本地计算机上面,这样企业里的用户都可以很方便的访问和共享文件,文件服务器还能够存储大量的数据,提供备份,安全性也很高&#x…

UI 自动化测试框架设计与 PageObject 改造!

在 UI 自动化测试过程中,面对复杂的业务场景,经常会遇到这样的挑战: 简单的录制/回放速度快,但无法适应复杂场景;编写自动化测试脚本比较灵活,但工作量大且可维护性差;以往的封装技术&#xff…

webpack 创建typescript项目

【视频链接】尚硅谷TypeScript教程(李立超老师TS新课) 创建webpack 项目 IDE:webstorm 新建一个空的项目运行npm init初始化项目目录结构 1. 安装 webpack:构建工具webpack-cli: webpack的命令行工具typescript&am…

单链表在线OJ题(详解+图解)

1.删除链表中等于给定值 val 的所有节点 本题的要求是输入一个val的整形值,若链表中节点存储的值与val相等,则删除这个节点,并最后返回这个删除节点后的链表,思路如下: 我们可以直接使用while循环,并且使用…