新一代应用统一部署管理平台 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 的访问地址。

配置镜像仓库认证密钥

配置提供给研发使用的镜像仓库测试账号:

  1. 访问【运维中心】-【全局密钥】菜单,点击【新建密钥】按钮。
  2. 在【名称】中填入 REGISTRY_USERNAME,在【内容】中填入镜像仓库认证的用户名,点击【保存】按钮。
  3. 再次点击【新建密钥】按钮。

    4 在【名称】中填入 REGISTRY_PASSWORD,在【内容】中填入镜像仓库认证的密码,点击【保存】按钮。

配置 Kubernetes 与环境

添加 Kubernetes 集群作为应用的部署目标:

  1. 访问【运维中心】-【连接器】菜单,点击【新建连接器】按钮。
  2. 在名称中填入test-k8s,在 Kubeconfig 中填入准备的集群 Kubeconfig 文件,点击保存按钮。
  3. 访问【运维中心】-【环境】菜单,点击【新建环境】按钮。
  4. 在【名称】中填入 development
  5. 点击【添加连接器】按钮,选择 test-k8s 连接器,点击【保存】按钮。

注:

  • 连接器是对接任意基础设施和服务的抽象对象,例如 Kubernetes,公有/私有云,虚拟机,版本控制系统等等。
  • 环境是应用部署目标,环境中可以关联若干连接器。

李维已经完成了基建工作!后续他可以在 Seal 平台接入更多不同的基础设施,添加更多沉淀了组织内 DevOps 最佳实践的应用模块,提供给研发团队使用。对于本文的工作,使用 Seal 内置的模块即可完成。

研发视角

张研是 Alpha 公司的研发,他不熟悉 Kubernetes,他想在不需要提工单给运维的情况下快速搭建开发测试环境(所谓自服务)。

项目代码仓库放置在:https://github.com/seal-demo/spring-boot-docker-sample

创建应用

张研登入Seal平台执行以下操作:

  1. 访问【应用管理】-【应用】菜单,点击【新建应用】按钮。
  2. 在【名称】中填入 myapp,点击模块配置中的【+】按钮。
  3. 在模块名称中填入 s2i,模块列表中选择 build-container-image,在Git URL中填入 https://github.com/seal-demo/spring-boot-docker-sample。
  4. 点击【Build】标签页,在 image 中填入镜像名称 registry.alpha.org/myproject/myimage:latest(注:这是张研所在Alpha公司的仓库地址,您需要换成您所用的镜像仓库地址)。
  5. 勾选【Registry Authentication】,在【Username】和【Password】中分别填入 ${secret.REGISTRY_USERNAME}${secret.REGISTRY_PASSWORD}。Seal的UI会引导填写对已配置密钥的引用。点击【确定】保存构建镜像模块的配置。
  6. 点击【模块配置】中的【+】按钮。
  7. 在模块名称中填入 web,确认模块列表中选择 webservice,在【Image Name】中填入 ${module.s2i.image},Seal的UI会引导填写对其它模块输出的引用。
  8. 修改 Ports 为 8888 端口(这是张研所用代码监听的端口)。点击【确定】保存web服务模块的配置。
  9. 点击【保存】按钮保存应用配置。

部署应用

现在张研可以在Seal上一键部署测试环境了:

  1. 进入 myapp 应用详情页。
  2. 点击应用信息右侧的【+】号添加实例按钮。
  3. 在名称中填入 dev1,选择运维团队(李维)提供的 development 环境。点击【确定】按钮创建应用实例。

    4 等待部署完成,并在UI上出现该应用实例的访问地址。





TADA!张研现在可以访问他的服务测试环境了!后续他可以将该应用共享给其它的开发测试成员,创建多个应用实例。

总结

本文通过两种角色视角的职责划分,展示了 Seal 如何实现研发和运维关注点分离;通过从源码到 Kubernetes deployment 的部署,展示了Seal 的应用模型抽象。当然不止于此,一个应用模块可以是构建逻辑、云原生工作负载,也可以是传统部署负载或是其它的资源抽象。

 

欢迎来探索更多功能!

