Istio生态系统ON ASM(4):在阿里云服务网格ASM中集成阿里云云效Flow实现DevOps

简介: 在阿里云服务网格(简称 ASM)企业版实例中,兼容 Istio,支持多个 Kubernetes 集群统一流量管理,为容器和虚拟机应用服务提供一致性的通信控制。基于服务网格最新的“数据面KubeAPI访问"能力,能够通过数据面集群的kubeconfig来管理Istio资源。和阿里云Flow等云效工具集成后,可以享受DevOps、GitOps带来的应用发布的便利性,还能够利用Istio细粒度

在阿里云服务网格(简称 ASM)企业版实例中,兼容 Istio,支持多个 Kubernetes 集群统一流量管理,为容器和虚拟机应用服务提供一致性的通信控制。基于服务网格最新的“数据面KubeAPI访问"能力,能够通过数据面集群的kubeconfig来管理Istio资源。和阿里云Flow等云效工具集成后,可以享受DevOps、GitOps带来的应用发布的便利性,还能够利用Istio细粒度的流量管控能力来实现蓝绿发布,保障上线的稳定性。

前提条件

  • 创建Istio版本为1.12.4.50或更高版本的阿里云服务网格 (ASM) 实例。
  • 创建容器服务Kubernetes (ACK) 集群。
  • 将ACK集群添加到ASM实例。
  • 启用 阿里云Flow 服务。

云效提供了蓝绿发布的能力支持。从而让用户可以更安全的基于 Istio 的流量管理策略实现应用的安全发布。

实践1:流水线部署应用

目标:以Istio book-info示例为例,我们将首页的标题文字进行更换。代码提交后,执行阿里云云效流水线,生成镜像,自动将应用的流量管理(VirtualService、Gateway、DestinationRule)相关的资源创建或更新到阿里云服务网格ASM集群中,将应用程序编排(Deployment、Service)创建或更新到阿里云容器服务平台ACK集群中。

创建流水线如下。流水线源配置为GitHub仓库,测试地址为https://github.com/AliyunContainerService/asm-labs,您也可以fork出来,然后进行个性化修改。分支选择flow-demo

执行的步骤如下:

1. 流水线流程配置

将镜像仓库地址为替换为您的地址空间:registry.cn-hangzhou.aliyuncs.com/{your_name_space}/productpage:${DATETIME}。这里我们使用DATETIME作为版本号。Dockerfile路径为productpage/Dockerfile。更多的详情可参考:如何通过云效进行K8s部署

2. webhook(可选)

您可以配置webhook来设置当代码变更时,自动触发流水线。

3. 添加数据面集群并注入Sidecar代理

在阿里云服务网格ASM控制台,进入ASM实例后,在集群与工作负载管理中,添加希望流水线配置的ACK容器服务实例。并在全局命名空间中,为选定的命名空间(如default)启用Sidecar自动注入。

4. 创建ASM网关

为了方便的访问我们流水线部署出的应用程序,需要创建ASM网关来作为访问入口,端口设置为80。

5. 执行流水线

6. 查看部署效果

在ACK集群中,确认镜像能够成功拉去并且启动正常,如拉取个人私有镜像失败可参考使用免密组件拉取容器镜像

复制前面创建的ASM网关的地址,在浏览器中输入http://{ASM网关地址}/productpage,可以看到我们修改的标题已生效。

当前显示界面固定为reviews-v1版本。

实践2:蓝绿发布

阿里云服务网格ASM和云效集成,提供了蓝绿发布的能力。从而让用户可以更安全的基于 Istio 的流量管理策略实现应用的安全发布。

目标:在完成实践1:流水线部署应用的前提下,通过蓝绿发布,将reviews版本从原来的v1更新为v2版本。

1. 创建新的流水线

如实践1配置流水线源,创建阶段Kubernetes蓝绿发布。这里我们设置镜像为reviews-v2版本的镜像:docker.io/istio/examples-bookinfo-reviews-v2:1.16.4。灰度初始化流量为0%,并且只有待特定cookie标识的用户能够访问到蓝绿版本。

2. 执行

