Istio生态系统ON ASM(1):在阿里云服务网格ASM中集成ArgoCD实现GitOps

简介: 背景在阿里云服务网格ASM中,支持通过ArgoCD来进行应用程序的发布、更新,简化了运维成本。开发者提交YAML编写的应用程序定义(Deployment、Service)和流量管理(VirtualService、Gateway、DestinationRule)到Git仓库。ArgoCD会监控集群中应用程序当前的Deployment、Service、VirtualService等资源的状态,与Git

背景

在阿里云服务网格ASM中,支持通过ArgoCD来进行应用程序的发布、更新,简化了运维成本。开发者提交YAML编写的应用程序定义(Deployment、Service)和流量管理(VirtualService、Gateway、DestinationRule)到Git仓库。ArgoCD会监控集群中应用程序当前的Deployment、Service、VirtualService等资源的状态,与Git仓库中的资源期望编排进行比较,以Git仓库中的内容为基准。并且能够在 Git 仓库更改时自动/手动去同步和部署应用程序。

2. 前提条件

  • 创建Istio版本为1.12.4.50或更高版本的阿里云服务网格 (ASM) 企业版实例;
  • 创建容器服务Kubernetes (ACK) 集群;
  • 将ACK集群添加到ASM实例;
  • 已安装ArgoCD;
  • Git仓库;

3. 指导步骤

  1. 安装ArgoCD
  2. 启用ASM的数据面KubeAPI访问能力
  3. 创建ASM网关
  4. 将ACK集群添加到ASM实例
  5. 通过ArgoCD部署Istio资源
  6. GitOps流程演示

3.1 安装 ArgoCD

如果已经安装了ArgoCD,请跳过此步骤。ArgoCD的安装和部署可以参考它的 主页

阿里云容器服务(ACK)应用中心具有内置的ArgoCD功能,也可以避免手动安装ArgoCD。ACK应用程序中心允许检查应用程序状态,可以使用Git仓库和Helm chart将应用程序版本部署到Kubernetes集群。可以回滚和发布应用程序版本。

3.2 启用ASM的数据面KubeAPI访问能力

注意:由于阿里云服务网格(ASM)是一个托管istio兼容的控制平面,ArgoCD管理的服务网格(ASM)控制平面和数据平面(Kubernetes容器服务(ACK))不在同一个Kubernetes集群环境中。我们需要在ASM中启用“数据平面KubeAPI访问”,然后ArgoCD才能像访问ACK集群的资源一样访问ASM集群中的Istio资源。

在托管模式下,服务网格ASM和ArgoCD所管理的容器服务ACK并不处于同一个集群环境,需要启用阿里云服务网格ASM特有的“数据面KubeAPI访问能力”后,使得ArgoCD能像访问ACK集群的资源一样,访问ASM集群中的Istio资源。在阿里云服务网格 ASM 控制台中,如下图所示,启用该能力。

3.3. 创建ASM网关 

在阿里云服务网格ASM控制台 -> ASM网关 -> 创建ASM网关处,创建一个ASM网关,提供80和443端口。

3.4 将ACK群集作为外部群集添加到ArgoCD(可选)

如果ArgoCD和ASM管理的ACK集群不在同一个集群中,我们需要将ACK集群添加到ArgoCD。

ACK集群可以使用Kubernetes secret作为外部集群添加到ArgoCD中,tlsClientConfig可以从ACK KubeConfig文件中获取:

caData=证书颁发机构数据,certData=客户端证书数据,keyData=客户端密钥数据

3.5 通过ArgoCD应用程序部署istio资源

Istio资源现在可以定义为Kubernetes清单,并推送到用于部署应用程序k8s编排的Git仓库中

3.5.1 Create APP

这里我们使用Istio book-info示例,Git仓库地址为https://github.com/AliyunContainerService/asm-labs.git。您先将此仓库Fork到您本地

分支选择argocd-asm,Path为argo-cd/bookinfo。

3.5.2 查看应用状态

创建完成后如下所示:

点击bookinfo可查看创建的资源状态。

3.5.3 在阿里云控制台查看资源状态

在ASM控制台可以看到创建的资源, 如下所示创建出的VirtualService。

可以点击bookinfo名称查看具体的YAML内容。

在 ACK控制台也可以看到创建的资源, 如下所示创建出的Deployment。

3.5.4 访问测试

从ASM控制台获取ASM网关的地址,在浏览器输入http://{ASM-Gateway-IP}/productpage进行访问

因为Istio book-info的reviews有3个版本,我们现在还未指定版本,每次刷新,右侧数据显示会不一样。我们之后通过GitOps的流程进行指定。

3.6 GitOps Demo

我们通过配置流量规则,正常只展示v1版本的reviews,只有当登录用户名为jason时,显示v2版本。并且将Deployment reviews-v1的副本修改为2。添加如下内容到我们的Git仓库的argo-cd/bookinfo/istio-route.yaml文件中。并修改argo-cd/bookinfo/bookinfo.yaml的reviews-v1 Deployment副本数为2。

3.6.1 修改本地文件

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: reviews
        subset: v2
  - route:
    - destination:
        host: reviews
        subset: v1
---

3.6.2 Commit & Push

$ git add *
$ git commit -m "reviews-v1"
 reviews-v1
 2 files changed, 22 insertions(+), 22 deletions(-)
$ git push 

3.6.3 同步

