Вход в частный реестр изнутри облачных конструкторов / docker шаг не удался - сертификат подписан неизвестным органом - PullRequest
0 голосов
/ 07 августа 2020

Мне нужно пройти аутентификацию в частном реестре с помощью самозаверяющего сертификата на этапе сборки облака. Если я выполняю docker login напрямую, по очевидным причинам, это не срабатывает с error: x509: certificate signed by unknown authority - все в порядке.

Обычно я решаю подобные проблемы с помощью следующего однострочника:

openssl s_client -showcerts -connect external-registry.io:5000 < /dev/null | \
    sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /usr/local/share/ca-certificates/external-registry.io.crt && \
    update-ca-certificates

К сожалению, это не работает в Cloud Build.

name: 'gcr.io/cloud-builders/docker'
env:
entrypoint: 'bash'
args:
    - '-c'
    - |
        openssl s_client -showcerts -connect external-registry.io:5000 < /dev/null | \
            sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /usr/local/share/ca-certificates/external-registry.io.crt && \
            update-ca-certificates

        echo password | docker login external-registry.io:5000 --username administrator --password-stdin
        ...

Вышеуказанное не работает, оно не работает с error: x509: certificate signed by unknown authority.

Интересно, что запуск cloud-builders docker контейнер локально все работает безупречно, как и ожидалось.

git clone https://github.com/GoogleCloudPlatform/cloud-builders.git
cd cloud-builders/docker
docker build -f ./Dockerfile-19.03.8 -t cloudbuilder .
docker run -it --entrypoint /bin/bash cloudbuilder

теперь внутри контейнера:

openssl s_client -showcerts -connect external-registry.io:5000 < /dev/null | \
    sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /usr/local/share/ca-certificates/external-registry.io.crt && \
    update-ca-certificates

echo password | docker login external-registry.io:5000 --username administrator --password-stdin

Login Succeeded

Любые объяснения и / или обходные пути были бы очень признательны. Как Google эффективно использует контейнеры для создания облаков?

Спасибо и ура!

...