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方式进行管理,简化了运维管理成本。

目录
相关文章
|
运维 负载均衡 监控
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
1231 0
|
运维 Kubernetes 网络协议
基于虚拟服务配置的渐进式迁移实践:Istio集群至ASM集群的平滑切换
本文介绍了从Istio+k8s环境迁移到阿里云ASM+ACK环境的渐进式方法,通过配置虚拟服务和入口服务实现新老集群间的服务调用与流量转发,确保业务连续性与平滑迁移
1017 132
|
Kubernetes Cloud Native 持续交付
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
|
负载均衡 Kubernetes 算法
服务网格 ASM 负载均衡算法全面解析
在本文中,笔者将解析服务网格的多种负载均衡算法的实现原理和使用场景,为服务网格负载均衡算法的选择提供参考。
|
负载均衡 安全 网络协议
如何通过计算巢在ACK集群上使用Istio服务网格
本文主要介绍怎么通过计算巢部署Isito服务网格,并介绍了使用示例。
|
Kubernetes Cloud Native 容器
全景剖析阿里云容器网络数据链路(六)—— ASM Istio
本文是[全景剖析容器网络数据链路]第六部分部分,主要介绍ASM Istio模式下,数据面链路的转转发链路。
1553 7
全景剖析阿里云容器网络数据链路(六)—— ASM Istio
|
运维 Kubernetes Cloud Native
服务网格实施周期缩短 50%,丽迅物流基于阿里云 ACK 和 ASM 的云原生应用管理实践
通过本文介绍丽迅物流关于基于阿里云服务网格 ASM 如何加速企业业务云原生化进程的实践经验。
|
监控 安全 测试技术
服务网格和CI/CD集成:讨论服务网格在持续集成和持续交付中的应用。
服务网格和CI/CD集成:讨论服务网格在持续集成和持续交付中的应用。
252 0
|
Kubernetes 监控 Go
在Kubernetes上安装和配置Istio:逐步指南,展示如何在Kubernetes集群中安装和配置Istio服务网格
在Kubernetes上安装和配置Istio:逐步指南,展示如何在Kubernetes集群中安装和配置Istio服务网格
660 0
|
Cloud Native 前端开发 JavaScript
《Istio 服务网格在生产环境的实践与挑战》
《Istio 服务网格在生产环境的实践与挑战》
369 0