启用隧道ip和不启用_使用Skupper启用多云Kubernetes通讯

启用隧道ip和不启用

介绍

在尝试将多云方法纳入其基础架构目标时,工程团队面临许多挑战。 Kubernetes可以很好地解决其中的一些问题,但是管理跨越多个区域中多个云提供商的群集的通信对于团队来说可能是艰巨的任务。 通常,这需要复杂的VPN和特殊的防火墙规则才能进行多云群集通信。

在这篇文章中,我将向您介绍Skupper,这是一个开源项目,用于在Kubernetes集群之间实现安全通信。 Skupper允许您的应用程序跨越多个云提供商,数据中心和区域。 让我们来看看它的作用!

入门

本教程将演示如何在多个公共和私有集群之间分配Istio Bookinfo Application微服务。 这些服务不需要更改代码即可在分布式应用程序环境中工作。 使用Skupper,应用程序的行为就像所有服务都在同一群集中运行一样。

在本教程中,您将在命名空间aws-eu-west的远程公共群集上部署productpagerating服务,并在命名空间laptop的本地本地群集中部署detailsreview服务。

概述图1-Bookinfo服务部署

上图显示了如何部署服务。

  • 每个群集运行两个应用程序服务。
  • productpage服务的入口路由使Internet用户可以访问该应用程序。

如果所有服务都安装在公共群集上,则该应用程序将按最初的设计运行。 但是,由于其中两个服务位于便携式计算机群集上,因此该应用程序将失败。 productpage无法将请求发送至详细信息评论

该演示将展示Skupper如何解决服务部署这种安排所带来的连接性问题。

图2-使用Skupper部署Bookinfo服务

Skupper是一个分布式系统,其安装在一个或多个集群或名称空间中运行。 已连接的Skupper安装共享有关每个安装提供哪些服务的信息。 每个Skupper安装都将学习在每个其他安装中公开哪些服务。 然后,Skupper在每个名称空间中运行代理服务端点,以正确地将请求路由到每个公开服务或从每个公开服务路由。

  • 在公共名称空间中, 详细信息审阅代理会拦截对其服务的请求,并将其转发到Skupper网络。
  • 在私有名称空间中, 详细信息审阅代理从Skupper网络接收请求,并将其发送到相关服务。
  • 在私有名称空间中, 评级代理拦截对服务的请求,并将其转发到Skupper网络。
  • 在公共名称空间中, 评级代理从Skupper网络接收请求,并将其发送到相关服务。

先决条件

要运行本教程,您将需要:

步骤1:部署Bookinfo应用程序

此步骤为四个Bookinfo微服务中的每一个创建服务和部署。

命名空间aws-eu-west

$ kubectl apply -f public-cloud.yaml
service/productpage created
deployment.extensions/productpage-v1 created
service/ratings created
deployment.extensions/ratings-v1 created

命名空间laptop

$ kubectl apply -f private-cloud.yaml 
service/details created
deployment.extensions/details-v1 created
service/reviews created
deployment.extensions/reviews-v3 created

第2步:公开公共产品页面服务

命名空间aws-eu-west

kubectl expose deployment/productpage-v1 --port 9080 --type LoadBalancer

内BookInfo应用从公共互联网通过这个入口端口的productpage服务来访问。

步骤3:观察该应用程序不起作用

Bookinfo应用程序的网址可以从名称空间aws-eu-west

$echo $(kubectl get service/productpage -o jsonpath= 'http://{.status.loadBalancer.ingress[0].hostname}:9080' )

在网络浏览器中打开地址。 Productpage响应,但该页面将显示错误,因为无法访问名称空间laptop中的服务。

我们现在可以解决该问题。

步骤4:设定Skupper

此步骤将初始化每个集群上的Skupper环境。

命名空间laptop

skupper init

命名空间aws-eu-west

skupper init

现在,Skupper基础结构正在运行。 在每个控制台终端中使用skupper status可查看Skupper可用。

