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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 背景在阿里云服务网格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方式进行管理,简化了运维管理成本。

目录
相关文章
|
2月前
|
分布式计算 DataWorks 关系型数据库
MaxCompute 生态系统中的数据集成工具
【8月更文第31天】在大数据时代,数据集成对于构建高效的数据处理流水线至关重要。阿里云的 MaxCompute 是一个用于处理大规模数据集的服务平台,它提供了强大的计算能力和丰富的生态系统工具来帮助用户管理和处理数据。本文将详细介绍如何使用 DataWorks 这样的工具将 MaxCompute 整合到整个数据处理流程中,以便更有效地管理数据生命周期。
76 0
|
10天前
|
IDE API 开发工具
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
Alibaba Cloud API Toolkit for VSCode 是集成了 OpenAPI 开发者门户多项功能的 VSCode 插件,开发者可以通过这个插件方便地查找API文档、进行API调试、插入SDK代码,并配置基础环境设置。我们的目标是缩短开发者在门户和IDE之间的频繁切换,实现API信息和开发流程的无缝结合,让开发者的工作变得更加高效和紧密。
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
|
16天前
|
人工智能 自然语言处理 关系型数据库
阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成
近日,阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成。
|
18天前
|
Kubernetes 负载均衡 安全
Istio在微服务中释放服务网格的力量
Istio在微服务中释放服务网格的力量
40 4
|
11天前
|
SQL 数据库连接 数据库
管理系统中的Visual Studio与SQL集成技巧与方法
在现代软件开发和管理系统中,Visual Studio(VS)作为强大的集成开发环境(IDE),与SQL数据库的紧密集成是构建高效、可靠应用程序的关键
|
14天前
|
SQL 监控 数据库
管理系统VS SQL:高效集成的关键技巧与方法
在现代企业信息化建设中,管理系统(如ERP、CRM等)与SQL数据库之间的紧密集成是确保数据流动顺畅、业务逻辑高效执行的关键
|
1月前
|
机器学习/深度学习 DataWorks 数据挖掘
基于阿里云Hologres和DataWorks数据集成的方案
基于阿里云Hologres和DataWorks数据集成的方案
56 7
|
1月前
|
并行计算 关系型数据库 分布式数据库
朗坤智慧科技「LiEMS企业管理信息系统」通过PolarDB产品生态集成认证!
近日,朗坤智慧科技股份有限公司「LiEMS企业管理信息系统软件」通过PolarDB产品生态集成认证!
|
1月前
|
存储 SQL 分布式计算
Hologres 与阿里云生态的集成:构建高效的数据处理解决方案
【9月更文第1天】随着大数据时代的到来,数据处理和分析的需求日益增长。阿里云作为国内领先的云计算平台之一,提供了多种数据存储和处理的服务,其中Hologres作为一款实时数仓产品,以其高性能、高可用性以及对标准SQL的支持而受到广泛关注。本文将探讨Hologres如何与阿里云上的其他服务如MaxCompute、DataHub等进行集成,以构建一个完整的数据处理解决方案。
65 2
|
2月前
|
负载均衡 监控 安全
Istio:微服务治理的超级英雄,一键解锁你的服务网格超能力,让管理复杂变简单!
【8月更文挑战第31天】随着云原生技术的发展,微服务架构成为主流,但其复杂性与管理难题也随之增加。Istio作为开源服务网格平台,通过独特的数据平面和控制平面设计,实现了微服务通信的透明管理,简化了治理复杂度。本文将对比Istio与传统微服务管理方法,详细介绍Istio的架构及其工作原理,包括Envoy代理、服务发现、负载均衡、流量管理、安全认证以及监控等功能。Istio不仅简化了微服务治理,还提供了强大的流量控制和安全机制,使开发者能更高效地管理应用。
57 2