文章目录
经过前边的学习我们已经知道istio官方bookinfo应用的部署及流量治理。我们自己的项目cicd发布后如何使用istio呢?
- 首先在发布namespace配置istio自动注入云原生kubesphere服务网格实战之istio安装配置
- 参照bookinfo应用编写项目对应的istio-gateway、virtualservice、destinationrule等crd资源配置响应规则。云原生istio官网bookinfo应用实战之bookinfo部署
- 我们使用kustomize资源清单进行管理
- cicd过程参考云原生之argocd cicd实战
什么样的项目适合上istio
先了解几个现象:
老旧的dubbo项目,可让istio集成aeraki来支持dubbo协议
新项目什么样的结构跟合适istio?
总结:采用上述方案,让我们的项目更加简单,不用项目开发人员过多考虑技术细节。上述方案开发人员还需考虑的是分布式事务问题(使用seata、atomikos解决),以及数据量过大后分库分表问题(使用tidb解决)
参考bookinfo中reviews服务资源
deployment
apiversion: apps/v1
kind: deployment
metadata:
name: reviews-v3
# 定义了 deployment 的标签,包括 app: reviews 和 version: v3,用于标识和选择该 deployment
labels:
app: reviews
version: v3
spec:
replicas: 1
# 指定了用于选择 pod 的标签选择器,即选择具有标签 app: reviews 和 version: v3 的 pod
selector:
matchlabels:
app: reviews
version: v3
# 定义了要创建的 pod 的模板
template:
metadata:
labels:
app: reviews
version: v3
spec:
# 指定了 pod 所使用的 serviceaccount 的名称为 bookinfo-reviews,用于授权 pod 访问其他 kubernetes 资源
serviceaccountname: bookinfo-reviews
containers:
...
service
apiversion: v1
kind: service
metadata:
name: reviews
labels:
app: reviews
service: reviews
spec:
ports:
- port: 9080 # 服务暴露端口
targetport: 9080 # 容器端口
name: http
# 指定了用于选择后端 pod 的标签选择器,即选择具有标签 app: reviews 的 pod。这个选择器决定了哪些后端 pod 会接收到该服务的流量。
selector:
app: reviews
gateway
apiversion: networking.istio.io/v1alpha3
kind: gateway
metadata:
# 指定了这个 gateway 的名称
name: 应用名称-gateway
spec:
# 指定了这个 gateway 的目标选择器为 istio: ingressgateway,表示这个网关将指向 istio 中的 ingress gateway
selector:
istio: ingressgateway
servers: # 定义了网关监听的端口信息
- port:
number: 666
name: http
protocol: http
hosts:
- "*"
virtualservice
apiversion: networking.istio.io/v1alpha3
kind: virtualservice
metadata:
name: reviews
spec:
hosts:
- reviews
http: # 定义了虚拟服务的 http 路由规则
- route: # 定义了路由规则,指定了流量的目的地
- destination: # 指定了路由的目的地,即将流量发送到的服务
host: reviews # 指定了目标服务的主机为 reviews
subset: v1 # 指定了要发送流量到的服务的子集为 v1,这表示将流量路由到 reviews 服务的 v1 版本
上述的版本对应中deployment
metadata:
labels:
app: reviews
version: v3
destinationrule
apiversion: networking.istio.io/v1alpha3
kind: destinationrule
metadata:
name: reviews
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
- name: v3
labels:
version: v3
上述的版本对应中3个deployment中
metadata:
labels:
app: reviews
version: v3
kustomize资源清单
kustomize 父工程管理所有kustomize项目清单
|--kustomize-devops-web 具体哪一个项目部署清单
|--base 基本资源
|--kustomization.yaml 组织资源文件
|--devops-web-deployment.yaml deployment资源
|--devops-web-svc.yaml svc资源
|--devops-web-istio-gateway.yaml 类似nginx配置反向代理
|--devops-web-vs.yaml 虚拟服务资源,绑定
|--devops-web-dr.yaml
|--build cicd打包后构建的资源会替换该目录资源
|--build.yaml
|--kustomization.yaml
|--overlay 补丁目录
|--dev 补丁名也可对应环境
|--kustomization.yaml
发表评论