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/…

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

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

解决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…

Java实现象棋算法

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

数据库-索引

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

深度学习之基于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…

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循环,并且使用…

SAP gui 登录条目不让修改

今天碰到用户安装的GUI 770 版本,不让修改,也不让添加 后面再选项里面找到了

安防监控视频云存储平台EasyCVR页面播放卡顿的优化方法

视频监控平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视…

ky10 server aarch64 离线安装openssl3.1.4

离线程序 https://gitcode.net/zengliguang/ky10_aarch64_openssl_install.git 输入下面命令执行离线安装脚本 source openssl_offline_install.sh 安装完成

郎酒“掉队”,经销商们能等来春天吗?

文 | 螳螂观察(TanglangFin) 作者 | 渡过 有“六朵金花”之称的川酒品牌中,五粮液、泸州老窖、舍得、水井坊都已成功上市,只剩下郎酒和剑南春未上市。 与IPO的“掉队”相对应的,是郎酒在冲刺高端、内部管理、渠道管…

安全领航,共筑敏捷开发新时代【云驻共创】

安全领航,共筑敏捷开发新时代。网络安全形势虽然严峻,但得益于企业安全意识的提升,近两年来遭受网络攻击的网站不断减少,普通网民的个人隐私及其他敏感数据得到了更多的保证。华为云基于自身多年的安全经验研发了可以帮助开发者实…

(一)pytest自动化测试框架之生成测试报告(mac系统)

前言 我们可以通过pytest-html插件来生成测试报告,但是pytest-html插件生成的测试报告不够美观,逼格也不够高,通过allure生成的测试报告是比较美观的,花里胡哨的,能够提升一个level。 allure官网: Allure…