关于部署:软件高效自动化部署华为云部署服务CodeArts-Deploy

随着互联网、数字化的倒退,公司机构与各类企业往往须要进行大量频繁的软件部署,部署设施类型多样,如:本地机器、云上裸金属服务器、云上虚拟机与容器等。 面对多种部署模式、分布式简单运行环境,该如何用最短时间、高质量、安全可靠的进行软件部署呢? 有这样一款部署服务——继续部署,通过频繁的、标准化、自动化的形式,将软件疾速交付到生产环境。从开发人员提交代码到编译、测试、部署,全流程无人干涉,齐全自动化执行。这种模式与部署能力,能够大幅放慢软件版本上线速度,保障新性能第一工夫被用户应用。 它就是华为云继续部署服务CodeArts Deploy 通过模块化自在编排部署流程,实现软件的自动化部署,帮忙企业软件产品的疾速、高效、高质量交付。

July 12, 2023 · 1 min · jiezi

关于部署:5分钟部署百台云上计算机22支参赛队伍快速接入南网电力调度AI应用大赛

计算工夫从分钟级晋升到秒级、清洁能耗进步到99%、前三名AI调度员在计算工夫、危险断面管制、清洁能源消纳、零碎运行老本等多维度超过了人工.......这是第四届电力调度AI利用大赛播种的成绩。 近日,由南方电网总和谐电机工程学会电力系统自动化专委会主办的AI利用大赛在广州落幕,赛事期间聚合了22支参赛队伍,并通过阿里云无影云电脑部署了可用于近程调用的虚构开发环境,让选手们在9天内开发、训练和部署了数组AI在线调度员。 南方电网从2019年初开始就启动电力调度AI利用大赛,并在2022年实现行业内首次将AI真正使用于电网生产调度,往年更是引入了强化学习等技术,来解决新型电力系统调度面临的大规模实时决策问题。 残缺内容请点击下方链接查看: https://developer.aliyun.com/article/1174631?utm_content=g_10... 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

May 10, 2023 · 1 min · jiezi

关于部署:使用K8S进行蓝绿部署的简明实操指南

在之前的利用部署系列文章里,咱们曾经介绍过什么是蓝绿部署。如需回顾,点击下方文章链接即可重温。本文咱们将会介绍如何应用 Kubernetes 实现蓝绿部署。  利用部署初探:3个次要阶段、4种常见模式利用部署初探:微服务的3大部署模式利用部署初探:6个保障平安的最佳实际 后期筹备: Kubernetes 集群kubectl要部署的应用程序的 Docker 镜像 如果你曾经准备就绪,那么咱们就开始部署啦!  Step 1:创立命名空间首先,咱们须要创立命名空间来部署咱们的应用程序。输出以下命令即可:kubectl create namespace blue-green  Step 2:创立部署接下来,咱们须要创立2个部署,一个是蓝环境,另一个是绿环境。除了标签之外,两个部署应该是雷同的(标签次要是为了分别哪个是蓝环境,哪个是绿环境)。以下是部署 manifest 示例: apiVersion: apps/v1kind: Deploymentmetadata: name: myapp-blue labels: app: myapp env: bluespec: replicas: 3 selector: matchLabels: app: myapp env: blue template: metadata: labels: app: myapp env: blue spec: containers: - name: myapp image: myapp:v1.0 ports: - containerPort: 80将 manifest 保留为 blue-deployment.yaml,并应用以下命令在蓝环境中创立部署: kubectl apply -f blue-deployment.yaml -n blue-green  同理,通过在 manifest 文件中更改名称和标签来在绿环境中创立另一个部署,并将其保留为 green-deployment.yaml。接下来,应用以下命令将其部署在绿环境: kubectl apply -f green-deployment.yaml -n blue-green  ...

March 20, 2023 · 2 min · jiezi

关于部署:应用部署初探6个保障安全的最佳实践

在之前的文章中,咱们理解了利用部署的阶段以及常见的部署模式,包含微服务架构的利用应该如何部署等根本内容。本篇文章将介绍如何平安地部署应用程序。  平安是软件开发生命周期(SDLC)中的要害局部,同时也须要成为 SDLC 中每个环节的一部分,尤其是部署。因而,保障利用部署平安并不是开始于部署阶段,而是从写下第一行代码开始就须要将平安纳入思考的因素,即平安左移。  本文将会介绍6个保障利用部署平安的最佳实际,帮忙您防止平安问题。这些最佳实际还能够保障部署过程的速度不受影响。  1、管制部署的触发形式开发团队应该谨慎治理触发主动部署到生产环境的代码,生产部署不应该从不受信赖的代码库、fork或者分支中进行。  2、理解开发环境的平安问题在启动一个新的软件我的项目之前,让开发团队相熟相干零碎环境的平安最佳实际是至关重要的。例如,Kubernetes 的平安上下文设置能够帮忙开发团队了解 Kubernetes 平安的根本内容。当开发团队理解这些基础知识之后就能够极大水平缩小人为谬误。  这之所以重要是因为 Kubernetes 是历史上倒退最迅速的开源我的项目之一,它被广泛应用于云原生开发和部署,对 Kubernetes 的平安最佳实际有深刻理解能够帮忙团队防止平安失误,其余的容器编排零碎也同理。  3、施行密钥策略当应用动静服务来解决配置变动时,它们(或相似服务)也应该会解决相干的密钥。它们在运行时将密钥传递给容器,同时应用对立的策略来解决密钥,确保不同类型的密钥(即运行时与构建密钥)不被混同,并放弃测试和开发顺利。  应用程序仅须要在打包时构建密钥(比方,我的项目repo或文件存储凭证)。运行时密钥只有在部署之后才是必要的(比方,私钥、数据库明码以及 SSL 证书),因而开发者仅需传递必要的密钥到应用程序即可。  具体的策略并不重要,重要的时候保持采纳对立的策略。每个团队都必须在所有环境中应用雷同的密钥解决策略,使其更容易跟踪密钥。这个策略应该是灵便的,以便于测试和部署。重点应该是密钥的应用,而不是其起源。   4、采纳 GitOps 实际GitOps 正逐步成为平安的云原生和以Kubernetes为核心的CI/CD的首选办法。它同时提供了平安和疾速部署,这是以后任何软件开发我的项目中最重要的两个方面。  依据许多优良的开发人员和工程师的说法,GitOps 是一系列针对 Kubernetes 环境的实际,尤其是当单个集群资源被多个用户或团队共享时。  GitOps能够与 Kubernetes 的性能(如命名空间)协同工作,确保多个租户以平安的形式应用资源。这些做法通过放弃租户之间的隔离、缩小平安和可读性的危险来实现。当所有用户都在进行批改时,这一点尤其有帮忙。  应用像 GitOps 这样的模式,能够确保任何用户所做的任何扭转在进入最终构建之前都会被跟踪和批准。这不仅能够管理应用程序的更新,而且如果某个更新并没有像预期那样工作时,你能够轻松回滚到以前的版本。  5、永远别用默认配置如果你正在应用开源我的项目,那么千万别用它们的默认配置,这点尤为重要。默认配置不肯定与你的安全策略统一,因为它们关注的是商业、经营和性能上的胜利,而不是平安。此外,它们是常识,任何人都能够利用它们。在这种状况下,你能够寻求商业平台和供应商的帮忙。  这方面的一个典型例子是,在应用 Kubernetes 时,部署及其 pod 没有网络分段策略。这让所有的资产在它们之间进行通信。如果开发者想疾速建设一个应用程序,这种默认设置是很不便的,但保留默认设置意味着,如果一个容器被攻打,威逼就会迅速蔓延。  6、作为部署的一部分运行自动测试通过三思而行的测试能够帮忙你对代码的安全性取得信念,反之蹩脚的测试会障碍你。如果条件容许的话,将测试自动化,使其反对部署流水线。简略的“测试”能够在每次代码批改时运行,资源密集型的测试能够保留到重要的版本。不要漠视失败的测试,你须要从新评估和重构不起作用的测试。