如果开启了自动同步,ArgoCD会自动同步Git的配置到集群,如果没有,可以手动点一下同步按钮。

如下所示, 因为文件存在了变更, Argo控制台中会自动给出OutOfSync状态的提示, 点击SYNC按钮完成同步。

同步之后, 在ASM控制台可以查看同步之后创建的资源, 如下所示创建出的VirtualService。

可以点击reviews名称查看具体的YAML内容。

在 ACK控制台也可以看到更新之后的资源, 如下所示 Deployment reviews-v1 副本数更新为2.

3.6.4 效果查看

根据路由规则,在未登录状态下,访问http://{ASM-Gateway-IP}/productpage,固定为review-v1版本。

reviews-v1的副本数也生效为2。

如果我们使用jason为用户名(任意密码)登录后,看到的是v2版本。

4. 总结

实践中结合阿里云服务网格ASM的最新特性,使用ArgoCD将资源编排以GitOps方式进行管理,简化了运维管理成本。

目录
相关文章
|
11天前
|
安全 定位技术 API
婚恋交友系统匹配功能 婚恋相亲软件实现定位 语音社交app红娘系统集成高德地图SDK
在婚恋交友系统中集成高德地图,可实现用户定位、导航及基于地理位置的匹配推荐等功能。具体步骤如下: 1. **注册账号**:访问高德开放平台,注册并创建应用。 2. **获取API Key**:记录API Key以备开发使用。 3. **集成SDK**:根据开发平台下载并集成高德地图SDK。 4. **配置功能**:实现定位、导航及基于位置的匹配推荐。 5. **注意事项**:保护用户隐私,确保API Key安全,定期更新地图数据,添加错误处理机制。 6. **测试优化**:完成集成后进行全面测试,并根据反馈优化功能。 通过以上步骤,提升用户体验,提供更便捷的服务。
|
2天前
|
人工智能 数据挖掘 API
R2R:开源的 RAG 集成系统,支持多模态处理、混合搜索、知识图谱构建等增强检索技术
R2R 是一款先进的 AI 检索增强生成平台,支持多模态内容处理、混合搜索和知识图谱构建,适用于复杂数据处理和分析的生产环境。
27 3
R2R:开源的 RAG 集成系统,支持多模态处理、混合搜索、知识图谱构建等增强检索技术
|
5月前
|
分布式计算 DataWorks 关系型数据库
MaxCompute 生态系统中的数据集成工具
【8月更文第31天】在大数据时代,数据集成对于构建高效的数据处理流水线至关重要。阿里云的 MaxCompute 是一个用于处理大规模数据集的服务平台,它提供了强大的计算能力和丰富的生态系统工具来帮助用户管理和处理数据。本文将详细介绍如何使用 DataWorks 这样的工具将 MaxCompute 整合到整个数据处理流程中,以便更有效地管理数据生命周期。
163 0
|
2月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
44 2
|
2月前
|
XML Java 数据库连接
SpringBoot集成Flowable:打造强大的工作流管理系统
在企业级应用开发中,工作流管理是一个核心组件,它能够帮助我们定义、执行和管理业务流程。Flowable是一个开源的工作流和业务流程管理(BPM)平台,它提供了强大的工作流引擎和建模工具。结合SpringBoot,我们可以快速构建一个高效、灵活的工作流管理系统。本文将探讨如何将Flowable集成到SpringBoot应用中,并展示其强大的功能。
350 1
|
3月前
|
SQL 数据库连接 数据库
管理系统中的Visual Studio与SQL集成技巧与方法
在现代软件开发和管理系统中,Visual Studio(VS)作为强大的集成开发环境(IDE),与SQL数据库的紧密集成是构建高效、可靠应用程序的关键
|
3月前
|
SQL 监控 数据库
管理系统VS SQL:高效集成的关键技巧与方法
在现代企业信息化建设中,管理系统(如ERP、CRM等)与SQL数据库之间的紧密集成是确保数据流动顺畅、业务逻辑高效执行的关键
|
4月前
|
并行计算 关系型数据库 分布式数据库
朗坤智慧科技「LiEMS企业管理信息系统」通过PolarDB产品生态集成认证!
近日,朗坤智慧科技股份有限公司「LiEMS企业管理信息系统软件」通过PolarDB产品生态集成认证!
|
5月前
|
存储 Prometheus 监控
Grafana 与 Prometheus 集成:打造高效监控系统
【8月更文第29天】在现代软件开发和运维领域,监控系统已成为不可或缺的一部分。Prometheus 和 Grafana 作为两个非常流行且互补的开源工具,可以协同工作来构建强大的实时监控解决方案。Prometheus 负责收集和存储时间序列数据,而 Grafana 则提供直观的数据可视化功能。本文将详细介绍如何集成这两个工具,构建一个高效、灵活的监控系统。
551 1
|
5月前
|
机器学习/深度学习 开发工具 git
Jupyter 与版本控制系统的集成
【8月更文第29天】在数据科学和机器学习项目中,Jupyter Notebook 提供了一个强大的环境来编写代码、执行实验和记录结果。然而,随着项目的复杂度增加以及团队规模的扩大,版本控制变得至关重要。Git 是最常用的版本控制系统之一,它可以帮助团队协作、追踪变更历史、管理分支等。本文将探讨如何将 Git 与 Jupyter Notebook 集成起来,从而更好地管理代码和文档。
113 0