Не удается получить доступ к Gitlab из Gitlab Runner в Docker (проблема с прокси) - PullRequest
0 голосов
/ 08 ноября 2019

Я зарегистрировал gitlab runner, и он подключается к моему экземпляру gitlab из моей офисной сети. Однако дома по VPN это не происходит.

Если я помещаю коммит в мой экземпляр gitlab, бегун начинает выполнять .gitlab-ci.yml и возникает следующая ошибка:

enter image description here

Это проблема с прокси-сервером, которую легко устранить, перейдя в настройки Docker и настроив ее на использование интернет-прокси для всего, кроме адресов интрасети, например, моего экземпляра gitlab.

Однако, когда я перезапускаю Docker и отправляю изменения в gitlab, мой бегун gitlab не запускает конвейер. Конвейер зависает в состоянии «Ожидание»: enter image description here

Если перейти к настройкам CI / CD, можно увидеть, что бегун выглядит в автономном режиме:

enter image description here

Я пытаюсь свернуть mygitlab.com из контейнера gitlab-runner:

root@2a0773f7a6e4:/# curl -v --noproxy '*' https://mygitlab.com/
*   Trying xxx.xxx.xxx.xxx...
* TCP_NODELAY set
* Connected to mygitlab.com (xxx.xxx.xxx.xxx) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):

и зависает, в конечном итоге выходя из:

* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to mygitlab.com:443
* stopped the pause stream!
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to mygitlab.com:443

Это действительно достигает gitlab, но кое-что заставляет это сломаться. Например, если я сверну https://google.com,, это удастся.

На моем хосте я запускаю ту же команду для доступа к gitlab, и она успешно выполняется, и использует те же сертификаты.

silvas@md2e1hnc ~ $ curl -v --noproxy '*' https://mygitlab.com/
*   Trying xxx.xxx.xxx.xxx...
* TCP_NODELAY set
* Connected to mygitlab.com (xxx.xxx.xxx.xxx) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):

Итак, ни в одном из случаев я не использую прокси, я использую тот же сертификат, но один зависает, а другой успешно.

Если я удаляю настройки прокси (которые я не использую для curl!) Из докера, gitlab-runner подключается к mygitlab.com! А из моего офиса первая проблема (подключение к интернету) не существует, так что все в порядке.

Может кто-нибудь уточнить, что мне не хватает? Как конфигурация прокси мешает моему бегуну подключиться к gitlab?

Заранее спасибо.

...