JFrog 高欣 Kubernetes上的DevSecOps ——JFrog的Kubernetes之旅

2020-03-01 206浏览

  • 1.面向Kubernetes的DevSecOps ——JFrog的Kubernetes之旅 高欣 JFrog 架构师
  • 2.
  • 3.讲师简介 高欣 • 博士 • JFrog架构师 • 前IBMer • 敏捷、DevOps、。。。 • 软件产品/云服务 研发、测试、运维、服务、。。。
  • 4.演讲大纲 JFrog内部的Kubernetes实践 o 我们正在做的: ➢ JFrog的应用和服务全面Kubernetes化 ➢ 内部的研发和测试环境全面Kubernetes化 o 我们要分享的: ➢ 实践中积累的教训和经验
  • 5.背景介绍 要解决的问题 o用户安装部署JFrog产品复杂 o无法快速搭建JFrog产品的全功能测试环境 ➢无法实现按需使用:开发、测试、技术支持、产品、解决方案。。。任意团队 o 无法为每个分支提供独立的CI/CD流水线支撑 ➢无法让研发有独立的沙箱环境进行自测 ➢CI/CD流程混乱
  • 6.背景介绍 Kubernetes is hard!
  • 7.案例成果 实践的成果 o 为客户提供全产品线的Helm Charts交付方式 ➢Helm install stable/Artifactory-ha o 云端服务Kubernetes化 ➢GoCenter:http://gocenter.ioo产品的CI/CD直接对接到Kubernetes环境 ➢每周部署100+不同产品线、任意版本组合的测试环境,每次部署超过50种 微服务 ➢为每个研发、每个分支,按需提供完全独立的测试环境
  • 8.成功要点 o 起步:熟悉Kubernetes o 规划:面向Kubernetes的改造 o 编排:Helm Charts o 部署:自动、监测 o 安全:DevSecOps
  • 9.起步:熟悉Kubernetes —— 从小处入手 o第一个Kubernetes环境 ➢自己探索:Kubernetes The Hard Way,Kelsey Hightower (https://github.com/kelseyhightower/kubernetes-the-hard-way) ➢公有服务:AKS、EKS、GKE、阿里、腾讯、。。。 ➢私有部署:miniKube、Rancher、。。。 o 第一个Kubernetes应用 ➢从小的示例应用开始,如Nginx ➢每次只设定一个小的、具体的目标 ➢充分利用现有的教程和演示
  • 10.规划:面向Kubernetes的改造 The Twelve-Factor App (https://12factor.net/zh_cn/) I. 基准代码:一份基准代码,多份部署 VII. 端口绑定:通过端口绑定提供服务 II. 依赖:显式声明依赖关系 VIII.并发:通过进程模型进行扩展 III. 配置:在环境中存储配置 IX.易处理:快速启动和优雅终止可最大化健壮性 IV. 后端服务:把后端服务当作附加资源 X.开发环境与线上环境等价:尽可能的保持开发, V. 构建,发布,运行:严格分离构建和运行 预发布,线上环境相同 XI.日志:把日志当作事件流 VI. 进程:以一个或多个无状态进程运行应用 XII.管理进程:后台管理任务当作一次性进程运行
  • 11.规划:应用的Kubernetes改造 仅仅把应用装进Docker是远远不够的 o 日志 ➢STDOUT/STDERR ➢处理足够多的日志文件 o 持久化数据 ➢哪些数据需要持久化存储? o 合理地处理SIGTERM信号 ➢ Shutdown必须是受控的 ➢ Recovery必须是容易的 o 重启 ➢ 如何处理上一次运行的遗留数据?
  • 12.规划:应用的Kubernetes改造 高可用将是新的标准配置 o 保证良好的持久性和可用性 o 不停机的滚动升级 ➢ 保证向后兼容 o 支持同时运行多个应用实例 o K8s调整中的0宕机 ➢支持负载均衡 ➢ Cluster Scale-up、Scale-down ➢Scale-up、Scale-down必须是顺畅的 ➢ 计划中的Node维护 ➢ 非计划的Node宕机
  • 13.规划:配置的Kubernetes改造 运行环境的资源使用必须是受限的 o Pod的资源限制! o 应用本身也需要资源限制 …resources:requests:memory:'>memory: