我有一个配置为在Kubernetes运行程序上运行的GitLab CI管道。一切工作都很好,直到我尝试为测试工作添加服务。在kubernetes上无法解析服务主机名(例如:mysql
),从而导致以下错误dial tcp: lookup mysql on 10.96.0.10:53: no such host
。但是,它可以在dockerRunner上运行,但这不是我想要的。有没有办法
.gitlab-ci.yml
中的工作定义:
test:
stage: test
variables:
MYSQL_ROOT_PASSWORD: --top-secret--
MYSQL_DATABASE: --top-secret--
MYSQL_USER: --top-secret--
MYSQL_PASSWORD: --top-secret--
services:
- mysql:latest
- nats:latest
script:
- ping -c 2 mysql
- go test -cover -coverprofile=coverage.prof.tmp ./...
从您提供的文档链接中,我看到mysql主机名应该可以访问。
服务与工作的联系方式
为了更好地了解容器链接的工作方式,请阅读链接容器在一起。
总而言之,如果将mysql作为服务添加到应用程序中,图像随后将用于创建链接到工作容器。
MySQL的服务容器将在主机名下访问MySQL的。因此,为了访问数据库服务,您必须连接到名为mysql的主机,而不是套接字或localhost。读有关访问服务的更多信息。
也来自文档
如果未指定服务别名,则在运行作业时,将启动service,您将可以从构建容器中访问它]
所以您可以检查启动mysql服务时是否有错误。