在阿里云云效Flow中,蓝绿发布前需要明确指明使用哪个版本的工作负载,将其他的版本的工作负载全部清空。确保流量只流入稳定版(reviews-v1)。

此时,在阿里云服务网格ASM控制台查看虚拟服务VIrtualService状态。此时状态如下:

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: reviews
  namespace: default
spec:
  hosts:
    - reviews
  http:
    - match:
        - headers:
            cookie:
              regex: ^(.*?;)?(gray=true)(;.*)?$
      route:
        - destination:
            host: reviews
            subset: v20220620190631
    - route:
        - destination:
            host: reviews
            subset: v1
          weight: 100
        - destination:
            host: reviews
            subset: v20220620190631

目标规则如下所示:

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: reviews
  namespace: default
spec:
  host: reviews
  subsets:
    - labels:
        version: v1
      name: v1
    - labels:
        version: v20220620190631
      name: v20220620190631

3. 测试验证

因为reviews服务是由后端服务productpage来调用的,不方便携带特定token来进行灰度测试。

修改header中cookie设置,改为使用end-user的登陆信息,设定只要登陆用户名称为asm,则显示灰度版本。

复制前面创建的ASM网关的地址,在浏览器中输入http://{ASM网关地址}/productpage,点击右上角进行登录,输入用户名称为asm,密码。如果是未登录状态,则显示v1版本的reviews信息。

4. 继续发布

在通过了灰度版本的测试之后,将全部的流量转为新版本(reviews-v2)。

点击继续发布,完成发布。

发布完成后,未登录时也显示reviews-v2的版本

发布完成后,reviews VirtualService的状态

总结

在 Kubernetes 中 Service 与多个版本的 Deployment 实例通过 Label进行关联。蓝绿发布开始,阿里云Flow会基于当前的 Deployment 实例创建一个新版本的应用 Deployment 实例。等待蓝环境创建完成后通过更新 阿里云服务网格ASM的VirtualService和DestinationRule 资源对象,进一步控制流量与特定版本Deployment实例之间的路由策略。

根据发布设置,可以修改 VirtualService 确定蓝/绿环境的流量权重。用户也可以设置灰度标,确定哪些流量会直接进入到蓝环境中。在人工验证完成后,完成发布将所有流量切流到蓝环境,并且将原有的绿环境实例移除。

