在阿里云容器服务上基于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 集群。具体过程可以参考创建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,比较简单地集成到自己项目的微服务开发中。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
存储 Kubernetes Docker
容器服务ACK常见问题之阿里云控制台进不去了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
2月前
|
人工智能 运维 Kubernetes
阿里云容器服务ACK AI助手正式上线带来的便利性
作为开发者想必大家都知道,云原生容器技术的优势,尤其是近两年的随着容器技术的迅猛发展,Kubernetes(K8s)已成为广泛应用于容器编排和管理的领先解决方案,但是K8s的运维复杂度一直是挑战之一。为了应对这一问题,就在最近,阿里云容器服务团队正式发布了ACK AI助手,这是一款旨在通过大模型增强智能诊断的产品,旨在帮助企业和开发者降低Kubernetes(K8s)的运维复杂度。那么本文就来详细讲讲关于这款产品,让我们结合实际案例分享一下K8s的运维经验,探讨ACK AI助手能否有效降低K8s的运维复杂度,并展望ACK AI助手正式版上线后的新功能。
271 2
阿里云容器服务ACK AI助手正式上线带来的便利性
|
3月前
|
Kubernetes 容器
要获取ACK(阿里云容器服务)集群中的Deployment
要获取ACK(阿里云容器服务)集群中的Deployment【1月更文挑战第8天】【1月更文挑战第40篇】
64 4
|
3月前
|
Kubernetes 监控 调度
阿里云容器服务ACK
阿里云容器服务ACK(Alibaba Cloud Container Service for Kubernetes)提供高性能、可伸缩的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理。在ACK中,利用cGPU(Containerized GPU)技术可以实现GPU资源的共享,提高GPU利用率,降低整体成本。
68 6
|
1月前
|
弹性计算 缓存 Kubernetes
什么是阿里云弹性容器实例?弹性容器实例优势及应用场景介绍
弹性容器实例是阿里云的云服务器产品,使用弹性容器实例之后,用户无需管理底层 ECS 服务器,只需要提供打包好的镜像,即可运行容器,与阿里云容器服务无缝对接并仅为容器实际运行消耗的资源付费。本文介绍了阿里云弹性容器实例的、功能特性、产品优势及应用场景。
什么是阿里云弹性容器实例?弹性容器实例优势及应用场景介绍
|
2月前
|
Kubernetes 监控 Cloud Native
阿里云云原生容器高级工程师认证(ACP级-Alibaba Cloud Certification Professional)考试大纲
介绍阿里云云原生容器高级工程师认证(ACP级-Alibaba Cloud Certification Professional)所需具备的知识及学习方法等。
178 2
|
3月前
|
人工智能 运维 Kubernetes
期待已久!阿里云容器服务 ACK AI 助手正式上线
期待已久!阿里云容器服务 ACK AI 助手正式上线
|
3月前
|
Java Maven Docker
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
125 0
|
3月前
|
存储 Kubernetes 监控
阿里云分布式云容器平台
阿里云分布式云容器平台(ACK One)是一款面向混合云、多集群、分布式计算、容灾等场景推出的企业级云原生平台。它支持连接并管理任何地域、任何基础设施上的Kubernetes集群,提供一致的管理和社区兼容的API,支持对计算、网络、存储、安全、监控、日志、作业、应用、流量等进行统一运维管控。
49 4
|
3月前
|
容器
阿里云容器服务 ACK 产品技术动态(202312)
阿里云容器服务 ACK 产品技术动态(202312)

相关产品

  • 容器计算服务