February 17, 2023 · 1 min · jiezi

关于部署:应用部署初探3个主要阶段4种常见模式

利用部署是一个将软件提供给用户的过程,通常蕴含配置环境、装置及测试等步骤。现如今,大部分企业在部署新的应用程序时,会至多自动化其中一些步骤。应用程序部署的策略会影响该利用的性能、稳定性以及运行速度,因而有时会在向所有人提供更新之前,先对一小部分用户进行测试。  软件开发和用户体验的古代规范要求开发人员继续地更新他们的我的项目。部署和集成曾经成为日常操作——一个古代的应用程序每天都须要部署。这就是为什么当初领有一个无效的部署技术比以往任何时候都更重要。  当下,企业谋求更为灵便和可扩大的零碎,因而微服务架构、云基础设施变得随处可见。灵便的架构意味着诸多开发团队会关涉其中,这会给部署带来挑战。  本文将介绍利用部署过程的几个次要阶段以及不同的利用部署模式。  利用部署的次要阶段后期筹备/打算阶段在打算筹备阶段,以下步骤非常重要: 确认合作方: 软件开发的过程中会波及到不同的团队。部署前应该告知所有合作方,以尽量减少开发、运维和平安团队之间的摩擦。列出第三方工具: 确定部署流程中所须要的所有工具以及要求,这能够帮忙你确保所有合作方都晓得如何无效地应用它们并且最大限度地缩小问题的产生。设置测试环境: 在正式公布新产品前,肯定要测试软件设计清晰的部署步骤: 与团队亲密沟通以确保部署流程清晰明了创立回滚打算: 如果新版本呈现重大的问题能够启用这一打算。渐进式交付策略让无缝主动回滚部署成为可能。设置性能监控指标: 罕用的指标有内存、CPU使用率以及查问响应工夫。你能够应用这些根本指标和自定义KPI来掂量部署的有效性。在渐进式交付中,你甚至能够应用这些指标来主动确定部署是否胜利。 测试阶段测试阶段能够在部署之前验证软件是否牢靠。在这一阶段中,须要思考以下方面: 编写单元测试: 其目标是测试软件的其中某个局部,以验证其独立于其余局部的行为是否能够失常运行。当后果与需要统一时,单元测试通过,否则失败。在CI流程中集成测试: 将单元测试集成到共享代码仓库中以自动化构建和验证每个局部。在部署之前实现这个步骤能够更轻松地修复和移除bug。在staging环境中部署测试: 模仿生产环境,并应用它来测试更新、代码及其他方面,以确保软件按预期运行。运行端到端的测试: 从头到尾测试应用程序的工作流程,过一遍它能够执行的操作,查看它是否能够与其余组件(如网络连接、硬件等)一起失常运行。验收测试: 这是测试流程的最初一步,须要与相干方或实在用户一起验证软件。他们的反馈能够帮忙决定软件是否生产就绪。冒烟测试: 创立一个专门的测试套件,在部署之后在生产中运行,以验证刚刚公布的软件没有缺点。 部署及公布阶段利用部署的最终阶段,包含以下方面: 部署到生产环境: 将更新推送到生产环境中,用户能够应用它们。监控产品性能: 依据KPI来监测产品的性能,查看HTTP errors和数据库性能等。监控环境衰弱: 借助监控工具来辨认软件环境相干的潜在问题,比方操作系统、数据库系统以及编译器等。执行自动化回滚: 借助冒烟测试和指标来掂量公布是否胜利并且当存在问题时主动回滚到上一个版本。跟踪日志: 借助日志取得软件运行的可见性,比方理解软件如何运行在基础设施上,如何考察谬误并辨认潜在的平安危险。记录公布的版本和正文: 保留对产品进行批改时创立的新版本的正本,这有助于放弃一致性。 利用部署模式金丝雀公布金丝雀公布能够逐个公布新个性,而非残缺的更新版本。开发人员让旧版本处于沉闷状态,并比拟更新前后的实例性能。此外,金丝雀发布会先将新性能提供给一小部分用户应用,依据小范畴的用户反馈对产品进行必要的调整。  以下是金丝雀公布的根本步骤: 开发人员上传新版本(假如其为Version B)到服务器。次要用户群体仍旧定向到 Version A,与此同时,小局部用户开始应用 Version B,进而开发人员能够监控新版本的性能并进行改良。对 Version B 进行必要的调整之后,开发人员就会将大部分流量定向到更新结束的实例中。此时团队开始测量性能并将其与旧版本进行比照。当 Version B 曾经足够稳固,开发人员就会切断 Version A 并将流量齐全重定向到更新后的代码库中。 要保障金丝雀公布的胜利,开发人员必须设置清晰的性能指标,原始版本和金丝雀版本(更新版本)应该同时在雷同的条件下部署,以更主观地进行剖析。  金丝雀公布的劣势之一是能够最大限度地缩小宕机工夫并且防止新版本中存在潜在的问题。 此外,通过在小局部用户中测试个性,开发人员能够在对更多用户产生影响之前发现并修复问题,这有助于确保新性能或更新不会对用户体验产生负面影响。  这种部署模式也存在缺点——非常耗时。金丝雀的测试和部署是分几个阶段进行的,须要工夫进行彻底的监控和评估。正因为如此,不是所有用户都能马上从新的性能和降级中受害。  正如许多同时运行两个版本的部署策略一样,开发人员须要牢记并确保技术栈和数据库的兼容性。  蓝/绿部署蓝/绿部署是指同时部署两个利用版本,以后版本(蓝)和新版本(绿)在不同的环境中运行,并且只有一个版本是实时运行的。当绿版本进行测试时,蓝版本持续运行,反之亦然。两个版本都能够处于沉闷状态,但只有一个是公开的(通常是蓝版本)。  当测试实现、新部署就绪,就能够平安地切换流量到绿版本。尔后,蓝环境能够保留下来以执行回滚操作或在将来的更新中应用此前的性能。  蓝/绿部署简直打消了宕机工夫并容许即时回滚。 蓝/绿环境的隔离能够爱护实时部署在测试阶段免受 bug 的影响。尽管这种部署策略的危险较低,但施行老本较高,因为必须笼罩两个环境进行操作,会减少存储空间、计算能力及硬件等老本。为了在蓝绿环境之间无缝切换,开发团队还须要保障数据格式和存储的兼容性。  滚动部署应用滚动部署,开发人员能够同时上传几个版本——沉闷的版本数量被称为窗口大小(window size)。开发者能够1次只上传1个实例(即窗口大小设置为1)或在集群中同步更新部署应用程序。为了更快且更平安地部署,开发人员经常应用容器技术。容器利用部署包含 Docker 和 Kubernetes,它们是隔离更新版本、启用和禁用服务以及跟踪变动的常用工具。  滚动部署提供了灵活性,并缩小了停机工夫,因为它只在新版本筹备好之后再将流量重定向到新版本。 同时,它也升高了部署危险,因为更新存在的缺点只影响到无限的用户。然而这一部署办法回滚速度较慢,因为它须要一个渐进的办法。  另外,新的部署必须向下兼容,因为它们须要与旧版本共存。如果应用程序须要会话继续存在,那么确保负载平衡反对粘性会话也非常重要。  影子(Shadow)部署影子部署蕴含两个沉闷的平行版本,将传入申请 fork 到以后版本,而后将它们发送到新版本。这种办法有助于测试新性能如何在不影响流量的状况下解决生产负载。当新版本满足性能和稳定性要求后,即可平安上线利用。  尽管这种模式非常业余,设置起来也简单,但它打消了对生产的影响,利用流量复制来测试应用影子数据的bug。测试后果是高度精确的,因为它们应用生产负载来创立模仿事实条件。影子部署被认为是一种低危险的办法,并常常与其余办法相结合,比方金丝雀部署。  执行影子部署的步骤: 利用层级的实现: 开发人员编写的函数既能够向应用程序的以后版本也能够向新版本发送输出。输出和输入能够同时解决,也能够在一个队列中异步解决,以取得更高的精度。团队能够抉择在客户端划分输出,在浏览器或挪动设施中设置不同的API指标。基础设施层级的实现: 开发人员配置负载平衡以 fork 格局以及反对两个版本的端点。开发人员须要确保没有反复,应用程序绝不能两次申请雷同的数据。新版本应该从第一版本中接管用户的信息,否则,用户将不得不反复输出领取或注册数据。影子模式后果评估: 团队须要留神数据的谬误,比拟两个版本的性能,查看新版本是否正确接管旧版本的输出。

