当前位置: 代码网 > it编程>编程语言>Java > 34.云原生之devops集成istio

34.云原生之devops集成istio

2024年07月31日 Java 我要评论
云原生之devops集成istio



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

  1. 首先在发布namespace配置istio自动注入云原生kubesphere服务网格实战之istio安装配置
  2. 参照bookinfo应用编写项目对应的istio-gateway、virtualservice、destinationrule等crd资源配置响应规则。云原生istio官网bookinfo应用实战之bookinfo部署
  3. 我们使用kustomize资源清单进行管理
  4. 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      
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com