超详细⼲货!腾云忆想⼿把⼿教你基于TSFMesh的前后端应⽤统⼀托管
导语
TSF Mesh 微服务平台(Tencent Service Mesh Framework,以下简称 TSF Mesh)是⼀个基础设施层,⽤于处理服务间的通信。TSF Mesh 是由⼀系列轻量级的⽹络代理(⼜称 Sidecar)组成,这些代理与应⽤程序部署在⼀起,通过劫持应⽤流量进⾏服务通信,⽽应⽤程序不感知 Sidecar 的存在。
TSF Mesh 可以⽀持不同框架、不同语⾔的应⽤程序,包括前端应⽤以及后端应⽤,以统⼀的⽅式运⾏在腾讯微服务平台 TSF(Tencent Service Framework)中。
本⽂将通过⼀个 java 应⽤和⼀个基于 nginx 的静态应⽤,来介绍如何通过 TSF Mesh 进⾏前后端应⽤的统⼀托管。
Demo下载地址:
(复制链接到浏览器查看详情)
作者介绍
王维
多年开发架构经验,熟悉电商、⽀付业务。熟悉微服务架构的开发与落地。⽬前主要聚焦于微服务、消息队列及周边中间件。
⼀、环境准备
⾸先,需要登录 TSF 控制台,进⾏相关环境与资源的创建。
1.应⽤
单击【应⽤管理】>【新建应⽤】按钮。填写应⽤信息,选择部署⽅式【容器部署】,选择应⽤类型【Mesh应⽤】,点击【提交】按钮,创建应⽤。
2.集
单击【集】>【新建集】按钮。填写集信息,选择容器类型【容器集】,点击【提交】按钮,创建容器集。然后导⼊云主机。
3.部署组
单击【部署组】>【新建部署组】按钮。填写部署组信息,并单击【保存&下⼀步】按钮,创建部署组。
⚠ 详细操作步骤,请参考TSF官⽅操作指南中【环境与资源管理】及【应⽤部署】部分。
⼆、构建 java 应⽤镜像
将应⽤程序打包,添加配置⽂件,编写 Dockerfile ⽂件,构建镜像,推送到指定镜像仓库。
1.应⽤打包
以 java 程序为例说明
程序包: ,包内⽂件结构如下。
⽂件结构
⽂件结构
⽂件说明
⽂件⽰例
userService/apis/user.yaml openapi: 3.0.0
info:
version: "1.0.0"有程序正在修改镜像劫持
title: user service paths:
/api/v6/user/create:
get:
responses:
'200':
description: OK
'401':
description: Unauthorized '402':
description: Forbidden
'403':
description: Not Found
/api/v6/user/account/query: get:
responses:
'200':
description: OK
'401':
description: Unauthorized
'402':
description: Forbidden
'403':
description: Not Found
/health:
get:
responses:
'200':
description: OK
'401':
description: Unauthorized
'402':
description: Forbidden
'403':
description: Not Found
spec.yaml
apiVersion: v1
kind: Application
spec:
services:
- name: user # 服务名
ports:
- targetPort: 8089 # 服务监听端⼝
protocol: http # ⽬前⽀持 HTTP、HTTP2 和 gRPC healthCheck:
path: /health # 健康检查 URL
path: /health # 健康检查 URL
⚠ 注意
•healthCheck 是健康检查的接⼝,请确认本地调⽤curl -i -H 'Host: local-service' {ip}:{Port}/health能返回200,否则,健康检查失败会导致此服务实例变为离线状态,其它服务将⽆法调⽤该服务实例;如果不提供此健康检查接⼝,sidecar 会通过 TCP 的⽅式探测 targetPort 是否连通来判断此服务实例是否健康。
•Host: local-service是代理加的 header,业务如果对 Host 有检查(如 Nginx 配置的 server_name),则需将 local-service 加到⽩名单。
start.sh
#!/bin/bash
mkdir -p /opt/tsf/app_config/apis
cp /root/app/userService/spec.yaml /opt/tsf/app_config/
cp -r /root/app/userService/apis /opt/tsf/app_config/
cd /root/app/userService/
java -jar tsf-user-demo-1.0-SNAPSHOT.jar
⽂件打包
将以上⽂件放⼊到⽂件夹(如:userService),通过以下命令,将上述⽂件打包成(如:)。tar -zcvf userService/
如果是在 mac 操作系统上则需加 COPYFILE_DISABLE=1 参数去除掉特有的隐藏⽂件。
COPYFILE_DISABLE=1 tar -zcvf userService/
2. Dockerfile
在应⽤程序包同级⽬录中新建 Dockerfile ⽂件,如下:
Dockerfile ⽂件内容⽰例:
FROM centos:7
RUN yum update -y && yum install -y java-1.8.0-openjdk
# 设置时区。这对于⽇志、调⽤链等功能能否在 TSF 控制台被检索到⾮常重要。
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
RUN mkdir /root/app/
# 其中 是 Mesh 应⽤压缩包
ADD /root/app/
# 指定到jar的当前⽬录执⾏
WORKDIR /root/app/userService
ENTRYPOINT ["bash", "start.sh"]
⚠ 基础镜像,请根据具体情况进⾏替换
3.构建镜像
打开命令⾏⼯具,进⼊程序包所在⽂件夹。
执⾏如下命令构建镜像:
docker build . -s.tencentyun/{tsf_uid}/{app_name}:{tag}
4.推送镜像
登录镜像仓库
docker login --username={user_name} tyun
推送镜像
docker s.tencentyun/{tsf_uid}/{app_name}:{tag}
⚠ 注意
{app_name}为应⽤名称,与TSF控制台应⽤名称保持⼀致。
{tag}为镜像的版本,⾃⾏指定即可(如:v1)。
三、构建 nginx 静态应⽤镜像
1. 应⽤打包
以 tsf_demo_nginx_mesh 程序为例说明,⽂件结构如下。
⽂件结构
⽂件说明
⽂件⽰例
apis/ngnix-service.yaml
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论