Kubernetes部署模式&;RESTAPI版本
我有一个带有多个API版本的RESTAPI。每个API后端都由几个微服务组成。可以公平地假设,只有最新的RESTAPI资源/代码拥有最多的客户流失。较旧的版本会因为功能后端口(很少)或错误修复(大部分)而出现混乱。我想得到关于什么DevOps模式最适合这个场景的建议——假设我们使用Kubernetes来建模我们的服务网格 请注意,我们的API大多是异步的,因此可以在同一个代码库(打包在单个容器中)中支持多个API版本 鉴于上述情况,这些配置都是可能的Kubernetes部署模式&;RESTAPI版本,rest,kubernetes,devops,Rest,Kubernetes,Devops,我有一个带有多个API版本的RESTAPI。每个API后端都由几个微服务组成。可以公平地假设,只有最新的RESTAPI资源/代码拥有最多的客户流失。较旧的版本会因为功能后端口(很少)或错误修复(大部分)而出现混乱。我想得到关于什么DevOps模式最适合这个场景的建议——假设我们使用Kubernetes来建模我们的服务网格 请注意,我们的API大多是异步的,因此可以在同一个代码库(打包在单个容器中)中支持多个API版本 鉴于上述情况,这些配置都是可能的 每个API版本的服务yaml 具有多个po
- 每个API版本的服务yaml李>
- 具有多个pod模板的单服务yaml(每个API版本一个)
- 功能性服务YAML——一个用于前端,另一个用于微服务(消息代理、处理工作者等的POD)
- 建议将部署分开群集或部署到同一群集(对于API版本)。如果是,这是否会影响对特定API版本的更新李>
我正在根据您以前的经验寻找任何指定的模式或建议。通常,部署管理Pod的副本,每个Pod运行特定的容器映像。如果您的API后端由多个微服务组成,那么每个微服务都是一个部署。处理API请求的微服务通过(面向客户端)服务公开 对于多个API版本,您可以只为每个版本复制此功能,并且可以在服务前面放置入口,根据请求的API版本将流量路由到其中一个服务
如果将所有API版本放在同一个容器中,则更新期间可能存在状态不一致的问题:1)在部署中,两个Pod版本在短时间内并存(如果使用默认滚动更新);2) 在短时间内,您可能会将已更新和尚未更新的微服务放在一起。通常,部署会管理Pod的副本,并且每个Pod运行一个特定的容器映像。如果您的API后端由多个微服务组成,那么每个微服务都是一个部署。处理API请求的微服务通过(面向客户端)服务公开 对于多个API版本,您可以只为每个版本复制此功能,并且可以在服务前面放置入口,根据请求的API版本将流量路由到其中一个服务
如果将所有API版本放在同一个容器中,则更新期间可能存在状态不一致的问题:1)在部署中,两个Pod版本在短时间内并存(如果使用默认滚动更新);2) 在短时间内,您可能会将已更新和尚未更新的微服务放在一起。如果我理解正确,您的建议是将每个微服务作为一个单独的部署(以便它们可以独立地使用副本进行扩展)以及针对微服务的每个API版本的一组服务,该微服务处理入口网关前端的客户端请求。这是有道理的。如果有多个集装箱吊舱,会有问题吗?我希望我们的大多数部署和服务至少包含FluentD/日志工具。是的,没错。请注意,不处理客户端请求的微服务还需要一个服务(ClusterIP类型),以便其他微服务可以访问它们。吊舱中的侧车容器没有问题。它只是Pod的一部分,Pod是一个单元。如果我理解正确,您的建议是将每个微服务作为一个单独的部署(这样它们就可以独立地使用副本进行扩展),并为每个API版本为微服务提供一组服务,用于处理入口网关前面的客户端请求。这是有道理的。如果有多个集装箱吊舱,会有问题吗?我希望我们的大多数部署和服务至少包含FluentD/日志工具。是的,没错。请注意,不处理客户端请求的微服务还需要一个服务(ClusterIP类型),以便其他微服务可以访问它们。吊舱中的侧车容器没有问题。它只是吊舱的一部分,吊舱是一个单元。