Emoji.voto,Linkerd 服务网格(service mesh)的示例应用程序

一个微服务应用程序,允许用户为他们最喜欢的表情符号(emoji)投票,并跟踪排行榜上收到的投票。愿最好的 emoji 获胜。
该应用程序由以下 3 个服务组成:
- emojivoto-web:
Web前端和REST API - emojivoto-emoji-svc:用于查找和列出
emoji的gRPC API - emojivoto-voting-svc:用于投票和排行榜的
gRPC API
实战
腾讯云 K8S 集群实战 Service Mesh—Linkerd2 & Traefik2 部署 emojivoto 应用
运行
在 Minikube 中
使用 Linkerd2 服务网格将应用程序部署到 Minikube。
安装
linkerdCLIcurl https://run.linkerd.io/install | sh
安装
Linkerd2linkerd install | kubectl apply -f -
查看仪表盘!
linkerd dashboard
Inject, Deploy, and Enjoy
kubectl kustomize kustomize/deployment | \
linkerd inject - | \
kubectl apply -f -
使用应用程序!
minikube -n emojivoto service web-svc
在 docker-compose 中
也可以使用 docker-compose(不带 Linkerd2)运行应用程序。
构建并运行:
make deploy-to-docker-compose
Web 应用程序将在 docker 主机的端口 8080 上运行。
通过 URL
独立部署到现有集群:
kubectl apply -k github.com/BuoyantIO/emojivoto/kustomize/deployment
生成一些流量
VoteBot 服务可以为你带来一些流量。它对表情符号“随机”投票如下:
15%的选票投给- 不给 投票时,它会随机选择一个表情符号
如果您使用上述 instructions(部署说明) 运行应用程序,则 VoteBot 将已部署,并将开始向投票端点发送流量。
如果您想手动运行机器人:
export WEB_HOST=localhost:8080 # replace with your web location
go run emojivoto-web/cmd/vote-bot/main.go
发布新版本
要构建和推送 multi-arch docker 镜像:
更新
common.mk中的标签名称创建
Buildx构建器实例docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name=multiarch-builder --driver=docker-container --use
docker buildx inspect multiarch-builder --bootstrap
构建 & 推送
multi-arch docker镜像到hub.docker.comdocker login
make multi-arch
更新:
docker-compose.ymlkustomize/deployment/emoji.ymlkustomize/deployment/vote-bot.ymlkustomize/deployment/voting.ymlkustomize/deployment/web.yml
分发到
Linkerd website repokubectl kustomize kustomize/deployment > ../website/run.linkerd.io/public/emojivoto.yml
kubectl kustomize kustomize/daemonset > ../website/run.linkerd.io/public/emojivoto-daemonset.yml
kubectl kustomize kustomize/statefulset > ../website/run.linkerd.io/public/emojivoto-statefulset.yml
Prometheus 指标
默认情况下,投票服务在端口 8801 上公开有关当前投票计数的 Prometheus 指标。
这可以通过取消设置 PROM_PORT 环境变量来禁用。
本地开发
Emojivoto webapp
这个应用程序是用 React 编写的,并使用 webpack 打包。
使用以下命令运行 emojivoto go services 并在前端进行开发。
设置 proto 文件,构建应用程序
make build
启动投票服务
GRPC_PORT=8081 go run emojivoto-voting-svc/cmd/server.go
[在单独的终端窗口中] 启动 emoji 服务
GRPC_PORT=8082 go run emojivoto-emoji-svc/cmd/server.go
[在单独的终端窗口中] 捆绑前端资源
cd emojivoto-web/webapp
yarn install
yarn webpack # one time asset-bundling OR
yarn webpack-dev-server --port 8083 # bundle/serve reloading assets
[在单独的终端窗口中] 启动 Web 服务
export WEB_PORT=8080
export VOTINGSVC_HOST=localhost:8081
export EMOJISVC_HOST=localhost:8082
# if you ran yarn webpack
export INDEX_BUNDLE=emojivoto-web/webapp/dist/index_bundle.js
# if you ran yarn webpack-dev-server
export WEBPACK_DEV_SERVER=http://localhost:8083
# start the webserver
go run emojivoto-web/cmd/server.go
[可选] 启动投票机器人以自动生成流量。
export WEB_HOST=localhost:8080
go run emojivoto-web/cmd/vote-bot/main.go
查看 emojivoto
open http://localhost:8080
测试 Linkerd 服务配置文件
Service Profiles 是 Linkerd 的一个特性,
它提供了每条路由的功能,如遥测(telemetry)、超时(timeouts)和重试(retries)。
Emojivoto 应用程序旨在通过以下说明展示服务配置文件。
从 .proto 文件生成 ServiceProfile 定义
emoji 和 voting 服务是具有
Protocol Buffers (protobuf)
definition 文件的 gRPC 应用程序。
这些 .proto 文件可用作 linkerd profile 命令的输入,
以创建 ServiceProfile definition yaml 文件。
Linkerd Service Profile 文档
概述了创建 yaml 文件所需的步骤,这些是您可以从该存储库的根目录使用的命令:
linkerd profile --proto proto/Emoji.proto emoji-svc -n emojivoto
linkerd profile --proto proto/Voting.proto voting-svc -n emojivoto
这些命令中的每一个都会输出 yaml,您可以将其写入文件或管道,
直接将其写入 kubectl apply。例如:
- 写入文件:
linkerd profile --proto proto/Emoji.proto emoji-svc -n emojivoto > emoji
-sp.yaml
- 直接 apply:
linkerd profile --proto proto/Voting.proto voting-svc -n emojivoto | \
kubectl apply -f -
为 Web 部署生成 ServiceProfile 定义
emojivoto 的 web-svc 部署是一个由 Go server 托管的 React 应用程序。我们可以使用
linkerd profile auto creation,使用以下命令为 web-svc 生成 ServiceProfile 资源:
linkerd profile -n emojivoto web-svc --tap deploy/web --tap-duration 10s | \
kubectl apply -f -
现在为所有服务生成了服务配置文件,您可以在
Linkerd Dashboard
上或使用 linkerd routes 命令观察每个服务的每条路由指标
linkerd -n emojivoto routes deploy/web-svc --to svc/emoji-svc
Emoji.voto,Linkerd 服务网格(service mesh)的示例应用程序的更多相关文章
- 浅谈服务治理、微服务与Service Mesh(三) Service Mesh与Serverless
作为本系列文章的第三篇(前两篇<浅谈服务治理.微服务与Service Mesh(一)Dubbo的前世今生>,<浅谈服务治理.微服务与Service Mesh(二) Spring Cl ...
- 学习搭建 Consul 服务发现与服务网格-有丰富的示例和图片
目录 第一部分:Consul 基础 1,Consul 介绍 2,安装 Consul Ubuntu/Debian 系统 Centos/RHEL 系统 检查安装 3,运行 Consul Agent 启动 ...
- Service Mesh服务网格新生代--Istio(转)
万字解读:Service Mesh服务网格新生代--Istio 官网地址:https://preliminary.istio.io/zh/docs/concepts/security/ Servic ...
- Linkerd 2:5 分种厘清 Service Mesh 相关术语
API Gateway(API 网关) API gateway 位于应用程序的前面,旨在解决身份验证和授权.速率限制以及为外部消费者提供公共访问点等业务问题. 相比之下,service mesh 专注 ...
- 服务网格istio概念应知应会
一.背景 最近架构组基于istio开发了服务网格(Service Mesh)平台,借此机会把相关的背景知识做一次学习和记录,方便回头查看. 初版的效果: 二.istio 官方手册:https://is ...
- Service Mesh服务网格之Linkerd架构
今天详细介绍一下Linkerd的架构. 控制平面 Linkerd控制平面是一组在专用Kubernetes命名空间中运行的服务(在Linked默认情况下).这些服务完成各种事情——聚合遥测数据.提供面向 ...
- 微服务(Microservices)和服务网格(Service Mesh)架构概念整理
注:文章内容为摘录性文字,自己阅读的一些笔记,方便日后查看. 微服务(Microservices) 在过去的 2016 年和 2017 年,微服务技术迅猛普及,和容器技术一起成为这两年中最吸引眼球的技 ...
- Service Mesh服务网格:是什么和为什么
Service Mesh服务网格:是什么和为什么 - 好雨云帮 CSDN 博客 - CSDN博客 https://blog.csdn.net/zyqduron/article/details/8043 ...
- Service Mesh(服务网格)
Service Mesh(服务网格) 什么是Service Mesh(服务网格)Service mesh 又译作 "服务网格",作为服务间通信的基础设施层.Buoyant 公司的 ...
随机推荐
- 对抗性鲁棒性与模型压缩:ICCV2019论文解析
对抗性鲁棒性与模型压缩:ICCV2019论文解析 Adversarial Robustness vs. Model Compression, or Both? 论文链接: http://openacc ...
- 4D雷达成像技术
4D雷达成像技术 当我们谈及3D捕捉时,总是先想到光学传感器.当我们讨论在第四维度(时间)讨论视觉数据时,倾向于考虑场景数据调度.这些是我们多年来关注激光雷达(LiDAR)和摄影测量,以及用户针对缓慢 ...
- OFRecord 数据集加载
OFRecord 数据集加载 在数据输入一文中知道了使用 DataLoader 及相关算子加载数据,往往效率更高,并且学习了如何使用 DataLoader 及相关算子. 在 OFrecord 数据格式 ...
- adb安装 mac和Windows
一.mac安装 参考地址https://blog.csdn.net/VSRfind/article/details/79593098 1.首先安装一个软件 在用Mac进行Android开发之前,我们一 ...
- Git操作_从github远程仓库克隆到本地仓库, 本地代码提交
实现目的: 从github远程仓库克隆到本地仓库:本地代码提交到远程仓库. 一.从github远程仓库克隆到本地仓库: 命令行切换到指定的仓库想存放的目录,执行如下命令:git clone 远程仓库 ...
- Django(59)验证和授权
验证和授权概述 Django有一个内置的授权系统.他用来处理用户.分组.权限以及基于cookie的会话系统.Django的授权系统包括验证和授权两个部分.验证是验证这个用户是否是他声称的人(比如用 ...
- 『言善信』Fiddler工具 — 9、Fiddler自动响应器(AutoResponder)详解
目录 1.AutoResponder介绍 2.AutoResponder界面说明 (1)选项: (2)按钮: (3)Rule Editor(规则编辑): (4)test(测试): (5)规则框: 1. ...
- 汉枫Wi-Fi串口服务器HF2211S应用案例
实现的功能 该模块上电后主动以mobusRTU协议,通过本模块的串口将气体检测仪的4路传感器数据读取 模块上电后连接指定WiFi,通过MQTT协议将读取到的数据以JSON格式推送到指定服务器. 具体细 ...
- 三、Nginx设置用户认证
要求:通过nginx服务端配置实现以下目标 访问web页面需要进行用户认证. 用户名为:tom,密码:123456 操作步骤, 更改配置文件 [root@client ~]# vim /usr/loc ...
- 大厂面试必问!HashMap 怎样解决hash冲突?
HashMap冲突解决方法比较考验一个开发者解决问题的能力. 下文给出HashMap冲突的解决方法以及原理分析,无论是在面试问答或者实际使用中,应该都会有所帮助. 在Java编程语言中,最基本的结构就 ...