研发运维双管齐下!Seal AppManager的正确打开方式
新一代应用统一部署管理平台 Seal AppManager 采用平台工程的理念,通过降低基础设施操作的复杂度为研发和运维团队提供易用、一致的应用管理和部署体验。Seal AppManager 帮助研发和运维团队实现关注点分离,即运维工程师负责基础建设,研发可以在零基础设施知识的情况下实现应用部署管理。
本文以运维和研发两个视角,介绍如何通过Seal AppManager 从源码构建一个 Java Web 服务并部署到 Kubernetes 中。
运维视角
李维是 Alpha 公司的 DevOps,他需要搭建一个自服务平台提供给不了解容器和 Kubernetes 的研发团队使用。他做了以下准备工作:
- 资源不少于4CPU,8Gi内存的 Linux 服务器。
- 至少 50GB 的空余磁盘空间。
- 安装 Docker,详细指引参Docker官方文档(https://docs.docker.com/)。
- 服务器开放80和443端口。
- 前往官网(https://seal.io/trial)申请产品试用镜像。
- 安装一个 Kubernetes 集群,获取到 Kubeconfig 文件。
部署
执行以下命令启动 Seal 服务:
sudo docker run -d --privileged --restart=always -p 80:80 -p 443:443 <seal-container-image>
访问
通过 https://<server-address> 访问Seal的UI。
第一次登陆时根据UI提示,在服务器上运行以下指令获取初始的管理员密码。
sudo docker logs <your-container-id> 2>&1 | grep "Bootstrap Admin Password"
以 admin 用户名以及初始管理员密码登陆 Seal,并根据UI提示设置新的密码以及 Seal 的访问地址。
配置镜像仓库认证密钥
配置提供给研发使用的镜像仓库测试账号:
- 访问【运维中心】-【全局密钥】菜单,点击【新建密钥】按钮。
- 在【名称】中填入
REGISTRY_USERNAME,在【内容】中填入镜像仓库认证的用户名,点击【保存】按钮。 - 再次点击【新建密钥】按钮。
4 在【名称】中填入REGISTRY_PASSWORD,在【内容】中填入镜像仓库认证的密码,点击【保存】按钮。
配置 Kubernetes 与环境
添加 Kubernetes 集群作为应用的部署目标:
- 访问【运维中心】-【连接器】菜单,点击【新建连接器】按钮。
- 在名称中填入
test-k8s,在Kubeconfig中填入准备的集群Kubeconfig文件,点击保存按钮。 - 访问【运维中心】-【环境】菜单,点击【新建环境】按钮。
- 在【名称】中填入
development。 - 点击【添加连接器】按钮,选择
test-k8s连接器,点击【保存】按钮。

注:
- 连接器是对接任意基础设施和服务的抽象对象,例如 Kubernetes,公有/私有云,虚拟机,版本控制系统等等。
- 环境是应用部署目标,环境中可以关联若干连接器。
李维已经完成了基建工作!后续他可以在 Seal 平台接入更多不同的基础设施,添加更多沉淀了组织内 DevOps 最佳实践的应用模块,提供给研发团队使用。对于本文的工作,使用 Seal 内置的模块即可完成。
研发视角
张研是 Alpha 公司的研发,他不熟悉 Kubernetes,他想在不需要提工单给运维的情况下快速搭建开发测试环境(所谓自服务)。
项目代码仓库放置在:https://github.com/seal-demo/spring-boot-docker-sample
创建应用
张研登入Seal平台执行以下操作:
- 访问【应用管理】-【应用】菜单,点击【新建应用】按钮。
- 在【名称】中填入
myapp,点击模块配置中的【+】按钮。 - 在模块名称中填入
s2i,模块列表中选择build-container-image,在Git URL中填入 https://github.com/seal-demo/spring-boot-docker-sample。 - 点击【Build】标签页,在
image中填入镜像名称registry.alpha.org/myproject/myimage:latest(注:这是张研所在Alpha公司的仓库地址,您需要换成您所用的镜像仓库地址)。 - 勾选【Registry Authentication】,在【Username】和【Password】中分别填入
${secret.REGISTRY_USERNAME}和${secret.REGISTRY_PASSWORD}。Seal的UI会引导填写对已配置密钥的引用。点击【确定】保存构建镜像模块的配置。 - 点击【模块配置】中的【+】按钮。
- 在模块名称中填入
web,确认模块列表中选择webservice,在【Image Name】中填入${module.s2i.image},Seal的UI会引导填写对其它模块输出的引用。 - 修改
Ports为 8888 端口(这是张研所用代码监听的端口)。点击【确定】保存web服务模块的配置。 - 点击【保存】按钮保存应用配置。
部署应用
现在张研可以在Seal上一键部署测试环境了:
- 进入
myapp应用详情页。 - 点击应用信息右侧的【+】号添加实例按钮。
- 在名称中填入
dev1,选择运维团队(李维)提供的development环境。点击【确定】按钮创建应用实例。
4 等待部署完成,并在UI上出现该应用实例的访问地址。


TADA!张研现在可以访问他的服务测试环境了!后续他可以将该应用共享给其它的开发测试成员,创建多个应用实例。
总结
本文通过两种角色视角的职责划分,展示了 Seal 如何实现研发和运维关注点分离;通过从源码到 Kubernetes deployment 的部署,展示了Seal 的应用模型抽象。当然不止于此,一个应用模块可以是构建逻辑、云原生工作负载,也可以是传统部署负载或是其它的资源抽象。
欢迎来探索更多功能!
研发运维双管齐下!Seal AppManager的正确打开方式的更多相关文章
- DevOps Workshop 研发运维一体化(北京第二场) 2016.04.27
北京不亏为首都,人才济济,对微软DevOps解决方案感兴趣的人太多.我们与微软公司临时决定再家一场培训. 我之前在博客中(DevOps Workshop 研发运维一体化第一场(微软亚太研发集团总部)h ...
- InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式
InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式 https://mp.weixin.qq.com/s/HGa_90XvC22anabiBF8AbQ 在这篇文章里,我将讨论在MySQL 5 ...
- C++11随机数的正确打开方式
C++11随机数的正确打开方式 在C++11之前,现有的随机数函数都存在一个问题:在利用循环多次获取随机数时,如果程序运行过快或者使用了多线程等方法,srand((unsigned)time(null ...
- iOS开发小技巧--相机相册的正确打开方式
iOS相机相册的正确打开方式- UIImagePickerController 通过指定sourceType来实现打开相册还是相机 UIImagePickerControllerSourceTypeP ...
- Xcode 的正确打开方式——Debugging(转载)
Xcode 的正确打开方式——Debugging 程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不可避免地需要使用 Xcode.这篇博客就主要介绍了 Xcode 中几种能 ...
- C#语法——泛型的多种应用 C#语法——await与async的正确打开方式 C#线程安全使用(五) C#语法——元组类型 好好耕耘 redis和memcached的区别
C#语法——泛型的多种应用 本篇文章主要介绍泛型的应用. 泛型是.NET Framework 2.0 版类库就已经提供的语法,主要用于提高代码的可重用性.类型安全性和效率. 泛型的定义 下面定义了 ...
- Console控制台的正确打开方式
Console控制台的正确打开方式 console对象提供了访问浏览器调试模式的信息到控制台 -- Console对象 |-- assert() 如果第一个参数断言为false,则在控制台输出错误信息 ...
- 任务队列和异步接口的正确打开方式(.NET Core版本)
任务队列和异步接口的正确打开方式 什么是异步接口? Asynchronous Operations Certain types of operations might require processi ...
- (一)Redis for Windows正确打开方式
目录 (一)Redis for Windows正确打开方式 (二)Redis for 阿里云公网连接 (三)Redis for StackExchange.Redis 下载地址 官网.中文网1 及 中 ...
- List的remove()方法的三种正确打开方式
转: java编程:List的remove()方法的三种正确打开方式! 2018年08月12日 16:26:13 Aries9986 阅读数 2728更多 分类专栏: leetcode刷题 版权声 ...
随机推荐
- 转载·Charles4.2.8 开启macOS Proxy ,MacOS10.15 Catalina版本提示APP权限为只读
转载地址:https://superuser.com/questions/1490116/charles-4-2-8-cannot-configure-your-proxy-settings-whil ...
- idea中新建java类
project是项目,一个大目录,里面可以放多个module project里面存放: .idea文件(project相当于workplace) module(模块) out(编译生成的.class文 ...
- 中国移动光猫(吉比特h2-3S)超级用户名与密码
超级用户名 CMCCAdmin 密码 aDm8H%MdA
- revit添加扩展组件
revit 添加组件方法: 查找本地这个地址: C:\Users\用户名\AppData\Roaming\Autodesk\Revit\Addins\2018 下载网上找到的插件,一般从github查 ...
- 1.3Dmax界面_试图操作
一.初始界面 1.菜单栏(软件的核心) 2.工具栏 3.石墨工具 4.命令板块 5.场景大纲 tools--> new Scene Explorer 创建的物体信息就会从出现在这里 6.视图窗口 ...
- mysql-开启日志记录功能
开启日志记录功能 -- 开启功能 SET GLOBAL general_log = ON; -- 保存到文件 SET GLOBAL log_output = 'file'; 查看日志内容 -- 查看日 ...
- Spring MVC 常见问题
Spring MVC的主要组件有那些? spring mvc 在使用 DispatcherServlet 处理 web 请求的时候,会用到 spring 中的九大组件,以下是几个关键的组件: 1.Li ...
- 之前学的yield
生成器&迭代器 生成器的特性1.生成器是一个有yield关键字的函数对象,yield暂停并保存并返回调用结果2.第一次通过next开始运行这个函数,以后每次next就从yield开始继续运行函 ...
- 对于Python中RawString的理解(引用)
对于Python中RawString的理解 总结 1.'''作用: 可以表示 "多行注释" ."多行字符串" ."其内的单双引号不转义" 2 ...
- 基于Rocky Linux搭建Windows域控制器
1.基于Rocky Linux搭建Windows域控制器 https://blog.csdn.net/Sakura0156/article/details/125822938?spm=1001.210 ...