热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Docker中使用GitLabRunner查看自定义CA根证书

如何解决《如何在Docker中使用GitLabRunner查看自定义CA根证书》经验,为你挑选了2个好方法。

我已安装并配置:

    在HTTPS 上运行的ServerA上的本地GitLab Omnibus

    ServerB中作为Docker Service安装的本地GitLab-Runner

ServerA证书由自定义CA Root生成

配置

我已将CA根证书放在ServerB上:

/srv/gitlab-runner/config/certs/ca.crt

按照容器中的Run GitLab Runner中的描述在ServerB上安装Runner - Docker镜像安装和配置:

docker run -d --name gitlab-runner --restart always \
           -v /srv/gitlab-runner/config:/etc/gitlab-runner \
           -v /var/run/docker.sock:/var/run/docker.sock \
           gitlab/gitlab-runner:latest

注册跑步者 - 单行注册命令中所述注册跑步者:

docker run --rm -t -i 
            -v /srv/gitlab-runner/config:/etc/gitlab-runner 
           --name gitlab-docker-runner gitlab/gitlab-runner register \
           --non-interactive \
           --executor "docker" \
           --docker-image alpine:latest \
           --url "https://MY_PRIVATE_REPO_URL_HERE/" \
           --registration-token "MY_PRIVATE_TOKEN_HERE" \
           --description "MyDockerServer-Runner" \
           --tag-list "TAG_1,TAG_2,TAG_3" \
           --run-untagged \
           --locked="false"

此命令提供以下输出:

更新CA证书...
运行时平台arch = amd64 os = linux pid = 5 revision = cf91d5e1 version = 11.4.2
在系统模式下运行.

注册跑步者...成功的跑步者= 8UtcUXCY
跑步者注册成功.随意启动它,但如果它已经运行,配置应该自动重新加载!

我查了一下

$ docker exec -it gitlab-runner bash 

和一次在容器中

$ awk -v cmd='openssl x509 -noout -subject' '
/BEGIN/{close(cmd)};{print | cmd}' 

并且自定义CA根目录正确.

问题

从GitLab-CI运行Gitlab-Runner时,管道失败告诉我:

$ git clone https:// gitlab-ci-token:$ {CI_BUILD_TOKEN} @ ServerA/foo/bar/My-Project.wiki.git


克隆到'My-Project.wiki'......


致命:无法访问' https:// gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@ServerA/foo/bar/My-Project.wiki.git/ ':服务器证书验证失败.CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile:none


错误:作业失败:退出代码1

它无法识别Issuer(我的自定义CA Root),但根据自签名证书或自定义证书颁发机构,点n.1,它应该是开箱即用的:

默认值:GitLab Runner读取系统证书存储,并根据存储在系统中的CA验证GitLab服务器.

然后,我从第n.3点开始尝试解决方案,编辑

/srv/gitlab-runner/config/config.toml:

并添加:

[[runners]]
tls-ca-file = "/srv/gitlab-runner/config/certs/ca.crt"

但它仍然无效.

如何让Gitlab Runner读取CA Root证书?



1> Philipp Ludw..:

您有两种选择:

忽略SSL验证

将其放在您的顶部.gitlab-ci.yml

variables:
  GIT_SSL_NO_VERIFY: "1"

将GitLab-Runner指向正确的证书

如官方文档中所述,您可以使用tls-*-file选项设置证书,例如:

[[runners]]
  ...
  tls-ca-file = "/etc/gitlab-runner/ssl/ca-bundle.crt"
  [runners.docker]
  ...

如文档所述,“每次运行程序尝试访问GitLab服务器时,都会读取此文件。”

其他选项包括tls-cert-file定义需要使用的证书。


我怀疑文档中缺少某些内容,需要对config.toml进行一些调整(例如tls_verify应该具有什么值,priviledge_mode等具有什么值),仅靠tls-ca-file恕我直言是不够的。而且,不用说根据该页面,一切都应该不做任何事情:/

2> Andrea Ligio..:

尽管我仍然不知道为什么它不能开箱即用,但是我发现了哥伦布的蛋

Gitlab-Runner配置:

[[runners]]
  name = "MyDockerServer-Runner"
  url = "https://MY_PRIVATE_REPO_URL_HERE/"
  token = "MY_TOKEN_HERE"
  executor = "docker"
  ...
  [runners.docker]
    image = "ubuntu:latest"

  # The trick is the following:
    volumes = ["/cache","/srv/gitlab-runner/config:/etc/gitlab-runner"]
    ...

Gitlab-ci.yml管道:

MyJob:
    image: ubuntu:latest

    script:
      - awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' /dev/null
      - apt-get install -y apt-utils dialog >/dev/null
      - apt-get install -y git >/dev/null
      - apt-get install -y wget >/dev/null

    # The trick is the following:
      - cp /etc/gitlab-runner/certs/ca.crt /usr/local/share/ca-certificates/ca.crt
      - update-ca-certificates

而已:

挂载一次卷(每个Docker执行器

一次更新CA证书(每个作业

一切都将如预期git clonewget https,等...

一个不错的解决方法,直到GitLab上的某个人解决它或向我解释我错了(成为我的客人!)


推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 1.直接在cmd窗口运行pipinstalljieba2.使用conda自带的安装工具condainstalljieba3.有一些模块是无法使用以上两种方式安装上ÿ ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
author-avatar
旭89浪子_499
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有