# istio-mciro **Repository Path**: cinitial/istio-micro ## Basic Information - **Project Name**: istio-mciro - **Description**: 使用 istio 架构 来搭建完整的微服务应用。 仅供学习用啊! - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 7 - **Created**: 2020-05-26 - **Last Updated**: 2022-06-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # istio-mciro ## 项目介绍 `Istio micro` 是 `Istio` 框架下的一个 Demo 工程。这个工程里介绍了: - 单机 `Istio` 环境的搭建 - 并在 `Istio` 的框架下开发,实在是不知道做什么了, 我决定还是抄写一遍大神的代码吧。 - 地址:` https://gitee.com/macrozheng/mall?_from=gitee_search` - mall 商城项目 ## 安装基础环境 在 00-install istio.md01-install base component.md 中 详细描述了 单机 kubernetes 、istio 和 一些组建的安装,大家可以参考。 我是在一台 Centos7 的 虚拟机上安装这些软件的,宿主机的配置我放在下面,感觉运行起来还可以。 | 宿主机配置 | | | ---------- | --------------------- | | CPU | i5-9400F 6核 2.90GHz | | 内存 | 16GB | | 硬盘 | SSD 500GB | 安装了的组件汇总如下: | 序号 | 名称 | 版本 | 用途 | | ---- | ---------- | ------------------------------ | ------------------ | | 1 | kubernetes | v1.18.3 | | | 2 | docker | 19.03.9 | | | 3 | istio | 1.6.0 | | | 4 | Mariadb | 5.5.65 | 数据库 | | 5 | Redis | 3.2.12 | 缓存,热数据储存 | | 6 | Wso2 | 5.10.0 | 用户中心,认证中心 | | 7 | Minio | 看不出来是啥版本的,请教大佬们 | 储存文件 | ## Istio 简介 现在网上关于Istio的介绍横多,而且官方文档也介绍的比较全面了,所以我就不再重复了,我就稍微讲解以下自己的拙见。 ### docker / kubernetes / istio 的关系 三者 层级不一样: - docker 是基础。 - kubernetes 是管理 docker 容器的,所以也叫资源编排。 - istio 是 kubernetes 的一个插件,用于实现服务网格。 三者 解决的问题不一样: - docker 应用和操作系统解耦,其实和 Jvm 的思想一样的; - kubernetes 管理 docker 应用生命周期,主要作用就是主机容灾和弹性伸缩,前者为了应用稳定,后者就是为了省钱; - istio 是为了实现服务网格,目的就是 微服务的业务 和 微服务平台 解耦。 三者 让不同的工作变得简单: - docker 让环境搭建的工作简单 - kubernetes 让 应用运维工作简单 - isitio 让 应用开发工作简单 其实我对 docker/kubernetes/istio 有一种恐惧,因为它们让我的工作变得太过简单了,这样自己的价值也就少了,这样工资也就不长了,这样。。。大家懂得, 一定要切记不要被这些方便了自己的工具所迷惑了,他们只是工具,工具背后的东西才是我们的价值所在。 ### Istio 的原理 大家看看官网吧,介绍的很详细的。 记住下面几点有助于理解 istio 的工作原理 和 异常的排查: - 真正工作的是 Proxy,他管理了 流量 和 认证 - 每个 Proxy 都有全量的配置信息 - 所有的配置文件对应的都是抽象概念 ### Istio 对微服务开发带来的影响 Istio 的目的就是将 微服务中的非业务代码剥离出来,让微服务中只有纯粹的业务,也就是让大部分开发人员只涉及`curd`就可以了。 那么从微服务中剥离的有什么呢? 以 `Spring Cloud ` 框架为例 ,转用 `Istio` 框架后 微服务 中去除了: - `Eureka Client`: 不需要向注册中新注册了 - `Spring Security`:不需要做验证权限了 - `Ribbon`:不需要做负载均衡了 - `Hystrix`:不需要做熔断/降级了 还有哪些欢迎大家前来补充。 需要注意的是 注册发现、权限认证、负载均衡等只是换了一个组件来做,其中心思想和原理是没有多大改变的。 ## 将 mall 项目部署到 Istio 环境中 03-将mall部署到istio环境中.md 中介绍了如何将 mall 项目部署到 Istio 环境中。 该文档中会介绍: - 前后端项目 `Dockerfile` 的编写 - 前后端项目 `Service` / `Deployment` / `Gateway` / `VirtualService` 的编写 - 如何使用 `Secret` 管理应用敏感配置信息 - 如何使用`ConfigMap` 管理应用多环境配置信息 - 如何使用 `Headless Service` 将 Mysql / Redis 等外部服务纳入到 K8s 的管理范围内 该文档欠缺的部分 - 由于 mall 已经集成了权限管理的功能,所以没有设计 Istio 的认证鉴权的内容 - 由于 mall 是单体项目,所以没有设计 Istio 框架下 微服务之间如何通讯的内容