k8s 查看pod流量_Kubernetes的service mesh – 第四部分:通过流量切换持续部署

概述除了服务发现、顶层指标和TLS,linkerd 也提供一种称为dtabs的强大的路由语言,它可以更改应用拓扑中的请求,甚至是单独某个请求的请求路径。本文中,我们会给您展示如何使用linkerd作为服务网格对新代码进行CI/CD管道最后一步的蓝绿发布。

注意:这是关于Linkerd、Kubernetes和service mesh的系列文章其中一篇,其余部分包括:

1.Top-line service metrics

2.Pods are great, until they’re not

3.Encrypting all the things

4.Continuous deployment via traffic shifting(本文)

5.Dogfood environments, ingress, and edge routing

6.Staging microservices without the tears

7.Distributed tracing made easy

8.Linkerd as an ingress controller

9.gRPC for fun and profit

10.The Service Mesh API

11.Egress

12.Retry budgets, deadline propagation, and failing gracefully

13.Autoscaling by top-line metrics

这个系列之前的安装,我们已经示范了如果使用类似linderd这样的服务网格工具捕获顶层服务指标和透明的给应用添加TLS,而无需修改应用的代码。

本文中,你可以看到关于使用linkerd路由规则(称为dtabs)的示例——在CI/CD管道的最后一步的蓝绿部署中,在服务的新旧版本间切换请求流量。

持续部署(CD)是持续集成(CI)的一个扩展,在这个过程里,基于连续的基础设施,代码被推送到生产。这个过程是与开发过程强耦合的。当然,它依赖于高度的自动化,以求缩短开发与部署之间的时间,以便公司可以快速的迭代他们的产品。

对于多服务或是微服务架构,CD过程的最后一步部署步骤,它本身是有风险的,因为运行时环境决定着很多运行时行为,尤其生产上还跑着量。在这种情况下,类似蓝绿部署那种平滑的对外就很重要了。

在多个linkerd之间调配流量,需要一个中央的流量控制工具。我们推荐namerd,一个提供路由规则的服务,它有提供路由规则服务的API并做了持久化存储。你可以通过阅读我们之前的博文routing in linkerd来了解更多关于namerd如何与生产系统集成的信息。

我们将通过linkerd-examples github 仓库中的一个示例应用来演示蓝绿部署。这个示例程序是个”hello world”的微服务应用,由一个”hello”服务接收进来的请求,并且调用”world”服务,之后返回。Jenkins作为自动化工具,我们使用Jenkins Pipeline插件部署新版本的”world”服务。

Kubernetes的服务网格

在开始持续发布前,我们需要先初始化部署hello world应用到Kubernetes,通过linkerd和namerd路由请求。这些通过使用linkerd-examples中的Kubernetes配置很容易做到这一点。

第一步: 安装NAMERD

我们从安装namerd开始,namerd管理着dtabs,而dtabs是我们用来编排蓝绿部署的。此处请注意所用的namerd configuration使用ThirdPartyResource APIs,并依赖于Kubernetes 1.2+的集群且启用了ThirdPartyResource。

使用默认的Kubernetes namespace安装namerd,运行:

kubectl apply -f https://raw.githubusercontent.com/linkerd/linkerd-examples/master/k8s-daemonset/k8s/namerd.yml

通过查看namerd的管理页面可以确定安装是否成功(注意需要等几分钟以便 ingress IP可用):

NAMERD_INGRESS_LB=$(kubectl get svc namerd -o jsonpath="{.status.loadBalancer.ingress[0].*}")

open http://$NAMERD_INGRESS_LB:9991 # on OS X

如果外部负载均衡对集群不可见,则使用hostIP:

NAMERD_HOST_IP=$(kubectl get po -l app=namerd -o

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值