February 1, 2023 · 1 min · jiezi

关于部署:私有化部署的低代码平台-更安全的信息化解决方案

随同着社会经济的疾速倒退和数字技术时代的降临,企业正面临着必要的数字化转型。因为生态平台化的强化,以云端部署为主的低代码产品给咱们带来了便利性,但也有一系列问题逐步裸露,如服务器不稳固、数据安全隐患等问题。不少IT开发企业对数据安全要求高,心愿领有高稳固、高保真的数据安全爱护,越来越多的企业更偏向于将开发成绩和业务数据保留在本地,无需上传云端。在面临着平安,扩大,兼容,稳固等问题时,企业须要部署一套属于本人的私有化,平安化,扩大化数字化平台。 私有化部署是指将零碎间接部署到企业本人的服务器上,数据间接保留在企业自有的服务器。在大型国有企业、政企机构,军工,金融平台等把握着技术专利、相干行业隐衷信息、国家机密文件等重要畛域,如果服务器部署在第三方或者蒙受到守法分子监控及歹意攻打,导致信息泄露,会造成经济损失甚至威逼到中央平安,那么要如何应答该类平安威逼,私有化部署就成为了信息安全的首要保障。私有化部署后,企业的敏感数据,业务数据部署在内网的本地服务器上,不仅如此,通信信息自主可控,多种算法加密、全链的数据加密、数据第三方加密,挪动端转发、分享等安全控制,设施准入、禁用、擦除等办法让外部通信更平安、让企业专属数据信息更隐密,帮忙企业爱护数据的相对平安。 对于各行业而言,产品和畛域的不同,应用的用户不同,那么对于软件的需要就会有很大的差别,一款第三方软件因为通用化并不可能满足不同类型的治理需要。对于企业而言,在不同的阶段因为治理上的调整,以及产品的调整不同,那么就须要极强的扩展性需要。 私有化部署可利用凋谢的接口将所需性能集成到已有零碎中,以最小的调整实现原有零碎革新降级,进步企业协同办公等效率。而且因为部署在自在服务器,在遇到须要数据存储扩大,数据调用,局域网管制等问题时,私有化部署便可很快解决该类型问题。因为自在服务器以及自主管控数据,除了安全性增强以外,更能够疾速自在解决,极大地提高了灵活性。 LeaRun低代码平台是一款全技术链赋能的通用型低代码开发平台,采纳对立的设计器撑持Web页面、大屏可视化、3D数字孪生、APP、表单、工作流、数据管理等性能的可视化开发,通过利落拽和配置,即可疾速实现数字化软件应用的麻利开发。抉择全源码交付实现私有化部署的LeaRun低代码平台可间接对接内网,依据客户需要,按需灵便拓展,使得IT企业客户无需拜访外网,也能实现麻利的利用开发。 私有化部署的老本不在短期,而在长期。IT开发企业客户可对LeaRun低代码平台一次性买断,一次洽购即可重复应用。企业所有的数据均保留在本地,无需上传云端,私密数据的安全性有很好的保障,能合乎窃密型我的项目的开发诉求,还不便进行二次开发、整顿。通过长周期的平台应用和多我的项目开发,来摊薄力软平台的购买老本,大幅压低我的项目研发的刚性收入,取得更多的我的项目利润。 更多软件开发性能可返回www.learun.cn/Home/VerificationForm进行体验。

