在阿里云容器服务上基于Istio实现东西向流量管理

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文通过示例演示了Istio针对集群内服务之间的东西向流量管理、或者称之为服务网格之间的流量管理。

概述

使用 Ingress 将Kubernetes中的应用暴露成对外提供的服务,针对这个对外暴露的服务可以实现灰度发布、流量管理等。我们把这种流量管理称之为南北向流量管理,也就是入口请求到集群服务的流量管理。

而Istio是侧重于集群内服务之间的东西向流量管理、或者称之为服务网格之间的流量管理。

Istio是一个用于连接/管理以及安全化微服务的开放平台,提供了一种简单的方式用于创建微服务网络,并提供负载均衡、服务间认证以及监控等能力,并且关键的一点是并不需要修改服务本身就可以实现上述功能。

该样例应用由四个单独的微服务构成,用来演示多种 Istio 特性。该应用模仿某银行金融产品的一个分类,显示某一金融产品的信息。页面上会显示该产品的描述、明细,以及针对特定用户的增值服务。

四个单独的微服务:

• productpage :productpage 微服务会调用 details 和 addedvalues两个微服务,用来生成页面。
• details :该微服务包含了金融产品的信息。
• addedvalues:该微服务包含了针对特定用户的增值服务。它还会调用 styletransfer微服务。
• styletransfer:该微服务提供了转移照片艺术风格的API功能。

addedvalues微服务有 3 个版本:

• v1 版本不会调用 styletransfer 服务,也不会提供风险和投资分析结果。
• v2 版本不会调用 styletransfer 服务,但会提供风险和投资分析结果。
• v3 版本会调用 styletransfer 服务,提供针对特定用户的增值服务,即允许用户上传图片进行风格转换,并返回一张转换后的图片。


准备Kubernetes集群

阿里云容器服务Kubernetes 1.10.4目前已经上线,可以通过容器服务管理控制台非常方便地快速创建 Kubernetes 集群。

确保安装配置kubectl 能够连接上Kubernetes 集群。

部署Istio

打开容器服务控制台,在左侧导航栏中选中集群,右侧点击更多,在弹出的菜单中选中 部署Istio。

图片.png

在打开的页面中可以看到Istio默认安装的命名空间、发布名称;
通过勾选来确认是否安装相应的模块,默认是勾选前四项;
第5项是提供基于日志服务的分布式跟踪能力,本演示中不启用。
图片.png

点击 部署Istio 按钮,几十秒钟之后即可完成部署。

自动 Sidecar 注入

查看namespace:

图片.png

点击编辑,为 default 命名空间打上标签 istio-injection=enabled。

图片.png

使用 kubectl 部署简单的服务

kubectl apply -f app.yaml

上面的命令会启动全部的3个服务,其中也包括了 addedvalues 服务的三个版本(v1、v2 以及 v3)

定义 Ingress gateway

kubectl apply -f gateway.yaml

确认所有的服务和 Pod 都已经正确的定义和启动

kubectl get svc
kubectl get po

确认网关创建完成

kubectl get gateway

应用缺省目标规则

kubectl apply -f destination-rule-all.yaml

等待几秒钟,等待目标规则生效。这就意味着上述3个微服务已经部署在Istio环境中。
你可以使用以下命令查看目标规则:

kubectl get destinationrules

查看Ingress Gateway的地址

点击左侧导航栏中的服务,在右侧上方选择对应的集群和命名空间,在列表中找到istio-ingressgateway的外部端点地址。

打开浏览器,访问http://{GATEWAY-IP}/productpage

多次刷新页面,会得到如下3种不同的显示内容,也就是上述提到的 3 个版本的addedvalues微服务。

微服务addedvalues版本v1对应的页面:
图片.png

微服务addedvalues版本v2对应的页面:
图片.png

微服务addedvalues版本v3对应的页面:
图片.png

请求路由

请求路由任务首先会把应用的进入流量导向 addedvalues 服务的 v2 版本。
接下来会把特定用户(登录名称以yunqi开头的)的请求发送给 v3 版本,其他用户则不受影响。

kubectl apply -f virtual-service-user-v2-v3.yaml

打开浏览器,访问http://{GATEWAY-IP}/productpage

不论刷新多少次页面,如果没有登录或者登录名不是以yunqi开头的,始终得到如下的显示内容,也就是上述提到的 第2 个版本的addedvalues微服务。

图片.png

图片.png

当使用以yunqi开头的用户名登录时,就会看到如下页面内容, 也就是上述提到的 第3 个版本的addedvalues微服务。
图片.png

注意的是,第3 个版本的addedvalues微服务提供的页面中,按钮是disabled状态,无法点击。这是因为缺省情况下,Istio 服务网格内的 Pod,由于其 iptables 将所有外发流量都透明的转发给了 Sidecar,所以这些集群内的服务无法访问集群之外的 URL,而只能处理集群内部的目标。

下一篇文章中会介绍从集群内访问外部服务的出口的流量管理。

总结

本文通过示例演示了Istio针对集群内服务之间的东西向流量管理、或者称之为服务网格之间的流量管理。

欢迎大家使用阿里云上的容器服务,快速搭建微服务的开放治理平台Istio,比较简单地集成到自己项目的微服务开发中。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
16天前
|
供应链 安全 Cloud Native
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
阿里云飞天企业版容器系列产品获中国信息通信研究院【可信云·容器平台安全能力】先进级认证,这是飞天企业版容器产品获得《等保四级PaaS平台》和《 云原生安全配置基线规范V2.0》之后,本年度再一次获得行业权威认可,证明飞天企业版的容器解决方案具备符合行业标准的最高等级容器安全能力。
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
|
20天前
|
人工智能 运维 Kubernetes
阿里云容器服务AI助手2.0 - 新一代容器智能运维能力
2024年11月,阿里云容器服务团队进一步深度融合现有运维可观测体系,在场景上覆盖了K8s用户的全生命周期,正式推出升级版AI助手2.0,旨在更好地为用户使用和运维K8S保驾护航。
|
1月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
25天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
17天前
|
监控 安全 Cloud Native
阿里云容器服务&云安全中心团队荣获信通院“云原生安全标杆案例”奖
2024年12月24日,阿里云容器服务团队与云安全中心团队获得中国信息通信研究院「云原生安全标杆案例」奖。
|
1月前
|
人工智能 Cloud Native 调度
阿里云容器服务在AI智算场景的创新与实践
本文源自张凯在2024云栖大会的演讲,介绍了阿里云容器服务在AI智算领域的创新与实践。从2018年推出首个开源GPU容器共享调度方案至今,阿里云容器服务不断推进云原生AI的发展,包括增强GPU可观测性、实现多集群跨地域统一调度、优化大模型推理引擎部署、提供灵活的弹性伸缩策略等,旨在为客户提供高效、低成本的云原生AI解决方案。
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
262 77
|
11天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
81 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
21天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈

相关产品

  • 容器计算服务