作为业内首个全托管Istio兼容的阿里云服务网格产品ASM,一开始从架构上就保持了与社区、业界趋势的一致性,控制平面的组件托管在阿里云侧,与数据面侧的用户集群独立。ASM产品是基于社区Istio定制实现的,在托管的控制面侧提供了用于支撑精细化的流量管理和安全管理的组件能力。通过托管模式,解耦了Istio组件与所管理的K8s集群的生命周期管理,使得架构更加灵活,提升了系统的可伸缩性。从2022年4月1日起,阿里云服务网格ASM正式推出商业化版本, 提供了更丰富的能力、更大的规模支持及更完善的技术保障,更好地满足客户的不同需求场景, 详情可见产品介绍:https://www.aliyun.com/product/servicemesh

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
12天前
|
Kubernetes 安全 Devops
【云效流水线 Flow 测评】驾驭云海:五大场景下的云效Flow实战部署评测
云效是一款企业级持续集成和持续交付工具,提供免费、高可用的服务,集成阿里云多种服务,支持蓝绿、分批、金丝雀等发布策略。其亮点包括快速定位问题、节省维护成本、丰富的企业级特性及与团队协作的契合。基础版和高级版分别针对小型企业和大规模团队,提供不同功能和服务。此外,云效对比Jenkins在集成阿里云服务和易用性上有优势。通过实战演示了云效在ECS和K8s上的快速部署流程,以及代码质量检测和AI智能排查功能,展示了其在DevOps流程中的高效和便捷,适合不同规模的企业使用。本文撰写用时5小时,请各位看官帮忙多多支持,如有建议也请一并给出,您的建议能帮助我下一篇更加出色。
217047 19
|
8天前
|
弹性计算 Java jenkins
开箱即用的企业级CICD工具-云效流水线 Flow
【5月更文挑战第10天】开箱即用的企业级CICD工具-云效流水线 Flow
|
1天前
|
存储 Prometheus 运维
【阿里云云原生专栏】云原生下的可观测性:阿里云 ARMS 与 Prometheus 集成实践
【5月更文挑战第25天】阿里云ARMS与Prometheus集成,为云原生环境的可观测性提供强大解决方案。通过集成,二者能提供全面精准的应用监控,统一管理及高效告警,助力运维人员及时应对异常。集成示例代码展示配置方式,但需注意数据准确性、监控规划等问题。这种集成将在云原生时代发挥关键作用,不断进化以优化用户体验,推动业务稳定发展。
5 0
|
3天前
|
开发工具 iOS开发
阿里云本机一键登录集成
阿里云本机一键登录集成
10 0
|
12天前
|
运维 监控 数据可视化
云效流水线 Flow 评测报告
作为运维工程师,我有使用Jenkins和GitLab CI/CD的经验。Flow在新人上手方面表现出色,界面清晰,文档支持良好。产品功能全面,支持多种语言和环境,性能稳定,且具备开放性,能自定义和扩展。虽然在可视化和监控上有改进空间,但相比其他CI/CD工具,Flow在成本、功能和性能上颇具竞争力,适合团队使用。我推荐采用云效流水线Flow提升研发效率和质量。
|
12天前
|
JavaScript 数据可视化 jenkins
云效流水线 Flow测评报告
该内容是一位维护人员对于CI/CD工具Flow的使用体验和改进建议。他提到Flow对新人友好,但主要与云效和Codeup关联性强。他建议:1) YML和可视化编排能互相转换;2) 流水线部署时可按参数选择主机组;3) Webhook触发器应可修改或重置地址以应对人事变动;4) 优化部署脚本执行,解决如`#!/bin/bash`导致的执行问题;5) 强化部署脚本模板和检查机制;6) 解决偶现的node.js打包异常。
309 4
|
12天前
|
监控 数据可视化 测试技术
云效流水线 Flow 评测:助力企业高效完成 CICD 全流程
云效流水线 Flow 评测显示其在CI/CD领域表现出色,尤其适合新人上手。具备直观的可视化编辑和Yaml化选项,丰富的文档教程,以及全面的功能,如多代码源支持、自动化测试、稳定部署及阿里云服务集成。此外,Flow性能稳定,监控功能强,且高度可扩展,支持插件和API集成。相比其他工具,Flow在成本、功能和性能上有竞争优势,特别适合与阿里云生态结合的团队。作为一款易用且性价比高的工具,Flow值得推荐给各类企业。
411 12
|
12天前
|
Cloud Native 关系型数据库 分布式数据库
数据库性能诊断工具DBdoctor通过阿里云PolarDB产品生态集成认证
DBdoctor(V3.1.0)成功通过阿里云PolarDB分布式版(V2.3)集成认证,展现优秀兼容性和稳定性。此工具是聚好看科技的内核级数据库性能诊断产品,运用eBPF技术诊断SQL执行,提供智能巡检、根因分析和优化建议。最新版V3.1.1增加了对PolarDB-X和OceanBase的支持,以及基于cost的索引诊断功能。PolarDB-X是阿里巴巴的高性能云原生分布式数据库,兼容MySQL生态。用户可通过提供的下载地址、在线试用链接和部署指南体验DBdoctor。
168 0
|
12天前
|
弹性计算 安全 Java
基于云效流水线 Flow的测评报告
基于云效流水线 Flow的测评报告
535 6
基于云效流水线 Flow的测评报告
|
12天前
|
弹性计算 Java Maven
云效流水线 Flow 评测
Java开发团队青睐云效流水线Flow作为CI/CD工具,因其对Java/Maven的良好支持,直观界面,与阿里云ECS的集成及实时反馈。Flow功能全面,开放且可定制,尤其适合已使用阿里云服务的团队。尽管在非阿里云服务集成上有改进空间,但Flow的性价比和端到端支持使其成为推荐选择。
82 2

热门文章

最新文章