August 18, 2022 · 1 min · jiezi

关于部署:SpringBoot-Angular前后端分离项目部署更新实录

零、前言第一次给零碎上线,尽管团队内曾经有其他同学写过部署文档https://segmentfault.com/a/11...,但本文中咱们须要补充一些细节,使操作更简便 本文次要是补充内容,所以假如服务器上曾经部署了运行环境、数据库和nginx。 一、连贯服务器咱们通常应用SSH连贯Linux服务器,应用scp命令在本地和服务器之间传输文件。那么有没有更不便的办法呢?答案是有的。能够借助SFTP工具,来实现图形化传输文件,就像在本人电脑操作上一样。 Windows -> WinSCP官网地址: https://winscp.net/eng/index.php这个工具能够与服务器建设SSH连贯,并且图形化浏览服务器上的文件,并反对拖拽。 MacOS -> Termius官网地址: https://www.termius.com/与WinSCP性能雷同,既能管理文件,也能执行Bash命令。并且Termius反对MacOS、Linux、Windows、Android,网上能找到谐和版本。 有了这种可视化SFTP工具后,拷贝文件就不须要再用命令行了。 二、编译我的项目Angular: // 编译Angular我的项目ng build而后就能够生成dist文件夹,angular代码全副编译成了原生JavaScript代码。稍后须要用到dist中的所有文件 SpringBoot: // 编译SpringBoot我的项目mvn clean package咱们只须要用到target中的appName.jar这个文件。 须要留神的是,编译过程会把包含配置文件在内的所有文件封装,这意味着编译后就不能随便更改端口号、数据库等各种配置信息,因而在编译前,须要把各个参数调整至与生产环境统一。 三、复制文件关上SFTP工具,找到原来的代码地位。为了稳当起见,不要间接删除上个版本的代码,而是将它们重命名(万一出错了还能复原)。而后间接把文件夹拽过来即可。 四、敞开历史我的项目的过程,启动新过程Angular因为前端应用的HTML三件套、服务器是Apache或Nginx负责,当服务器上的代码文件变更时,一刷新就能加载新的代码,所以不须要重启服务。 SpringBoot但Java我的项目一旦运行,是不能自动检测变更的,所以必须重启这个Java过程。 // 查看端口占用状况sockstat -4l | grep 后端的端口号// 举例sockstat -4l | grep 8093// 返回值(本例中,2279为过程号)// log java 2279 26 tcp46 *:8080 *:*// 敞开过程sudo kill 过程号// 举例sudo kill 2279再次查看端口占用,曾经没有过程占用此端口了。 此时才能够在我的项目根目录输出 // 在服务器后盾运行jar包,不会随着终端退出而进行运行nohup java -jar test.jar运行胜利后,控制台不会输入任何信息。但在jar包的同级目录会有一个nohup.out文件,之前在终端上看到的那些日志信息改为写入到这个文件中,只须要查看此文件就能晓得我的项目是否启动胜利了。

February 21, 2022 · 1 min · jiezi

关于部署:如何高效完成ECS多环境部署

