docker - 如何设置启用 docker-dind TLS 的 Gitlab-Runner
问题描述
我一直在为我的 CI 使用一个自托管的 Gitlab-Runner,虽然我没有任何 Gitlab 的自有实例服务器,只有运行器,所以我直接使用 gitlab.com。直到最近,我一直在 Linux 机器上使用这个运行器,它运行正常。
但是,对于几个不相关的问题,我已将其移至 Windows 并开始出现错误。如果我在 Docker 而不是 Windows/Linux 中运行 Gitlab-Runner,我会遇到同样的错误。
我得到了著名的错误:
“x509:由未知机构签署的证书”
这与以下内容有关:
https://docs.gitlab.com/runner/configuration/tls-self-signed.html
https://about.gitlab.com/blog/2019/07/31/docker-in-docker-with-docker-19-dot-03/
我试图禁用 TLS(我的 .gitlab-ci.yml 中的 DOCKER_TLS_CERTDIR=""),但它不起作用,因为当我尝试使用运行 CI 时 docker build blabla。
有人有 gitlab.com 的工作示例吗?我看到的所有示例都与 Gitlab 的自实例有关,因此他们向您解释他们已经创建了证书并将其放在文件夹中等。但是,如果我使用 Gitlab.com,我该如何创建证书?如果我不是它的所有者(我在这里的知识非常少)。据我了解,创建此类证书的应该是 Gitlab-Runner,但我在任何地方都看不到它们。我尝试在 Gitlab-Runner 中添加卷(volumes = ["/certs/client", "/cache"]),然后添加 DOCKER_TLS_CERTDIR="/certs",如上面链接中所述,但它不起作用。
如果我使用共享运行器运行我的 CI,那么它可以正常工作。我的 CI 的一部分如下所示:
stages:
- test
- build
- deploy
variables:
DOCKER_TLS_CERTDIR = "blabla"
test_server:
tags:
- mytag
stage: test
image: docker/compose:1.27.4
services:
- docker:19.03.8-dind
before_script:
- echo "$CI_JOB_TOKEN" | docker login -u $CI_REGISTRY_USER --password-stdin $GITLAB_REGISTRY
script:
- docker build blabla
预先感谢您和问候。
解决方案
推荐阅读
- excel - Excel 宏用于回溯并识别目标字段的来源
- reactjs - Formik datepicker - 退格不起作用
- java - 使用 Webview 打开 MainActivity2,并保留 MainActivity 中的 Uri.parse(url)
- python - 使用正则表达式通过带前缀的逗号分隔字符串
- reactjs - Chakra-ui 在 Firefox 上忽略 FontWeight
- mongodb - 羽毛猫鼬:Mongo-DB 事务 - ReferenceError:何时未定义
- azure - Powershell 格式表表达式不允许划分 PsCustomObject 成员
- python - 是否可以在 matplotlib(python)中的数据之上绘制轮廓?
- javascript - DynamoDB PutCommand V3 - 返回项目
- android-studio - 如何在“5”秒后删除/隐藏 RecyclerView 中的项目?