Zadig 玩转亚马逊云科技全家桶 EKS/ECR/S3/EC2...

DevOps
0
0
{"value":"Amazon Web Services (AWS) 提供全球覆盖广泛、服务深入的云平台,亚马逊云科技连续 11 年被 Gartner 评为“全球云计算领导者”。其完整的云原生“家族产品”,比如 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail)/ECR/S3([Amazon Simple Storage Service](https://aws.amazon.com/cn/s3/?trk=cndc-detail))/EC2...可以很好地支撑企业各类上云业务场景。\n\nZadig 作为云原生持续交付平台,支持多云架构交付,对 AWS 基础设施的兼容和适配性也极其友好。\n\n本文中我们将演示在 AWS 上**安装、使用 Zadig**,以及 **Zadig 是如何支持 AWS 全家桶进行微服务的持续交付**,助力企业以更优雅的姿势快速走上云原生交付之路,降低成本、提高敏捷性并加速创新。\n![P2.png](https://dev-media.amazoncloud.cn/823b6040b9e1429e8c6bfef2cbb3062b_P2.png)\n\n\n## 安装 Zadig\n\n以下操作以社区版 v1.15.0 版本为例,使用脚本的方式在 EKS 集群上快速安装 Zadig。\n\nEKS 集群版本:v1.16~v1.22\n\n**第一步** 下载安装脚本:\n```\\ncurl -LO https://github.com/koderover/zadig/releases/download/v1.15.0/install_quickstart.sh\\nchmod +x ./install_quickstart.sh\\n```\n**第二步 ** 配置环境变量并执行安装脚本:\n```\\nexport IP=124.53.19.22 # 集群任一节点的外网 IP 地址\\nexport PORT=30333 # 安装完毕后,使用 IP:PORT 来访问 Zadig 系统\\n./install_quickstart.sh\\n```\n安装完毕后,使用系统默认的账号密码登录即可。\n![P3.png](https://dev-media.amazoncloud.cn/bbb52b6d65ee40ae84f6e524e5a5357f_P3.png)\n\n更丰富的安装参数和方式可参考文档:安装 [Zadig | Zadig 文档](Zadig | Zadig 文档)\n\n\n## 使用 Zadig\n\n**准备工作**\n\n集成 AWS 资源\n**对象储存**\n\n系统管理员访问 ++系统设置++ -> ++基础设施++ -> ++对象存储++ -> ++新建++ ,提供商选择 **[Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail)** ,填写基本配置信息并设置为默认使用后保存。\n![P4.png](https://dev-media.amazoncloud.cn/2494ac50e51f4ee8b70ec396057ae907_P4.png)\n\n**镜像仓库**\n\n系统管理员访问 ++系统设置++ -> ++基础设施++ -> ++镜像仓库++ -> ++新建++ ,提供商选择 **Amzon ECR** ,填写基本配置信息后保存即可。\n![P5.png](https://dev-media.amazoncloud.cn/d0f7c2d804ac46f0b850aa54f4baf8de_P5.png)\n\n**Helm Chart 仓库**\n\n系统管理员访问 ++系统设置++ -> ++基础设施++ -> ++HELM 仓库++ -> ++新建++ ,填写由 AWS 厂商提供的 Chart 仓库配置后保存即可。\n![P6.png](https://dev-media.amazoncloud.cn/28fdcc789329483f9cfdba5639b6a5c0_P6.png)\n\n**准备项目**\n\n本文使用 ++voting-app++ 案例进行演示,案例源码位于 [koderover/zadig](koderover/zadig) 代码库中,目录结构说明如下:\n\n本例中集成的 Helm Chart 仓库已有 ++voting-app++ 服务的 chart 配置,如果读者完全按照本实践操作,请将 chart 目录的内容上传到自己的 Helm Chart 仓库中。\n```\\nzadig/examples/voting-app\\n├── chart # Helm Chart 配置\\n├── result # result 服务源码\\n├── vote # vote 服务源码\\n└── worker # worker 服务源码\\n```\n**集成代码源**\n\n系统管理员访问 ++系统设置++ -> ++集成管理++ -> ++代码源集成++ -> ++添加++ ,集成代码源(即: voting-app 所在的代码源)。\n\n系统管理员可 fork koderover/zadig 代码库,也可以下载后上传到自己的代码仓库中。\n![P7.PNG](https://dev-media.amazoncloud.cn/746d5bcc0e4a452f8f48b0b634aa0c61_P7.PNG)\n\n## 如何使用\n\n下面以 voting-app-helm-demo 项目为例来演示,包括搭建项目、管理服务配置、持续构建部署服务、版本管理的完整场景。\n\n**创建项目**\n\n系统管理员登录系统后点击 ++新建项目++ ,创建 K8s Helm Chart 类型的项目 ++voting-app-helm-demo++ ,点击 ++下一步++ 。\n![P8.png](https://dev-media.amazoncloud.cn/67fea25f131c41c4a3f79183e0eaaf4f_P8.png)\n\n**导入服务**\n\n从 AWS 提供的 Helm Chart 仓库中导入服务的 Chart 配置到 Zadig 中。\n\n点击 ++从 Chart 仓库同步++ ,选择 Chart 仓库以及 Chart 后新建即可导入服务配置,系统会自动解析 values 文件中的服务和服务组件,导入成功后点击 ++下一步++ 。\n![P9.png](https://dev-media.amazoncloud.cn/816bef31f3334a6e80e0b46d8ff5f873_P9.png)\n\n**构建配置**\n\n为服务组件配置构建,后续可使用工作流对该服务进行变更。以 ++examplevotingapp_result++ 为例,点击 ++添加构建++ 并填写构建配置后点击 ++下一步++ 。本例中构建配置说明如下:\n\n- 构建名称 :voting-app-helm-demo-build-result\n- 代码信息 :准备工作中集成的代码信息\n- 通用构建脚本 :内容如下:\n```\\n#!/bin/bash\\nset -ex\\n\\ncd \$WORKSPACE/zadig/examples/voting-app/result\\ndocker build -t \$IMAGE -f Dockerfile .\\ndocker push \$IMAGE\\n```\n- 添加步骤 :增加文件存储,将 zadig/examples/voting-app/result 目录下的内容归档到 AWS S3 对象存储中\n![P10.png](https://dev-media.amazoncloud.cn/999b4a79038d4bb4a5179c64f6efbb87_P10.png)\n\n**创建环境**\n\n选择 ++本地集群++ 和 ECR 镜像仓库后点击 ++创建环境++ ,系统会自动在 EKS 集群创建 ++dev++ 和 ++qa++ 两套环境,待环境创建完毕后点击 ++下一步++ 。\n![P11.png](https://dev-media.amazoncloud.cn/c11352717f64470282aac848d7395b83_P11.png)\n\n**运行工作流**\n系统自动创建 3 条工作流,运行 ++voting-app-helm-demo-workflow-dev++ 工作流来更新 ++dev++ 环境的 ++result++ 服务。\n![P12.png](https://dev-media.amazoncloud.cn/0bdef30f5db649b7bbfb910f03c8c081_P12.png)\n\n构建日志的内容会存储在 AWS S3 对象存储中,在工作流运行时可点击查看实时构建日志,当构建失败时可辅助排查问题。\n\n![P13.png](https://dev-media.amazoncloud.cn/7d2823ad11bb46098773979b8acc060c_P13.png)\n\n工作流执行完毕后,会将新的镜像推送到 AWS ECR 镜像仓库中,并使用该镜像更新 ++dev++ 环境的 ++result++ 服务,实现微服务的持续部署。\n![P14.PNG](https://dev-media.amazoncloud.cn/d15d0453ab5749f4b620ef3c6b1f39b0_P14.PNG)\n\n登录 AWS 对象存储控制台查看,构建中配置的归档文件被成功上传。\n\n![P15.png](https://dev-media.amazoncloud.cn/88bfd848353946689f8d50a3b5c73df4_P15.png)\n\n在实际使用中,还可以充分利用工作流的触发器能力:只需在工作流中配置开启 Git 触发器便可实现代码变更后自动构建部署服务的全部流程,缩短代码到交付的时间周期,具体使用可参考 [代码变更自动触发工作流 | Zadig 文档](代码变更自动触发工作流 | Zadig 文档)\n\n**创建版本**\n\n在 Zadig 平台上持续部署验证迭代出稳定的服务版本后,可创建完整的 Helm Chart 版本(比如:用于和内部发布系统对接)。\n\n访问项目的 ++版本管理++ -> ++创建版本++ ,填写版本基本信息:\n![P16.png](https://dev-media.amazoncloud.cn/1bb188b6fe17442e847e2af0f9a3f094_P16.png)\n\n选择环境和服务后点击 ++添加++ ,点击 ++下一步++ :\n![P17.png](https://dev-media.amazoncloud.cn/251ab87aad4b4b83a2b8306e3bcec14e_P17.png)\n\n选择 AWS 镜像仓库和 Chart 仓库,填写版本号后点击 完成 即可基于指定环境创建服务版本。\n![P18.png](https://dev-media.amazoncloud.cn/43b4083ca13b40de93441e5a0558d48d_P18.png)\n\n创建完毕后,可查看版本详情、将完整的 Helm Chart 包下载到本地,企业内部系统也可以从对应的 Chart 仓库中获取该版本。\n![P19.png](https://dev-media.amazoncloud.cn/7ad02e8d6dc84ff5acd297753df5ca17_P19.png)\n\n\n## 更多场景\n\n对于暂时不便于迁移容器部署的场景,比如基础设施本身是可网络互通的设备:IoT 物联网场景下自动驾驶车辆主机端、工厂可连接设备...等,也可以结合 Zadig 的主机类型项目和 AWS 主机资源对服务进行持续交付,具体使用方法可参考教程: [如何使用现有主机 + Zadig 自动化交付产品](如何使用现有主机 + Zadig 自动化交付产品) 。\nhttps://www.koderover.com/tutorials/codelabs/cloudhost/index.html\n\n![P20.png](https://dev-media.amazoncloud.cn/137a22c986ce43c7976c49b8c7740945_P20.png)","render":"<p>Amazon Web Services (AWS) 提供全球覆盖广泛、服务深入的云平台,亚马逊云科技连续 11 年被 Gartner 评为“全球云计算领导者”。其完整的云原生“家族产品”,比如 Amazon EKS/ECR/S3(Amazon Simple Storage Service)/EC2…可以很好地支撑企业各类上云业务场景。</p>\n<p>Zadig 作为云原生持续交付平台,支持多云架构交付,对 AWS 基础设施的兼容和适配性也极其友好。</p>\n<p>本文中我们将演示在 AWS 上<strong>安装、使用 Zadig</strong>,以及 <strong>Zadig 是如何支持 AWS 全家桶进行微服务的持续交付</strong>,助力企业以更优雅的姿势快速走上云原生交付之路,降低成本、提高敏捷性并加速创新。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/823b6040b9e1429e8c6bfef2cbb3062b_P2.png\\" alt=\\"P2.png\\" /></p>\n<h2><a id=\\"_Zadig_8\\"></a>安装 Zadig</h2>\\n<p>以下操作以社区版 v1.15.0 版本为例,使用脚本的方式在 EKS 集群上快速安装 Zadig。</p>\n<p>EKS 集群版本:v1.16~v1.22</p>\n<p><strong>第一步</strong> 下载安装脚本:</p>\\n<pre><code class=\\"lang-\\">curl -LO https://github.com/koderover/zadig/releases/download/v1.15.0/install_quickstart.sh\\nchmod +x ./install_quickstart.sh\\n</code></pre>\\n<p>**第二步 ** 配置环境变量并执行安装脚本:</p>\n<pre><code class=\\"lang-\\">export IP=124.53.19.22 # 集群任一节点的外网 IP 地址\\nexport PORT=30333 # 安装完毕后,使用 IP:PORT 来访问 Zadig 系统\\n./install_quickstart.sh\\n</code></pre>\\n<p>安装完毕后,使用系统默认的账号密码登录即可。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/bbb52b6d65ee40ae84f6e524e5a5357f_P3.png\\" alt=\\"P3.png\\" /></p>\n<p>更丰富的安装参数和方式可参考文档:安装 [Zadig | Zadig 文档](Zadig | Zadig 文档)</p>\n<h2><a id=\\"_Zadig_31\\"></a>使用 Zadig</h2>\\n<p><strong>准备工作</strong></p>\\n<p>集成 AWS 资源<br />\\n<strong>对象储存</strong></p>\\n<p>系统管理员访问 <ins>系统设置</ins> -&gt; <ins>基础设施</ins> -&gt; <ins>对象存储</ins> -&gt; <ins>新建</ins> ,提供商选择 <strong>Amazon S3</strong> ,填写基本配置信息并设置为默认使用后保存。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/2494ac50e51f4ee8b70ec396057ae907_P4.png\\" alt=\\"P4.png\\" /></p>\n<p><strong>镜像仓库</strong></p>\\n<p>系统管理员访问 <ins>系统设置</ins> -&gt; <ins>基础设施</ins> -&gt; <ins>镜像仓库</ins> -&gt; <ins>新建</ins> ,提供商选择 <strong>Amzon ECR</strong> ,填写基本配置信息后保存即可。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/d0f7c2d804ac46f0b850aa54f4baf8de_P5.png\\" alt=\\"P5.png\\" /></p>\n<p><strong>Helm Chart 仓库</strong></p>\\n<p>系统管理员访问 <ins>系统设置</ins> -&gt; <ins>基础设施</ins> -&gt; <ins>HELM 仓库</ins> -&gt; <ins>新建</ins> ,填写由 AWS 厂商提供的 Chart 仓库配置后保存即可。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/28fdcc789329483f9cfdba5639b6a5c0_P6.png\\" alt=\\"P6.png\\" /></p>\n<p><strong>准备项目</strong></p>\\n<p>本文使用 <ins>voting-app</ins> 案例进行演示,案例源码位于 <a href=\\"koderover/zadig\\" target=\\"_blank\\">koderover/zadig</a> 代码库中,目录结构说明如下:</p>\\n<p>本例中集成的 Helm Chart 仓库已有 <ins>voting-app</ins> 服务的 chart 配置,如果读者完全按照本实践操作,请将 chart 目录的内容上传到自己的 Helm Chart 仓库中。</p>\\n<pre><code class=\\"lang-\\">zadig/examples/voting-app\\n├── chart # Helm Chart 配置\\n├── result # result 服务源码\\n├── vote # vote 服务源码\\n└── worker # worker 服务源码\\n</code></pre>\\n<p><strong>集成代码源</strong></p>\\n<p>系统管理员访问 <ins>系统设置</ins> -&gt; <ins>集成管理</ins> -&gt; <ins>代码源集成</ins> -&gt; <ins>添加</ins> ,集成代码源(即: voting-app 所在的代码源)。</p>\\n<p>系统管理员可 fork koderover/zadig 代码库,也可以下载后上传到自己的代码仓库中。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/746d5bcc0e4a452f8f48b0b634aa0c61_P7.PNG\\" alt=\\"P7.PNG\\" /></p>\n<h2><a id=\\"_70\\"></a>如何使用</h2>\\n<p>下面以 voting-app-helm-demo 项目为例来演示,包括搭建项目、管理服务配置、持续构建部署服务、版本管理的完整场景。</p>\n<p><strong>创建项目</strong></p>\\n<p>系统管理员登录系统后点击 <ins>新建项目</ins> ,创建 K8s Helm Chart 类型的项目 <ins>voting-app-helm-demo</ins> ,点击 <ins>下一步</ins> 。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/67fea25f131c41c4a3f79183e0eaaf4f_P8.png\\" alt=\\"P8.png\\" /></p>\n<p><strong>导入服务</strong></p>\\n<p>从 AWS 提供的 Helm Chart 仓库中导入服务的 Chart 配置到 Zadig 中。</p>\n<p>点击 <ins>从 Chart 仓库同步</ins> ,选择 Chart 仓库以及 Chart 后新建即可导入服务配置,系统会自动解析 values 文件中的服务和服务组件,导入成功后点击 <ins>下一步</ins> 。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/816bef31f3334a6e80e0b46d8ff5f873_P9.png\\" alt=\\"P9.png\\" /></p>\n<p><strong>构建配置</strong></p>\\n<p>为服务组件配置构建,后续可使用工作流对该服务进行变更。以 <ins>examplevotingapp_result</ins> 为例,点击 <ins>添加构建</ins> 并填写构建配置后点击 <ins>下一步</ins> 。本例中构建配置说明如下:</p>\\n<ul>\\n<li>构建名称 :voting-app-helm-demo-build-result</li>\n<li>代码信息 :准备工作中集成的代码信息</li>\n<li>通用构建脚本 :内容如下:</li>\n</ul>\\n<pre><code class=\\"lang-\\">#!/bin/bash\\nset -ex\\n\\ncd \$WORKSPACE/zadig/examples/voting-app/result\\ndocker build -t \$IMAGE -f Dockerfile .\\ndocker push \$IMAGE\\n</code></pre>\\n<ul>\\n<li>添加步骤 :增加文件存储,将 zadig/examples/voting-app/result 目录下的内容归档到 AWS S3 对象存储中<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/999b4a79038d4bb4a5179c64f6efbb87_P10.png\\" alt=\\"P10.png\\" /></li>\n</ul>\\n<p><strong>创建环境</strong></p>\\n<p>选择 <ins>本地集群</ins> 和 ECR 镜像仓库后点击 <ins>创建环境</ins> ,系统会自动在 EKS 集群创建 <ins>dev</ins> 和 <ins>qa</ins> 两套环境,待环境创建完毕后点击 <ins>下一步</ins> 。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/c11352717f64470282aac848d7395b83_P11.png\\" alt=\\"P11.png\\" /></p>\n<p><strong>运行工作流</strong><br />\\n系统自动创建 3 条工作流,运行 <ins>voting-app-helm-demo-workflow-dev</ins> 工作流来更新 <ins>dev</ins> 环境的 <ins>result</ins> 服务。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/0bdef30f5db649b7bbfb910f03c8c081_P12.png\\" alt=\\"P12.png\\" /></p>\n<p>构建日志的内容会存储在 AWS S3 对象存储中,在工作流运行时可点击查看实时构建日志,当构建失败时可辅助排查问题。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/7d2823ad11bb46098773979b8acc060c_P13.png\\" alt=\\"P13.png\\" /></p>\n<p>工作流执行完毕后,会将新的镜像推送到 AWS ECR 镜像仓库中,并使用该镜像更新 <ins>dev</ins> 环境的 <ins>result</ins> 服务,实现微服务的持续部署。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/d15d0453ab5749f4b620ef3c6b1f39b0_P14.PNG\\" alt=\\"P14.PNG\\" /></p>\n<p>登录 AWS 对象存储控制台查看,构建中配置的归档文件被成功上传。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/88bfd848353946689f8d50a3b5c73df4_P15.png\\" alt=\\"P15.png\\" /></p>\n<p>在实际使用中,还可以充分利用工作流的触发器能力:只需在工作流中配置开启 Git 触发器便可实现代码变更后自动构建部署服务的全部流程,缩短代码到交付的时间周期,具体使用可参考 [代码变更自动触发工作流 | Zadig 文档](代码变更自动触发工作流 | Zadig 文档)</p>\n<p><strong>创建版本</strong></p>\\n<p>在 Zadig 平台上持续部署验证迭代出稳定的服务版本后,可创建完整的 Helm Chart 版本(比如:用于和内部发布系统对接)。</p>\n<p>访问项目的 <ins>版本管理</ins> -&gt; <ins>创建版本</ins> ,填写版本基本信息:<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/1bb188b6fe17442e847e2af0f9a3f094_P16.png\\" alt=\\"P16.png\\" /></p>\n<p>选择环境和服务后点击 <ins>添加</ins> ,点击 <ins>下一步</ins> :<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/251ab87aad4b4b83a2b8306e3bcec14e_P17.png\\" alt=\\"P17.png\\" /></p>\n<p>选择 AWS 镜像仓库和 Chart 仓库,填写版本号后点击 完成 即可基于指定环境创建服务版本。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/43b4083ca13b40de93441e5a0558d48d_P18.png\\" alt=\\"P18.png\\" /></p>\n<p>创建完毕后,可查看版本详情、将完整的 Helm Chart 包下载到本地,企业内部系统也可以从对应的 Chart 仓库中获取该版本。<br />\\n<img src=\\"https://dev-media.amazoncloud.cn/7ad02e8d6dc84ff5acd297753df5ca17_P19.png\\" alt=\\"P19.png\\" /></p>\n<h2><a id=\\"_143\\"></a>更多场景</h2>\\n<p>对于暂时不便于迁移容器部署的场景,比如基础设施本身是可网络互通的设备:IoT 物联网场景下自动驾驶车辆主机端、工厂可连接设备…等,也可以结合 Zadig 的主机类型项目和 AWS 主机资源对服务进行持续交付,具体使用方法可参考教程: [如何使用现有主机 + Zadig 自动化交付产品](如何使用现有主机 + Zadig 自动化交付产品) 。<br />\\nhttps://www.koderover.com/tutorials/codelabs/cloudhost/index.html</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/137a22c986ce43c7976c49b8c7740945_P20.png\\" alt=\\"P20.png\\" /></p>\n"}
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