一、背景在软件开发和部署过程中,咱们的软件往往须要在不同的运行环境中运行,例如:开发人员本地开发环境、测试团队的测试环境、还有类生产环境和生产环境。在整个研发流程的过程中,针对开发和运维,前者面向需要和代码,后者面向资源和环境,而部署,是两者都会关注的局部。通过本文,你能够理解到,如何通过云效流水线无效拉通开发与运维,突破二者之间的壁垒墙,让开发与运维高效联动。 二、用户诉求一般来说,用户应用主机部署诉求如下: 1、开发人员不须要关注资源变更,只须要按需抉择环境进行部署即可。 2、开发人员可能依据制订好的公布策略,自主公布,不须要手工配置和干涉。 3、运维人员不需关注研发平台,只需做好资源的布局治理即可。 三、云效解决方案联合云效交付流水线公布策略及ECS的标签性能,为ECS的多环境公布提供了很好的根底保障,如图: 该场景下次要会波及开发人员跟运维人员两个角色,上面文章中咱们次要会这两个角色角度进行解说。 四、云效操作实际前置条件接下来以一个 Java Spring Boot 的代码库为例,解说如何通过云效流水线进行阿里云 ECS 的多环境公布。 1、运维人员已购买相应阿里云ECS资源,并配置好相应环境,如本文案例中须要的JDK环境。 2、运维人员,依据须要,对相应ECS资源进行标签配置。标签是云资源的标识,能够帮忙您从不同维度对具备雷同特色的云资源进行分类、搜寻和聚合,让资源管理变得更加轻松。本文中ECS资源及标签设置如图所示: 标签键:environment 标签值:dev、sit、product 创立流水线1、进入云效流水线,点击右上角【新建流水线】,进入流水线创立向导页面。 2、抉择图中标识模板,并点击创立 配置代码库创立流水线之后会自动弹出增加代码源的窗口,这里抉择Flow提供的示例代码源,并进行增加 配置构建上传工作批改一下”Java构建上传“的工作,减少一个打包门路,填入deploy.sh。这个文件存在于代码库中,其中蕴含了在ECS上进行利用启动的脚本,为了进行后续的主机部署,须要将这个文件也打入到压缩包中,在后续的主机部署工作中能够看到如何应用该deploy.sh。在该配置中指定了target/和deploy.sh两个门路,所以Flow会将这两个文件(夹)打包成为一个压缩包,并进行归档,在Flow中咱们称之为制品,该制品也会在后续的主机部署工作中用到。 配置部署工作 1、接下来配置主机部署工作,在制品下拉框中抉择”制品名称.default”,也就是后面的”Java构建上传“步骤归档的那个制品。为了配置主机组,须要先创立一个,点击”新建主机组”。 2、抉择”阿里云ECS“,点击”新建服务受权”,跳转到阿里云,实现RAM受权,而后会主动跳回到Flow。 3、此时再抉择标签形式增加,顺次抉择地区、ECS标签键、ECS标签值,点击下一步。 4、在新弹出的页面中输出主机组名称及主机组环境,点击保留即可。 5、接下来进行部署脚本的配置: 下载门路:示意心愿把”构建上传”工作中的压缩包下载到机器上的什么地位,在本例的值为:/home/admin/app/package.tgz执行用户:心愿以是哪个用户的身份进行脚本执行,本例的值为:root部署脚本:在机器上执行脚本的具体内容,本例的值为:mkdir -p/home/admin/application/tar zxvf /home/admin/app/package.tgz -C/home/admin/application/sh /home/admin/application/deploy.sh restart 6、部署策略配置 暂停形式:心愿一个主机组中的机器以什么样的暂停形式进行,比方第一批暂停,每批暂停,或者不暂停。举荐应用第一批暂停,在公布完第一批之后,对线上服务进行察看,如果没有异样,则能够持续其余批的公布分批数量:心愿主机组中的机器分为几批进行公布。比方一共4台机器,分两批,则每批同时公布2台机器。本文中配置如下所示: 7、部署后果查看 点击右上角保留并执行按钮 待执行结束后,点击部署详情按钮查看部署明细。 通过IP:8080拜访验证,如下图所示: 资源变更场景因业务须要,需在开发环境中减少一台机器,运维同学只需在ECS侧筹备相应资源,打上相应环境标签即可,如下图所示。 运维同学配置结束后,开发同学不需做任何变更,间接运行相应环境流水线即可。流水线运行过程中,因为咱们之前设置的分批,第一批暂停的公布策略,因而流水线会暂停,呈现如下状态 此时点击部署详4. 情按钮,进入部署详情页面,确认没有问题后,点击持续按钮,如下图所示 五、结语通过以上的操作流程,咱们能够通过云效流水线,利用标签性能,拉通开发与运维,同时,让开发和运维关注点拆散,专一于外围的工作内容,实现高效的ECS多环境部署。 点击下方立刻体验云效流水线Flow! https://www.aliyun.com/produc... 对于咱们 理解更多对于云效DevOps的最新动静,可微信搜寻关注【云效】公众号; 福利:公众号后盾回复【指南】,可取得《阿里巴巴DevOps实际指南》&《10倍研发效力晋升案例集》; 看完感觉对您有所帮忙别忘记点赞、珍藏和关注呦;

January 24, 2022 · 1 min · jiezi

关于部署:万字长文-解读功能开关-IDCF

