当前位置:网站首页>在 Istio 服务网格内连接外部 MySQL 数据库
在 Istio 服务网格内连接外部 MySQL 数据库
2022-08-10 16:41:00 【InfoQ】

productpage
:调用details
和reviews
两个服务,用来生成页面。
details
:包含了书籍的信息。
reviews
:包含了书籍相关的评论。它还会调用 ratings 微服务。
rating
:包含了由书籍评价组成的评级信息。
reviews
- v1 版本不会调用
ratings
服务。
- v2 版本会调用
ratings
服务,并使用 1 到 5 个黑色星形图标来显示评分信息。
- v3 版本会调用
ratings
服务,并使用 1 到 5 个红色星形图标来显示评分信息。
准备 MySQL 数据库
test
DROP TABLE IF EXISTS `ratings`;
CREATE TABLE `ratings` (
`ReviewID` int(11) NOT NULL,
`Rating` int(11) NULL DEFAULT 0,
PRIMARY KEY (`ReviewID`) USING BTREE
) ENGINE = InnoDB;
INSERT INTO ratings (ReviewID, Rating) VALUES (1, 2);
INSERT INTO ratings (ReviewID, Rating) VALUES (2, 4);
创建ServiceEntry
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: mysqldb
spec:
hosts:
- mysqldb.svc.remote
ports:
- number: 3306
name: mysql
protocol: MySQL
location: MESH_EXTERNAL
resolution: STATIC
endpoints:
- address: 192.168.1.116
ports:
mysql: 3306
EOF
192.168.1.116
3306
创建ratings服务
echo -n 'OneMoreSociety' | base64
OneMoreSociety
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
name: mysql-credentials
type: Opaque
data:
dbpasswd: T25lTW9yZVNvY2lldHk=
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ratings-v2-mysql
labels:
app: ratings
version: v2-mysql
spec:
replicas: 1
selector:
matchLabels:
app: ratings
version: v2-mysql
template:
metadata:
labels:
app: ratings
version: v2-mysql
spec:
containers:
- name: ratings
image: docker.io/istio/examples-bookinfo-ratings-v2:1.16.2
imagePullPolicy: IfNotPresent
env:
- name: DB_TYPE
value: "mysql"
- name: MYSQL_DB_HOST
value: mysqldb.svc.remote
- name: MYSQL_DB_PORT
value: "3306"
- name: MYSQL_DB_USER
value: root
- name: MYSQL_DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-credentials
key: dbpasswd
ports:
- containerPort: 9080
securityContext:
runAsUser: 1000
EOF
T25lTW9yZVNvY2lldHk=
修改路由规则
reviews
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v2
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
EOF
ratings
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- route:
- destination:
host: ratings
subset: v2-mysql
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: ratings
spec:
host: ratings
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2-mysql
name: v2-mysql
EOF
效果
productpage


流量转移
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: mysqldb
spec:
hosts:
- mysqldb.svc.remote
ports:
- number: 3306
name: tcp
protocol: TCP
location: MESH_EXTERNAL
resolution: STATIC
endpoints:
- address: 192.168.1.116
ports:
tcp: 3306
labels:
version: v1
- address: 192.168.1.118
ports:
tcp: 3306
labels:
version: v2
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: mysqldb
spec:
hosts:
- mysqldb.svc.remote
tcp:
- route:
- destination:
host: mysqldb.svc.remote
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: mysqldb
spec:
host: mysqldb.svc.remote
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
EOF
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: mysqldb
spec:
hosts:
- mysqldb.svc.remote
tcp:
- route:
- destination:
host: mysqldb.svc.remote
subset: v1
weight: 50
- destination:
host: mysqldb.svc.remote
subset: v2
weight: 50
EOF
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: mysqldb
spec:
hosts:
- mysqldb.svc.remote
tcp:
- route:
- destination:
host: mysqldb.svc.remote
subset: v2
EOF
边栏推荐
猜你喜欢
PC软件问题二[Win10系统将UltraEdit添加到右键菜单的方法]
植物肉,为何在中国没法“真香”?
Bitwarden:免费、开源的密码管理服务
超宽带uwb精准定位,厘米级室内定位技术,实时高精度方案应用
重庆新壹汽与一汽集团达成新能源项目战略合作,赋能“碳中和”创造“碳财富”
电力系统潮流计算(牛顿-拉夫逊法、高斯-赛德尔法、快速解耦法)【6节点 9节点 14节点 26节点 30节点 57节点】(Matlab代码实现)
聚焦企业流程智能化发展新趋势,中国信通院2022 RPA创新产业峰会即将开启
神经网络有哪些激活函数,卷积神经网络有哪些
leetcode:1137. 第 N 个泰波那契数
Polling and the principle of webSocket and socket.io
随机推荐
【随笔】自己看的... 保存
The sword refers to OfferⅡ 045. The bottommost leftmost value of the binary tree dfs
一种新的测试方法:视觉感知测试
网易云信亮相LiveVideoStackCon2022,解构基于WebRTC的开源低延时播放器实践
Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
leetcode:1013. 将数组分成和相等的三个部分
雷达人体存在感应器,人体感知控制应用,为客户提供真实的感知方案
Meaning of CDF graph
如何将jpg图片变成gif?教你一分钟图片合成gif的方法
开源生态与AI芯片的碰撞&Dragonfly基于P2P的镜像加速系统 | 第 39-40 期
【无标题】
app自动化测试webview怎么操作
Gif动图怎么用视频做?一键在线完成视频转gif制作
找到一个超级神奇,百试百灵的解决 ModuleNotFoundError: No module named xxx 的方法
How to use bitwise operators in C language
视频转成gif动图怎么操作?仅需三步在线完成视频转gif
PNG如何变gif?教你一招png秒变gif动图的方法
C语言各种符号如何使用
自适应模糊神经网络与bp神经网络的区别
Pigsty:开箱即用的开源数据库发行版