研发运维双管齐下!Seal AppManager的正确打开方式的更多相关文章

  1. DevOps Workshop 研发运维一体化(北京第二场) 2016.04.27

    北京不亏为首都,人才济济,对微软DevOps解决方案感兴趣的人太多.我们与微软公司临时决定再家一场培训. 我之前在博客中(DevOps Workshop 研发运维一体化第一场(微软亚太研发集团总部)h ...

  2. InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式

    InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式 https://mp.weixin.qq.com/s/HGa_90XvC22anabiBF8AbQ 在这篇文章里,我将讨论在MySQL 5 ...

  3. C++11随机数的正确打开方式

    C++11随机数的正确打开方式 在C++11之前,现有的随机数函数都存在一个问题:在利用循环多次获取随机数时,如果程序运行过快或者使用了多线程等方法,srand((unsigned)time(null ...

  4. iOS开发小技巧--相机相册的正确打开方式

    iOS相机相册的正确打开方式- UIImagePickerController 通过指定sourceType来实现打开相册还是相机 UIImagePickerControllerSourceTypeP ...

  5. Xcode 的正确打开方式——Debugging(转载)

    Xcode 的正确打开方式——Debugging   程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不可避免地需要使用 Xcode.这篇博客就主要介绍了 Xcode 中几种能 ...

  6. C#语法——泛型的多种应用 C#语法——await与async的正确打开方式 C#线程安全使用(五) C#语法——元组类型 好好耕耘 redis和memcached的区别

    C#语法——泛型的多种应用   本篇文章主要介绍泛型的应用. 泛型是.NET Framework 2.0 版类库就已经提供的语法,主要用于提高代码的可重用性.类型安全性和效率. 泛型的定义 下面定义了 ...

  7. Console控制台的正确打开方式

    Console控制台的正确打开方式 console对象提供了访问浏览器调试模式的信息到控制台 -- Console对象 |-- assert() 如果第一个参数断言为false,则在控制台输出错误信息 ...

  8. 任务队列和异步接口的正确打开方式(.NET Core版本)

    任务队列和异步接口的正确打开方式 什么是异步接口? Asynchronous Operations Certain types of operations might require processi ...

  9. (一)Redis for Windows正确打开方式

    目录 (一)Redis for Windows正确打开方式 (二)Redis for 阿里云公网连接 (三)Redis for StackExchange.Redis 下载地址 官网.中文网1 及 中 ...

  10. List的remove()方法的三种正确打开方式

    转: java编程:List的remove()方法的三种正确打开方式! 2018年08月12日 16:26:13 Aries9986 阅读数 2728更多 分类专栏: leetcode刷题   版权声 ...

随机推荐

  1. 常用功能系列---【JWT生成Token实现接口登录认证方案思路】

    JWT生成Token实现接口登录认证方案思路 方案一(双token实现无感刷新) 在token中,refreshToken的作用主要是避免token过期时,前端用户突然退出登录,跳转至登录页面. 但是 ...

  2. centos7 系统运行中做raid磁盘阵列

    插入磁盘 lsblk查看磁盘总体情况 对sdb1等需要做的硬盘进行制作 fdisk /dev/sdb 开始 n 创建 p 给资源回车 重选代码 t 确认磁盘阵列代码 fd 保存w 首先安装工具 mda ...

  3. H5软键盘回车事件

    //软键盘回车事件 document.onkeydown = function (event) { var e = event || window.event; if (e.keyCode === 1 ...

  4. Vue3 向window注入方法 TS警告 元素隐式具有 "any" 类型,因为索引表达式的类型不为 "number" 问题解决。

    window['funcName'] = function(){}; // 'funcName'会标红警告 (window as any).funcName = function(){}; // 正确 ...

  5. 关于 indy Idhttp Post数据抛异常 connection closed Gracefully

    delphi 使用indy -idHttp 控件post 数据时 会报connection closed Gracefully这个异常的问题. 网上找了很多方法最多的就是 修改: MyHttp.Req ...

  6. flask-script的简单使用

    1.Flask-Script介绍Flask-Script的作用是可以通过命令行的形式来操作Flask.Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定 ...

  7. 2.3Dmax界面_视图调整

    一.试图模型显示效果的切换 '默认是真实显示效果' 线框模式 快捷键F3 ----> 真实显示效果和线框显示效果的切换(切换到线框显示效果再按F3就切换到了真实显示效果). 线面模式 快捷键F4 ...

  8. 深入理解css 笔记(完)

    一个网站,从看起来还可以,到看起来非常棒,差别在于细节.在实现了页面里 某个组件的布局并写完样式之后,不要急着继续,有意识地训练自己,以挑剔的眼光审视刚刚完成的代码.如果增加或者减少一点内边距是不是看 ...

  9. mac下webstrom卡顿快速解决办法

    vim /Applications/WebStorm.app/Contents/bin/webstorm.vmoptions 一路回车 直到看到: 按insert 将顶部以下两项原有值修改为以下值: ...

  10. Keepalived+HAProxy基于ACL实现单IP多域名负载功能

    编译安装 HAProxy 新版 LTS 版本,编译安装 Keepalived 开启HAProxy多线程,线程数与CPU核心数保持一致,并绑定CPU核心 因业务较多避免配置文件误操作,需要按每业务一个配 ...