性能开关Feature Toggle(通常也称为性能标记Feature Flag)是一种弱小的技术,容许团队在不更改代码的状况下批改零碎行为。包含各种应用类别,在施行和治理开关时思考该形式十分重要。开关引入了复杂性。咱们能够通过应用智能开关实现实际和适当的工具来治理咱们的开关配置来管制这种复杂性,但咱们还应该致力于限度零碎中开关的数量。 作者 Pete Hodgson是旧金山湾区的一名独立软件交付参谋。他善于帮忙初创工程团队改良他们的工程实际和技术架构。Pete 之前曾在 Thoughtworks 负责过六年的参谋,领导其西海岸业务的技术实际。他还曾在旧金山多家初创公司负责技术主管。 内容 一个开关的故事开关的类别治理不同类别的开关施行技术开关配置应用带有特色开关的零碎“性能开关”是一组模式,能够帮忙团队疾速但平安地向用户提供新性能。在这篇对于性能开关的文章中,咱们将从一个简短的故事开始,展现性能开关有用的一些典型场景。而后咱们将深入研究细节,涵盖有助于团队通过性能开关取得成功的特定模式和实际。 性能开关也称为性能标记、性能位或性能翻转器。这些都是同一组技术的同义词。在本文中,我将交替应用性能开关和性能标记。 一、一个开关的故事场景描述:你隶属于从事简单城市规划模拟游戏的多个团队之一,你的团队负责外围模仿引擎,你的工作是进步网络渲染算法的效率。你晓得这将须要对施行进行相当大的检修,这将须要数周工夫。同时,你团队的其余成员将须要在代码库的相干畛域持续一些正在进行的工作。 依据过来合并长期存在的分支的苦楚经验,如果可能的话,你心愿防止为这项工作打分支。相同,你决定整个团队将持续在骨干上工作,但致力于网络渲染算法改良的开发人员将应用性能开关来避免他们的工作影响团队的其余成员或毁坏代码库的稳定性。 1.1 性能标记的诞生以下是钻研算法的两人引入的第一个变动: 退出开关之前 function reticulateSplines () { // 以后的实现在这里 }这些示例都应用 JavaScript ES2015退出开关之后 function reticulateSplines(){ var useNewAlgorithm = false; // useNewAlgorithm = true; // UNCOMMENT IF YOU ARE WORKING ON THE NEW SR ALGORITHM if( useNewAlgorithm ){ return enhancedSplineReticulation(); }else{ return oldFashionedSplineReticulation(); } } function oldFashionedSplineReticulation(){ // current implementation lives here } function enhancedSplineReticulation(){ // TODO: implement better SR algorithm } function oldFashionedSplineReticulation () { // 以后的实现在这里 } function enhancedSplineReticulation () { // TODO:实现更好的 SR 算法 }这对曾经将以后的算法实现挪动到一个 oldFashionedSplineReticulation 函数中,并将 reticulateSplines设置为一个开关点。当初,如果有人正在钻研新算法,他们能够通过勾销正文来启用“应用新算法” 性能useNewAlgorithm = true 。 ...

January 24, 2022 · 4 min · jiezi

关于部署:揭秘远程证明架构EAA机密容器安全部署的最后一环-龙蜥技术

文 / 周亮, 云原生秘密计算 SIG 核心成员。在云原生场景下,基于HW-TEE(如Intel SGX, Intel TDX 和 AMD SEV)的秘密容器技术(如 Inclavare Containers 秘密容器和 Kata CC 秘密容器)能够为用户在应用(计算)过程中的敏感数据提供了机密性和完整性的爱护。然而在云环境中,仍旧存在如下的问题: 怎么证实用户的秘密容器的确运行在云上实在 HW-TEE 环境中?怎么证实运行在云上 HW-TEE 环境中的程序或者容器内容是合乎预期的或者没有被篡改?更进一步,如果须要在云上 HW-TEE 环境里启动一个加密容器,如何在启动过程中获取容器的解密密钥?Inclavare Containers 现已是龙蜥社区云原生秘密计算 SIG 的我的项目之一。而 Inclavare Containers 的组件 Enclave Attestation Architecture (EAA) 正是为解决这些简单的问题而生的。其设计指标是在解决上述问题的根底上,提供一个反对不同类型秘密容器和 HW-TEE 环境的通用近程证实架构。EAA设计RATS 参考架构秘密计算联盟定义了 RATS 参考架构,并倡议所有近程证实服务都应该遵循 RATS 的参考架构,RATS 架构如下:EAA 架构因而 EAA 的架构设计遵循了 RATS 参考架构,EAA 架构如下: 其次要组件和性能: Attestation Agent(Attester):运行在 HW-TEE 中的组件。作用是获取 HW-TEE 中运行程序的度量值信息,该度量值信息由 HW-TEE 进行签名。Chip Manufacturer Specific Attestation Service(Endorser):运行在私有网络中,由芯片厂商提供的服务。作用是验证度量值信息的签名,以确定度量值信息的确是由实在 HW-TEE 生成的。Verdict & Reproducible Build Infrastructure(Reference Value Provider):运行在用户可信环境中的服务。作用是生成 HW-TEE 中运行程序的度量值的参考值,以断定在 HW-TEE 环境中的运行程序是合乎预期的或者程序是没有被篡改过的。Verdictd(Relying Party + Relying Party Owner + Verifier Owner):运行在用户可信侧环境中的服务。职责是调用 Chip Manufacturer Specific Attestation Service 和 Verdict & Reproducible Build Infrastructure 查看度量值信息的签名和其内容,以实现整个近程证实流程。KMS:运行在用户可信侧环境或者私有网络中的密钥治理服务。作用是进行密钥的治理。 ...

December 22, 2021 · 2 min · jiezi

关于部署:如何通过云效Flow完成自动化部署主机部署

如何通过云效Flow实现自动化部署—主机部署,云效流水线Flow是继续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,实现从开发到上线过程的继续交付。通过继续向团队提供及时反馈,让交付过程高效顺畅,Flow 提供了通用的部署能力该篇内容留神解说如何通过云效Flow实现自动化部署—主机部署 新建部署工作为了创立部署组,须要先在流水线中增加「主机部署」工作。用户能够通过以下形式增加部署工作。 应用模板新建流水线,抉择蕴含 “部署” 工作的模板在已有的流水线中,增加新的阶段,并抉择「部署」工作流水线模版创立新建流水线时,抉择对应的开发语言,能够查看以后语言下的默认流水线模版,抉择带有“部署”节点的流水线模版,即可疾速应用构建能力 。 编排流水线,增加部署工作 一、主机部署云效Flow 提供了通用的部署能力,反对业务被部署到不同国家,不同云厂商环境还有你的公有环境的主机中。 云效Flow 目前反对部署以下的主机类型: 阿里云ECS二、主机组主机组是什么?每个 Web 利用,在集成测试的环境(通常称作日常环境)、预发的环境(称作预发环境)、对外提供服务的环境(称作正式环境)等不同的环境里运行。 对应在 Flow 中,咱们把这些环境称之为「主机组」,也就是该利用运行在若干台机器(虚拟机/容器)。 前置工作 能够通过两种形式创立主机组: 办法一:通过「主机组治理」增加主机组 办法二:先在流水线中增加「主机部署」工作。用户能够通过以下形式增加部署工作。 应用模板新建流水线,抉择蕴含 “部署” 工作的模板在已有的流水线中,增加新的阶段,并抉择「主机部署」工作 如何应用增加部署工作,可查阅“部署”一节 创立主机组 在部署工作中,点击「新建主机组」,进入新建主机组的流程。 你能够创立三种类型的主机组: 阿里云ECS部署到阿里云 ECS能够出公网的非阿里云主机部署到公网主机不可拜访公网的非阿里云主机(行将上线)2、部署到阿里云 ECS 云效流水线 Flow 反对部署到阿里云 ECS 。你能够依照以下形式,将你的阿里云 ECS 退出主机组,从而让流水线能对其进行部署。 创立阿里云 ECS 类型主机组 增加形式——间接增加 1)新建主机组,抉择 【主机类型】为 "阿里云ECS" 。 2)抉择【服务受权】和【地区】,展现【可增加的主机列表】,可【新建服务受权】。 3) 抉择你想要增加至主机组的ECS主机。 4) 编辑主机信息,包含主机组名称、环境、标签;主机组成员权限的配置,创建人默认为企业拥有者;点击保留,即可实现主机组的创立。 5)至此,你可在流水线中抉择应用该主机组了。 对部署权限的阐明,可查看“主机组成员权限”一节 增加形式——通过 ECS 标签增加 同时,主机组反对通过ECS标签增加,如果您应用 ECS 标签对 ECS 资源进行分类管理,能够间接在 Flow 中建设主机组和 ECS 标签的关联。 ...

September 27, 2021 · 1 min · jiezi

关于部署:git-webhook自动部署服务端代码django-python-docker等

