新一代应用统一部署管理平台 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. Reincarnation

    HDU4622 Now you are back,and have a task to do: Given you a string s consist of lower-case English l ...

  2. CF1430

    CF1430 那个博客搭好遥遥无期. A: 看代码. #include<bits/stdc++.h> using namespace std; int main() { int t;sca ...

  3. conceive of NIO

    设想需要传递数据的两端 输入端与接收端 1.字符存储格式不同,需unicode 2.保存格式不通,需格式化 传输数据时 1.需要介质(通道) 2.需要对数据进行输入端接收端都能识别的格式. 3.需要将 ...

  4. 【Unity】拖动图片生成对应Image

    写在前面 拼UI时会用到多个Image,一般操作是:①新建一个Image,②拖入Image用到的图片,③SetNativeSize,④关闭不必要的raycastTarget .为了能尽快拼完UI,我写 ...

  5. 1005.Django自定义过滤器及标签

    一.关于自定义 自定义的引入 内置函数--------->自定义函数 内置模块--------->自定义模板 内置过滤器------>自定义过滤器 内置标签---------> ...

  6. 关于TCP协议传文件的例子

    按照惯例,先来进行复习,这也是自学巩固的一个过程 首先是在工程文件PRO里,需要增加network,这个是引用TCP监听套接字和连接套接字的前提 第二部,在服务端头文件server.h进行基础的配置: ...

  7. .net Core使用Knife4jUI更换Swagger皮肤

    Knife4j的前身是swagger-bootstrap-ui,前身swagger-bootstrap-ui是一个纯swagger-ui的ui皮肤项目 官网实战指南:https://doc.xiaom ...

  8. 中文数据导入到hive,出现乱码

    中文数据导入到hive,出现乱码 解决方法: 右键要导入的数据文件,选择用Notepad++打开,然后点击"编辑"-->转为UTF-8,最后保存即可. 然后在上传到指定路径下 ...

  9. mysql 5.7启动报错

    mysql 5.7  yum 安装完启动报错,如图: 处理步骤:查看/etc/my.cnf 数据存放目录,将里面内容移除到/opt后,启动mysql正常.

  10. Java笔记第十一弹

    TCP通信程序 TCP发送数据 //需要进行三次握手 import java.io.*; public class Main{ public static void main(String[] arg ...