步骤5:连接Skupper安装

现在,您需要使用Skupper连接来连接名称空间。 这是一个两步过程。

skupper connection-token <file>命令指示Skupper生成带有证书的秘密令牌文件,该证书将权限授予其他Skupper实例连接到此Skupper的网络。

注意:保护该文件的方式与保护任何包含登录凭据的文件的方式相同。

  • skupper connect <file>命令指示Skupper连接到另一个Skupper的网络。 此步骤完成了Skupper连接。

请注意,在这种安排中,Skupper实例加入以形成对等网络。 通常,打开网络端口的Skupper将位于公共群集上。 在laptop运行的群集甚至可能没有可从Internet访问的地址。 建立连接后,Skupper网络成员是对等成员,无论哪个Skupper打开了网络端口以及与哪个端口相连。

此演示中的控制台终端由同一用户在同一主机上运行。 这使得$ {HOME}目录中的令牌文件可用于两个终端。 如果您的终端在不同的计算机上,则可能需要使用scp或类似的工具将令牌文件传输到托管laptop终端的系统。

生成Skupper网络连接令牌

命名空间aws-eu-west

skupper connection-token${HOME} /PVT-to-PUB-connection-token.yaml

打开Skupper连接

命名空间laptop

skupper connect${HOME} /PVT-to-PUB-connection-token.yaml

检查连接

命名空间aws-eu-west

$ skupper status
Skupper enabledfor "aws-eu-west" . It is connected to 1 other sites.

命名空间laptop

$ skupper status
Skupper enabledfor "laptop" . It is connected to 1 other sites.

步骤6:虚拟化您要共享的服务

现在,您具有一个能够进行多集群通信的Skupper网络,但是没有与之关联的服务。 此步骤使用kubectl annotate命令通知Skupper服务将包含在Skupper网络中。

Skupper将注释用作必须虚拟化服务的指示。 接收注释的服务是网络请求的物理目标,Skupper在其他名称空间中部署的代理是网络请求的虚拟目标。 然后,Skupper基础结构在虚拟服务和目标服务之间路由请求。

命名空间aws-eu-west

$ kubectl annotate service ratings skupper.io/proxy=http
service/ratings annotated

命名空间laptop

$ kubectl annotate service details skupper.io/proxy=http
service/details annotated

$ kubectl annotate service reviews skupper.io/proxy=http
service/reviews annotated

Skupper现在使带注释的服务可用于Skupper网络中的每个名称空间。 内BookInfo应用程序将作为市民群集上productpage服务具有访问私有集群上的细节评论服务和私人群集上的评论服务就可以访问该评级服务市民群集上。

步骤7:观察该应用程序是否正常运行

可以从名称空间aws-eu-west找到Bookinfo应用程序的网址:

$echo $(kubectl get service/productpage -o jsonpath= 'http://{.status.loadBalancer.ingress[0].hostname}:9080' )

在网络浏览器中打开地址。 该应用程序现在应该可以正常运行了。

清理

Skupper和Bookinfo服务可能会从群集中删除。

命名空间aws-eu-west

skupper delete
kubectl delete -f public-cloud.yaml

命名空间laptop

skupper delete
kubectl delete -f private-cloud.yaml

最后的想法

借助Skupper之类的工具,启用多云方法具有很多好处,并且变得越来越容易。 如果有时间,请在其Github Repo上尝试Skupper的其他示例。 希望您从这篇文章中学到一些东西。 敬请期待更多!

关于作者-Sudip是一位具有15年以上工作经验的解决方案架构师,并且是Javelynn的创始人。 他喜欢通过写作分享自己的知识,当他不这样做时,他一定是在钓鱼或下棋。

先前发布在 https://appfleet.com/上

翻译自: https://hackernoon.com/enabling-multi-cloud-kubernetes-communication-with-skupper-glz3u6p

启用隧道ip和不启用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值