背景自己开了一个django的集体博客,而且应用docker部署的,每次有代码更改都须要git本地提交,而后登陆服务器拉取代码,比拟耗时耗力,有没有一种形式能够本地提交代码之后,服务器主动拉取?这就是本文要介绍的主动部署 计划调研看了网上对于主动部署的文章不是特地多,而且部署的都有点简单,尤其是针对docker容器的这种根本没有还有大部分都是介绍如何主动部署一个网站,然而网站外的代码没法拉取,因为网站内执行git命令,无奈cd到网站根目录外去操作,通过大量尝试,本人钻研出一种十分间接简略的主动部署计划 计划次要内容用python写一个webhook.py的服务文件,运行 python3 webhook.py如果曾经运行了,端口9002会被占用,查找pid: lsof -i:9002 ,而后kill就行外网无法访问http://ip:9002/,是端口须要在控制台增加放开规定详解因为我的是docker利用治理形式,网站内目录拉取不了外层级的目录,所以须要独立开webhook服务,这种独立webhook服务比拟通用,根本所有webhook需要都能够满足首先我用python开的服务,当然php、go等都能够,语言不限,我这里以python为例服务代码: from http.server import HTTPServer, BaseHTTPRequestHandlerimport jsonimport subprocessimport osclass Resquest(BaseHTTPRequestHandler): def handler(self): print("data:", self.rfile.readline().decode()) self.wfile.write(self.rfile.readline()) def do_POST(self): print("hello webhook..") os.system('cd /root/docker-django && git add . && git status && git stash ;git stash clear;git pull') print("git pull finished")if __name__ == '__main__': host = ('', 9002) server = HTTPServer(host, Resquest) print("Starting server, listen at: %s:%s" % host) server.serve_forever()这段服务代码是网上找的,外面有get和post,这段是我精简之后的,没必要get,也没必要解析参数,间接开启服务执行shell命令就完事了 在服务器上执行 python3 webhook.py 服务就起来了,前面加上& 而后回车,就能够在后盾运行了 python3 webhook.py & ...

June 5, 2021 · 1 min · jiezi

关于部署:万字长文一文看懂持续部署按需发布DevOps部署和发布方法大全-IDCF

一、前言麻利DevOps的一个次要目标是要达成继续的最短的周期进行价值交付,这就离不开疾速的部署和公布。 那么问题来了,部署和公布到底是一个概念还是不同的概念?有哪些常见的部署和公布策略? 本文将会分析不同的概念,介绍不同的部署和公布的策略,在文章的最初,会对所有的策略和技术进行总结。 二、什么是部署与公布在谈继续部署之前,让咱们廓清一下什么是部署,什么是公布。 在互联网和SaaS之前的时代,通常是,先有公布(Release),再有部署(Deployment)。 1)公布研发团队公布一个版本,代表着开发实现并且测试实现是一个能够销售的软件,也代表着这个软件的上市。将软件售卖之前,须要把版本复制到软盘、U盘或者刻录到光盘上,通常叫做公布到工厂(RTM,Release to manufacturing)。软件正式上市售卖代表着软件曾经Gone Live,上线。2)部署如果是面向集体的桌面系统软件,那么由集体担当部署的人员,将软件(来源于软盘、光盘、U盘)进行装置,装置后自行进行配置。如果是面向企业的软件,那么由甲方的IT工程师负责装置和配置,或者是由乙方的服务人员负责装置和配置。还有另外一种状况,在甲方真正装置和配置软件之前,有一个用户验收测试(UAT,User Acceptance Test),在甲方的机房,先装置和配置一套,而后由甲方进行测试,如果测试通过,代表验收胜利,就能够正式的去装置和配置。在互联网、挪动互联网和SaaS时代,通常是,部署就代表着公布。 1)公布用户能看见软件或者间接应用软件,概念上和互联网之前的年代是一样的,目标都是上市 通常是将一个版本公布到网上(RTW,Release to the web)或者叫做网上公布(Web release)。在中国互联网行业,通常称之为上线(Release to production)。2)部署部署变成了将软件包公布到生产环境的一个动作,或者是一个步骤。即通过部署的动作,达成了公布的后果。麻利DevOps时代,部署和公布解耦,变成了继续部署,按业务须要公布。 1)继续部署继续的,自动化的,将软件包公布到生产环境。SaaS和网站类型的,就是间接部署到网站上。挪动利用App类型的会通过各种APP散发渠道,发到利用市场,例如苹果的AppStore,安卓的各种利用市场。2)按需公布依据业务须要,公布性能。公布,代表用户看见软件或者能够间接应用软件的性能,即release the functionality to end users。3)补充阐明对于一些ToB的企业级软件,例如电信行业,通常是软件+硬件整体销售给运营商(例如中国移动),依然会波及到发送硬件(例如替换件、路由器)到运营商,而后设施商(例如华为)的服务人员在客户现场进行机房、硬件等的装置和配置,之后才会割接上线。而2011年建设的凋谢网络基金会开始在业界大力提倡软件定义网络(SDN,Software-defined networking)和OpenFlow协定,在肯定水平上解耦了软件和硬件,那么DevOps的理念就有可能被达成,例如在华为生产的软件通过网络间接在中国移动的网络上降级软件。如下图所示,是规模化麻利框架SAFe(Scaled Agile Framework)的继续交付流水线,部署和公布是解耦开的,部署不意味着用户可见,公布才是性能对用户可见,部署仅仅是将软件部署在生产环境,新的代码变更对于用户来说还是“黑/暗”(dark)的。 让咱们正式的定义一下部署和公布,《DevOps实际指南》的定义如下: 1)部署是指在特定的环境中装置指定版本的软件(例如,将代码部署到集成测试环境中,或者部署到生产环境中)。具体的说,部署可能与某个个性的公布无关。如果部署与某个个性公布无关,部署后即时失效,即代表着公布,部署=公布。2)公布是指把一个个性(或者一组个性)提供给所有客户或者一部分客户(例如,向5%的客户群凋谢个性)。代码和环境架构要可能满足这种要求:个性公布不须要变更利用的代码。部署和公布是解耦开的,也就是:让部署能够独立于公布独自进行;而个性部署后,业务能够灵便决定什么时候公布,向哪些指标客群公布。如果部署周期过程,就会限度向市场频繁地公布新个性的能力。如果能做到按需部署,或者继续部署,那么什么时候公布新个性,就成了业务和市场决策,而不再是技术决策,所以部署是技术领域,而公布时业务领域。 三、什么是继续部署继续部署(CD,Continuous Deployment)是将在预发、类生产环境中通过验证确认的个性部署到生产环境的过程,部署后这些个性就曾经就绪,须要公布的时候随时公布。 按需公布(Release on Demand)是团队和企业的要害能力。按需公布使得业务具备继续的在最短的前置工夫(Lead Time)内,以高频率的形式,让客户应用新性能,从而通过高价值计划响应市场机会。 为了反对业务具备按需公布的能力,个性在业务须要它们之前,必须在生产环境失去验证和期待公布。所以须要将部署过程优化并从公布过程中分离出来,这样将代码变更部署到生产环境,并不会影响整个零碎的行为。继续部署的能力使团队能够进行更小的增量的代码变更,并继续地部署到生产环境,然而并不公布,直到业务须要的工夫才正式公布给客户。 而对于继续部署的“继续”,每个公司的水平是不一样的,例如,亚马逊2011年5月的部署数据,在工作日均匀每11.6秒部署一次,一个小时部署最多的一次是部署了1079次部署,一次部署均匀部署到一万台云主机,最多的时候一次部署是部署到三万台云主机。 如下图所示,《凤凰我的项目》提到国外的一些大厂2012年的部署频率和每次部署破费的工夫(Deploy Lead Time)。 笔者于2020年在苹果的App Store查看了国内各大支流IOS APP的版本公布状况,大多数的APP是在2周以内公布一次。 拿京东来说,在APP市场,大多数状况下,京东商城APP是两周一个版本,京东金融APP也是两周一个版本。对于京东的服务端的公布,基本上是每周有两次上线窗口进行小批量的上线,当然对于紧急的线上问题的修复依据状况随时上线。 如下图所示,《公布!设计与部署稳固的分布式系统 第2版》提到:部署间隔时间有更长的提早,将会导致每次的部署蕴含更多的代码变更,后果就是呈现更多缺点和宕机的危险,因而会减少更多的评审环节,那么又大大增加了部署之间的间隔时间。这是一个越来越差的加强回路。 正如《公布》这本书所说的“如果每次部署都很苦楚,那么就频繁屡次做”,所以高频的继续部署能够颠覆这个恶性循环,并且从以上国外大厂和国内大厂公布的频率来看,充分说明继续的部署是业务按需公布的必要条件。 四、继续部署实际4.1 蓝绿部署(Blue-Green Deployments)蓝绿部署是指有两个完全相同的、相互独立的生产环境,一个叫做“蓝环境”,一个叫做”绿环境“。 绿环境是用户正在应用的生产环境。当要部署一个新版本的时候,先把这个新版本部署到蓝环境中,而后在蓝环境中运行冒烟测试,来查看是否失常工作,当所有准备就绪当前,向新版本迁徙就非常简单了,只有批改一下路由配置,将用户流量从绿环境导向蓝环境就能够,这个时候蓝环境就变成了生产环境,这种切换通常在一秒钟之内就能搞定。如果出了问题,把路由器切回到绿环境上即可,而后在蓝环境中调试,找到问题的起因。 所以蓝绿部署,是在部署之后,仅仅一次切换,立即就向所有用户推出新版本,新性能对所有用户立即失效可见。 如果因为老本和投资回报的思考,不能建设两套齐全一样的生产环境,那么能够将蓝环境作为预发或预生产环境,将软件的新版本部署在预发环境,并进行验收测试,之后将拜访流量引流到这个预发环境,那么蓝环境就是正式的生产环境,同时放弃旧版本所在的绿环境不变,直至新版本没有问题后,再将旧版本所运行的环境作为下一个新版本的预发环境。 蓝绿部署中,如果是放弃两份一样的数据库,须要解决的问题是数据库的问题,一个是如何疾速复制数据库,一个是波及数据库的事务时如何解决数据的一致性问题。 在电信行业中,通常须要保障99.999%的工夫是服务可用的,所以通常会投入冗余的设计和实现,例如一个设施的双CPU、双存储、多个板卡等,双机主备等,网络建设的时候进行冗余设施的设计,通信链路有爱护协定时刻进行心跳式的检测,如果某个链路数据不通,就主动切换到另外的链路等等。 例如交换机或路由器有两个CPU,一个是主,一个是备,主备之间内存应用内存数据库进行同步,备机如果内存数据库被更新了,就立即同步到备机的长久化存储中。这样能够保障设施如果有问题的时候主备之间进行切换,同时能够被用来零停机部署、不中断业务降级(ISSU,In-Service Software Upgrade)在standby备机CPU中降级到新版本,再将其切换成主服务CPU,而原来的主活CPU变成了备机待机状态,再将其降级,这样既不影响实时业务,又降级了新版本。 ...

