《2019年从VM到Kubernetes-JFrog的Kubernetes落地实践.pdf》由会员分享,可在线阅读,更多相关《2019年从VM到Kubernetes-JFrog的Kubernetes落地实践.pdf(36页珍藏版)》请在三个皮匠报告上搜索。
1、GOP S 全 球 运 维 大 会 2019上 海 站GOP S 全 球 运 维 大 会 2019上 海 站从VM到KubernetesJFrog的K8s落地实践GOP S 全 球 运 维 大 会 2019上 海 站目录背景1从VM到Kubernetes2基于元数据的持续交付3DevSecOps制品安全管理4GOP S 全 球 运 维 大 会 2019上 海 站Kubernetes in Production“By2023,Kuberneteswillbedeployedinmorethan80%ofallon-premisesprivatecloudandcloud-inspiredenvi
2、ronments,upfromlessthan10%today”.GartnerresearchdataGOP S 全 球 运 维 大 会 2019上 海 站Kubernetes Use CasesGOP S 全 球 运 维 大 会 2019上 海 站1.为JFrog产品提供新的交付方式 提供全产品线的Helm Charts交付方式:Helm install stable/Artifactory-ha2.云端服务Kubernetes化 GoCenter:http:/gocenter.io3.产品的CI/CD直接对接到Kubernetes环境 为每个研发、每个分支,按需提供完全独立的测试环境 每
3、周部署100+不同产品线、任意版本组合的测试环境,每次部署超过50种微服务JFrog的Kubernetes实践GOP S 全 球 运 维 大 会 2019上 海 站目录背景1从VM到Kubernetes2基于元数据的持续交付3DevSecOps制品安全管理4GOP S 全 球 运 维 大 会 2019上 海 站Docker是被隔离、资源受限的进程Docker是什么?宿主机NamespacescgroupsUnionFSNamespacescgroupsUnionFSGOP S 全 球 运 维 大 会 2019上 海 站进程 Docker?APPTomcatMySQLAPPTomcatMySQL
4、GOP S 全 球 运 维 大 会 2019上 海 站Docker管理单进程进程 Docker?APPTomcatMySQLAPPTomcatMySQLGOP S 全 球 运 维 大 会 2019上 海 站什么是Pod Kubernetes的原子调度单元Docker PodAPPTomcatMySQL1G1G1G2.5G3G?APPTomcatMySQL1G1G1G2.5G3GPodGOP S 全 球 运 维 大 会 2019上 海 站1.Pod-容器组是一组共享了某些资源的容器 共享同一个Network Namespace 共享同一个Volume2.紧密协作的一组容器 sidecarinit
5、容器 在应用容器启动前运行 准备存储 初始化设置sidecar容器 和应用容器同时运行 维护 日志收集 监测 代理应用 PodAPPTomcatMySQLAPPTomcatPod1MySQLPod2FluentbitcontainerLogsLogCollectorGOP S 全 球 运 维 大 会 2019上 海 站1.资源限制 Pod要有资源限制 Docker本身也要有资源限制2.运行状态 readinessProbe livenessProbe面向Pod的应用改造3.数据管理 日志 持久化数据4.启/停处理 Shutdown必须是受控的 Recovery必须是容易的 遗留数据的处理GOP
6、 S 全 球 运 维 大 会 2019上 海 站面向集群化的应用改造高可用将是新的标准配置1.保证良好的持久性和可用性2.支持同时运行多个应用实例 支持负载均衡 Scale-up、Scale-down必须是顺畅的3.不停机的滚动升级 保证向后兼容4.K8s调整中的0宕机 Cluster Scale-up、Scale-down 计划中的Node维护 非计划的Node宕机GOP S 全 球 运 维 大 会 2019上 海 站目录背景1从VM到Kubernetes2基于元数据的持续交付3DevSecOps制品安全管理4GOP S 全 球 运 维 大 会 2019上 海 站5步实现Kubernetes
7、 CI/CD流水线GOP S 全 球 运 维 大 会 2019上 海 站基于元数据的持续交付流水线GOP S 全 球 运 维 大 会 2019上 海 站BUILD/PKGCI/CDSOURCECONTROLDEPLOYowBINARIESWaterfallKanbanAgile/ScrumDevOps(tools)METHOD19902000Now2010软件包软件包版本管理混乱版本管理混乱问题:二进制包种类增多GOP S 全 球 运 维 大 会 2019上 海 站开发团队GitlabJenkinsMaven库Nexus开发团队GitlabJenkins开发团队GitlabJenkins开发团
8、队SVNJenkins开发团队GitlabJenkins开发团队SVNJenkins开发团队GitlabJenkins开发团队SVNBambooDocker库DockerRegistryNPM库NPMC#,.Net库Nuget开发团队SVNMSbuild开发团队GitlabJenkinsFTP/SVNAnsibleKubernetesShell容易宕机不支持高可用工具碎片化不支持多地复制不支持容灾问题:制品管理复杂GOP S 全 球 运 维 大 会 2019上 海 站开发团队GitlabJenkins开发团队GitlabJenkins开发团队GitlabJenkins开发团队SVNJenkin
9、s开发团队GitlabJenkins开发团队SVNJenkins开发团队GitlabJenkins开发团队SVNMSBuild开发团队SVNBamboo开发团队GitlabJenkins制品库管理统一管理Shell统一发布流程0宕机高可用工具统一异地复制一键容灾方案:制品统一管理GOP S 全 球 运 维 大 会 2019上 海 站持续交付流程标准化Docker-Dev仓库Docker-Test仓库Docker-Prod仓库Libs-Dev仓库Libs-Test仓库Libs-Release仓库权限安全高可用RESTAPI自动化包升级异地复制Shell方案:一次构建,多次升级GOP S 全 球
10、运 维 大 会 2019上 海 站问题:信息分隔GOP S 全 球 运 维 大 会 2019上 海 站流水线信息测试结果发布部署信息构建信息需求&版本控制信息方案:制品的元数据管理GOP S 全 球 运 维 大 会 2019上 海 站方案:单个制品的元数据记录GOP S 全 球 运 维 大 会 2019上 海 站方案:基于元数据的质量检测左移GOP S 全 球 运 维 大 会 2019上 海 站方案:基于元数据的自动版本选择GOP S 全 球 运 维 大 会 2019上 海 站方案:基于元数据的分级流水线GOP S 全 球 运 维 大 会 2019上 海 站1.1 版本控制1.2 持续集成服务
11、基础数据1.从code到Artifact仓库2.从 Artifact 仓库到可运行的服务Build Stage标准交付件标准交付件Run Stage2.1 环境创建2.2 服务器自动化2.3 代码部署2.4 服务监控3.2 测试环境3.3 准生产环境3.4 生产环境3.从开发环境到生产环境1.3 Artifact 仓库3.1 3.1 开发环境开发环境对开发透明对开发透明3.统一发布基础数据标准交付件+方案:交付件的整体交付GOP S 全 球 运 维 大 会 2019上 海 站目录背景1从VM到Kubernetes2基于元数据的持续交付3DevSecOps制品安全管理4GOP S 全 球 运 维
12、 大 会 2019上 海 站我们的代码0.1%在整个软件中LinuxLandscapeNode_modulesNode.jsKubernetes18.5%25.7%3.8%51.9%0.1%0.1%问题:外部依赖增多GOP S 全 球 运 维 大 会 2019上 海 站问题:外部依赖的安全漏洞GOP S 全 球 运 维 大 会 2019上 海 站方案:DevSecOpsGOP S 全 球 运 维 大 会 2019上 海 站方案:安全元数据漏洞的影响范围GOP S 全 球 运 维 大 会 2019上 海 站方案:安全检测左移GOP S 全 球 运 维 大 会 2019上 海 站方案:安全检测持续
13、跟踪GOP S 全 球 运 维 大 会 2019上 海 站开发者制品仓库DMZ仓库公网仓库建立信任规则漏洞库商业开源白名单周期永久CI构建JCenterDocker HubMaven Docker代理远程仓库Mavendocker通过信任包第三方包非信任禁止下载X公网漏洞数据库定时更新SecurityNVDVulnDB表单申请申请原因影响分析包名版本号.研发安全运维 建立DMZ仓库代理公网仓库。制品仓库通过DMZ仓库拉取第三方包,实现网络环境隔离。根据漏洞扫描结果为基础,建立信任规则;原则上有漏洞的包不允许被制品仓库下载。建立包白名单机制。特殊需求提交审批备案,通过后允许申请用户下载非安全包。方案:制品安全白名单仓库建设