云原生专栏大纲

文章目录

什么样的项目适合上istio参考bookinfo中reviews服务资源DeploymentServiceGatewayVirtualServiceDestinationRule

kustomize资源清单

经过前边的学习我们已经知道istio官方bookinfo应用的部署及流量治理。我们自己的项目cicd发布后如何使用Istio呢?

首先在发布namespace配置Istio自动注入云原生KubeSphere服务网格实战之Istio安装配置参照bookinfo应用编写项目对应的Istio-Gateway、VirtualService、DestinationRule等CRD资源配置响应规则。云原生Istio官网Bookinfo应用实战之Bookinfo部署我们使用kustomize资源清单进行管理CICD过程参考云原生之ArgoCD CICD实战

什么样的项目适合上istio

先了解几个现象:

使用Istio目的是为了下沉服务治理基础设施,简化项目结构老项目没集成服务治理组件,又想上服务治理功能,此时可考虑istio目前市面上多数项目以OpenFegin和Dubbo为主,老项目以Dubbo为主Istio 和其他流行的服务网格实现对 HTTP 和 gRPC 协议之外的7层协议的支持非常有限Istio集成Aeraki可以支持任何七层流量

老旧的dubbo项目,可让Istio集成Aeraki来支持dubbo协议新项目什么样的结构跟合适istio?

采用HTTP协议,选择OpenFegin服务治理下沉,抛弃传统注册配置中心,考虑使用spring-cloud-starter-kubernetes网关考虑使用SringCloudGateway

总结:采用上述方案,让我们的项目更加简单,不用项目开发人员过多考虑技术细节。上述方案开发人员还需考虑的是分布式事务问题(使用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

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。