February 18, 2021 · 2 min · jiezi

关于部署:从0到1实现简单部署

对于目前的集体开发者而言,应用云服务器是非常方便快捷的,在灰溜溜地写好了我的项目代码后,会有一种想要疾速部署到服务器上的激动,明天咱们就来实际一下 0 到 1 的简略服务器部署。 首先你须要有一台云服务器,这里以我的阿里云服务器为例,零碎是CentOS 7.3 1.近程连贯想要在服务器上进行部署,首先得连贯上服务器,能够通过阿里云官网管制的 浏览器近程连贯 登录服务器,然而比拟麻烦,每隔一段时间都须要从新登录。除此之外,还能够利用 ssh 通过账号密码或者密钥进行连贯,如下: # 通过账号密码进行连贯,个别为 root,连贯胜利后须要输出明码ssh root@yourIp# 通过密钥进行连贯,yourKey 为密钥的本地门路ssh root@yourIp -i yourKey2.nginx 配置当初的服务器部署,基本上离不开 nginx,配置简略易用,对于集体开发者非常敌对。 2.1 nginx 装置yum install -y nginx装置胜利后能够应用 -v 查看版本,我这里是 1.16.1 nginx -v2.2 nginx 命令启动 nginx能够应用 Linux 的零碎工具 Systemd 来启动 nginx,也能够应用 nginx 自带的命令: systemctl start nginx# 或nginx# 设置开机主动启动systemctl enable nginx进行 nginx当你想进行 nginx 时,能够应用 stop 命令: systemctl stop nginx# 或nginx -s stop重启 nginx当你更改了 nginx 的配置时,这个时候往往须要重启 nginx 服务配置能力失效: systemctl restart nginx# 或nginx -s reload2.3 配置 nginxnginx 装置好了之后,默认门路个别是 /etc/nginx/,如果在该门路下没有找到,能够应用 nginx -t 命令查看装置门路: ...

February 17, 2021 · 3 min · jiezi