在 Kubernetes 中进行 Spring Boot 集成测试的 Testcontainers 的选项或替代方案?
Posted
技术标签:
【中文标题】在 Kubernetes 中进行 Spring Boot 集成测试的 Testcontainers 的选项或替代方案?【英文标题】:Options or alternatives to Testcontainers for Spring Boot integration testing in Kubernetes? 【发布时间】:2021-12-19 08:21:25 【问题描述】:我需要使用 Postgres、Redis 和 Elasticsearch 在 Spring Boot 项目中设置集成测试(稍后还会添加 Kafka)。到目前为止,我找到了两个选择:
-
H2 数据库和嵌入式 Redis。这可能有效,但我们在某些查询中使用了一些 Postgres 特定的函数,因此这无法涵盖所有情况。
Testcontainers。这看起来很完美,但显然不可能在管道中运行,因为我们使用的是 Kubernetes
第三个选项需要一些手动工作。绝对有可能制作一个 docker compose 文件,其中包含测试本地使用所需的所有服务,并让基础设施团队按照他们想要的方式构建容器,以便在管道中运行测试。但是这样一来,开发人员在本地运行测试时就必须手动启动/停止这些容器。
有没有办法自动化这个过程?或者任何类似于 Testcontainers 的选项可以在 Kubernetes 中运行?或者也许有办法在 Kubernetes 中运行测试容器?
提前谢谢你。
【问题讨论】:
【参考方案1】:您可以在基于 Kubernetes 的构建中运行测试容器。您只需要构建(容器)中可用的容器运行时。这可以是无根 docker,并且独立于您的 kubernetes 集群使用的容器运行时。
【讨论】:
以上是关于在 Kubernetes 中进行 Spring Boot 集成测试的 Testcontainers 的选项或替代方案?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Kubernetes:支持对无法读取 ConfigMap 的事件进行失败策略
Kubernetes:Spring Cloud Data Flow Server 的服务帐户权限问题
使用 VMware Spring Cloud Gateway for Kubernetes 进行定制和观察