11

麦斯科技 · 2022年04月25日

为基于Arm Neoverse的处理器部署Tetrate Istio发行版

https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/deploying-tetrate-istio-distribution-for-arm-neoverse-based-aws-graviton-processors

作者:Pranay Bakre 2022年4月12日

这篇博客文章提供了一些关于最近Tetrate和Arm Neoverse发布的必要背景。然后,它将向您展示如何在基于AWS Graviton2的Amazon EKS集群上部署Tetrate Istio发行版。

Arm Neoverse如何为服务网格(Service Mesh)提供动力

服务网格背后的核心思想是互连应用程序的各种服务,并提供基础设施和管理层。每个服务都被分配了一个相同的代理,该代理处理分配给它的服务的通信任务。sidecar代理有助于满足安全性、可观察性、可升级性等需求。服务网格允许应用程序只关注应用程序所需的业务逻辑。

Istio开源项目是服务网格方法的主要实现。它提供服务发现、负载平衡、安全性、mTLS加密和身份验证等功能。Istio使用特使代理,这是一个CNCF开源项目,它充当每个服务实例的侧车。在典型的云原生或基于微服务的应用程序中,一个侧车容器将自身连接到每个服务或应用程序的Kubernetes吊舱。该侧车为服务提供监控和安全。它拦截所有服务流量,该流量和代理实例构成服务网格的数据平面。Istio是控制平面,负责管理代理以路由流量、实施策略、收集指标和配置数据平面。

Tetrate是一家服务网格公司,是开源Istio项目的主要贡献者。它通过以下三种产品帮助组织采用Istio/Envoy:
. Tetrate Istio发行版(TID)是由Tetrate审查的一组免费Istio发行版,包括其他功能。(每个Istio版本都包括Envoy代理的扩展版本。)
. Tetrate Istio Subscription(TIS)是一项为Istio发布提供支持的付费服务。
. Tetrate Service Bridge(TSB)是一种商业软件,为Envoy和Istio提供管理平面。Istio是在集群级别配置的。TSB在更高的抽象级别上工作,例如工作空间,它可以跨越位于不同区域或运行在不同云和/或本地的多个集群。

Tetrate正在启动对Arm Neoverse技术的支持,包括AWS中基于Neoverse的Kubernetes集群。AWS Graviton 2处理器使用64位Arm Neoverse内核构建,为在Amazon EC2上运行的云工作负载提供最佳性价比。对于各种工作负载,这些优化实例的性价比基于当前一代x86的实例高出40%。这些实例包括Amazon EC2通用实例(M6g、M6gd、T4g)、计算优化实例(C6g、C6gd、C6gn)和内存优化实例(R6g、R6gd、X2gd)。

将Tetrate Istio分发部署到AWS Graviton2

在下面的步骤中,我们将演示在基于AWS Graviton2的Amazon EKS集群上部署Tetrate Istio分发版的无缝性。以下是本节涵盖的主要组成部分:
.来自Tetrate的Istio多架构二进制文件在EKS集群上安装和调用istioctl
.安装在Kubernetes集群上的Istio组件——Istio核心、Istiod、Istio ingress和egress

.Kiali-一个dashboard和管理控制台,用于可视化和排除不同组件的故障
.Bookinfo应用程序示例-包含多个相互交互的服务
.Dashboard用于观察流量分割、指标、应用程序版本等。

配置

先决条件:

.AWS帐户访问
.Tetrate Istio Distribution 二进制文件

.Kubectl二进制文件

基于M6g EC2实例,为Amazon EKS集群提供由3个节点组成的托管节点组。一旦集群启动并运行,我们就可以使用kubectl验证所有节点是否启动,如图1所示。

kubectl get nodes -o wide

kubectl get nodes -o wide

Tetrate-Fig1_2D00_2.jpg

图1。基于AWS Gravion2 EC2实例的EKS工作节点

从这个位置(https://dl.getistio.io/public/raw/files/istio-1.12.1-tetrate-multiarch-v1-linux-arm64.tar.gz)下载Tetrate Istio发行版二进制文件,并将其解压缩,如图2所示。

Tetrate-Fig2.jpg

图2。Tetrate Istio Distribution 安装

将istioctl二进制文件添加到路径中,并使用演示配置文件安装Istio。此命令安装具有所有默认功能的Istio,包括–Istio核心、Istiod、Istio ingress和egress网关。

Tetrate-Fig3.jpg

图3。在基于Arm的EKS集群上安装Istioctl

注意:如果您无法访问基于Arm的客户端,只需在AWS中创建一个t4g实例,并将其用于安装TID和与集群交互。

一旦安装成功完成,我们就会看到在集群中创建的Istio名称空间和POD。

Tetrate-Fig4.jpg

图4。在群集中创建的Istio命名空间

Tetrate-Fig5.jpg

图5。与Istio有关的Kubernetes pods

为了可视化应用程序的服务到服务(也就是sidecar代理到sidecar代理)通信,我们安装了一个开源仪表板,名为Kiali。它还帮助我们调试应用程序中的任何问题。

要安装Kiali,请添加以下helm repo:https://kiali.org/helm-charts.

使用以下命令安装Kiali operator:

helm install \

> --set cr.create=true \

> --set cr.namespace=istio-system \

> --namespace kiali-operator \

> --create-namespace \

> kiali-operator \

> kiali/kiali-operator

Tetrate-Fig6.jpg

图6。Kiali dashboard安装

安装成功后,使用以下命令验证Kiali的所有组件:

kubectl get all -n kiali-operator

在集群上安装演示应用程序之前,必须使用以下命令启用sidecar injection:

kubectl label namespace default istio-injection=enabled

在kubernetes集群上使用此yaml文件安装Bookinfo应用程序。应用程序运行后,执行以下命令以验证其工作情况。


kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"

我们看到以下response:

Tetrate-Bookinfo-response.jpg

我们可以通过几种方法远程访问应用程序——通过创建节点端口、ClusterIP或创建ingress网关。在本博客中,我们使用的是现有的Istio基础设施和网关。使用以下命令部署Bookinfo应用程序网关:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.13/samples/bookinfo/networking/bookinfo-gateway.yaml

为了让Kiali显示Bookinfo应用程序的指标,我们需要在kubernetes集群上部署Prometheus。它将收集应用程序中的所有指标,并将其发送给Kiali。要在集群上安装prometheus,请使用以下命令:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.13/samples/addons/prometheus.yaml

现在让我们看看下面的Kiali dashboard。在这个仪表板中,我们可以看到Bookinfo应用程序的不同组件以及它们之间的通信方式。

Tetrate-Fig7.jpg

图7。Kiali dashboard显示Bookinfo应用程序的不同组件

在图8中,我们还可以看到不同的服务以及每个服务所属的名称空间。

Tetrate-Fig8.jpg

图8。Kubernetes集群中的多服务

以下部分显示了由Istio service mesh管理的应用程序的不同版本。

Tetrate-Fig9.jpg

图9。集群中Bookinfo应用程序的不同版本

结论

如本博客所示,Tetrate Istio Distribution service mesh可以无缝安装在基于AWS Graviton2的亚马逊EKS集群上。如果您有任何问题、意见或担忧,请随时联系我们Tetrate(https://www.tetrate.io/contact-us/) 和Arm(sw-ecosystem@arm.com)。

推荐阅读
关注数
5857
内容数
525
定期发布Arm相关软件信息,微信公众号 ArmSWDevs,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息