Git-репозиторий

В качестве источника входных данных для сборки приложения может быть использован Git-репозиторий. В этом случае, в сборке будет использоваться исходный код из указанного Git-репозитория.

Чтобы добавить Git-репозиторий в качестве источника входных данных, в разделе Sourse Build Config добавьте параметры:

  1. Git — добавьте URL Git-репозитория. Добавьте поле ref, чтобы проверить ссылки на Git. Например, в качестве значения поля ref может быть указан тег ``SHA1 или имя ветви.

  2. ContextDir — с помощью этого поля можно переопределить местоположение приложения по умолчанию (корневую папку), если оно находится внутри подкаталога.

Пример:

source:
git:
url: "https://github.com/openshift/ruby-hello-world"
ref: "master"
contextDir: "app/dir"

Использование Proxy

Если к Git-репозиторию можно получить доступ только через прокси, добавьте прокси в разделе Source Build Config. Вы можете настроить HTTP и HTTPS прокси. Домены, для которых не нужно выполнять проксирование, также можно указать через поле NoProxy.

Чтобы добавить прокси, исходный URL должен использовать протокол HTTP и HTTPS.

Пример:

source:
git:
url: "https://github.com/openshift/ruby-hello-world"
httpProxy: http://proxy.example.com
httpsProxy: https://proxy.example.com
noProxy: somedomain.com, otherdomain.com

Добавление секрета копии Git-репозитория

Для подов сборки требуется доступ ко всем Git-репозиториям, определенным как источник для сборки. Секреты копии Git-репозитория используются для предоставления такого доступа поду сборки.

Чтобы предоставить службам сборки доступ к секрету источника используйте команду:

oc secrets link builder mysecret

Примечание

Если в файле Build Config в разделе serviceAccountConfig.limitSecretReferences установлено значение false (настройка по умолчанию), предоставление службам сборки доступа к секрету не требуется.

Чтобы добавить секрет копии Git-репозитория:

  1. Добавьте поле sourceSecret в раздел Source в Build Config.

  2. Присвойте имя секрету в поле name. В примере ниже секрету присвоено имя basicsecret.

Пример:

apiVersion: "v1"
kind: "BuildConfig"
metadata:
  name: "sample-build"
spec:
  output:
   to:
    kind:"ImageStreamTag"
    name:"sample-image:latest"
source:
  git:
   url: "https://github.com/user/app.git"
sourceSecret:
  name: "basicsecret"
strategy :sourceStrategy:
from:
    kind: "ImageStreamTag"
    name: "python-33-centos7:latest"

Поддерживаются следующие исходные конфигурации секрета копии Git:

Файл .gitconfig

Если клонирование Git-репозитория невозможно без файла .gitconfig, то создайте секрет, который его содержит, и затем добавьте его в учетную запись службы сборки, а также в Build Config.

Чтобы создать секрет содержащий файл .gitconfig, используйте команду:

oc create secret generic <secret_name>
--from-file=<path/to/.gitconfig>

Если Git-сервер защищен двухсторонним SSL, пользовательским логином и паролем, необходимо добавить файлы сертификатов в исходную сборку и ссылки на сертификаты в файл .gitconfig:

  1. Добавьте файлы client.crt, cacert.crt и client.key в папку /var/run/secrets/openshift.io/source/ в исходном коде приложения.

  2. В файле .gitconfig добавьте раздел [http] как показано на примере ниже:

    # cat .gitconfig
    [user]
         name = <name>
         email = <email>
    [http]
         sslVerify = false
         sslCert = /var/run/secrets/openshift.io/source/client.crt
         sslKey = / var / run / secrets / openshift.io/source/client.key
         sslCaInfo = /var/run/secrets/openshift.io/source/cacert.crt
    
  3. Создайте секрет:

    oc create secret generic <secret_name> \\
    --from-literal=username=<user_name> \\
    --from-literal=password=<password> \\
    --from-file=.gitconfig=.gitconfig \\
    --from-file=client.crt=/var/run/secrets/openshift.io/source/client.crt
    \\
    --from-file=cacert.crt=/var/run/secrets/openshift.io/source/cacert.crt
    \\
    --from-file=client.key=/var/run/secrets/openshift.io/source/client.key
    

    Где:

    • --from-literal=username=<user_name> \\ — логин пользователя Git;

    • --from-literal=password=<password> \\ — пароль пользователя Git.

Базовая аутентификация

Прежде чем использовать указанный логин и пароль пользователя к частному репозиторию создайте секрет. Для этого используйте команду:

oc create secret generic <secret_name> \\
--from-literal=username=<user_name> \\
--from-literal=password=<password> \\
--type=kubernetes.io/basic-auth

Чтобы создать секрет аутентификации с помощью токена используйте команду:

oc create secret generic <secret_name> \\
--from-literal=password=<token> \\
--type=kubernetes.io/basic-auth

Аутентификация по ключу SSH

Для аутентификации на основе ключа SSH требуется закрытый ключ SSH.

Ключи хранилища находятся в каталоге $ HOME / .ssh / и по умолчанию имеют имена id_dsa.pub, id_ecdsa.pub, id_ed25519.pub или id_rsa.

Чтобы сгенерировать учетные данные ключа SSH, используйте команду:

ssh-keygen -t rsa -C your_email@example.com

Внимание

Создание passphrase для SSL ограничивает запуск процесса сборки. При создании пароля оставьте поле passphrase пустым.

В результате выполнения команды будет создано два файла: открытый ключ и соответствующий секретный ключ (один из id_dsaid_ecdsaid_ed25519, или id_rsa).

Примечание

Обратитесь к документации вашей системы управления исходным кодом (SCM), чтобы загрузить открытый ключ. Закрытый ключ используется для доступа к личному хранилищу.

Прежде чем использовать ключ SSH для доступа к закрытому хранилищу, создайте секрет. Для этого используйте команду:

oc create secret generic <secret_name> \\
--from-file=ssh-privatekey=<path/to/ssh/private/key> \\
  --type=kubernetes.io/ssh-auth

Доверенные центры сертификации

Опеншифт автоматически проводит проверку сертификатов TLS в процессе копирования Git-репозитория. Если сервер копируемого Git-репозитория использует самозаверяющий сертификат, то создайте секрет, содержащий сертификат, или отключите проверку TLS. Рекомендовано создание секрета, содержащий корневой сертификат SLL (CA certificate). В этом случае Опеншифт будет использовать этот сертификат для доступа к серверу Git в процессе клонирования git-репозитория.

Чтобы создать секрет содержащий корневой сертификат SLL (CAcertificate):

  1. Если сертификат использует промежуточные центры сертификации, объедините сертификаты в файле ca.crt. Для этого используйте команду:

    cat intermediateCA.crt intermediateCA.crt rootCA.crt > ca.crt
    
  2. Создайте секрет. Для этого используйте команду:

    oc create secret generic mycert --from-file=ca.crt=</path/to/file>
    

Чтобы отключить проверку Git TLS в стратегии конфигурации сборки, установите значение GIT_SSL_NO_VERIFY переменной среды true.

Подсказка

Используйте команду oc set env для управления переменными средами конфигурации сборки (Build Config).

Комбинации

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

  1. Чтобы создать секретный ключ аутентификации на основе SSH с помощью файла .gitconfig, используйте команду:

    oc create secret generic <secret_name> \\
    --from-file=ssh-privatekey=<path/to/ssh/private/key> \\
    --from-file=<path/to/.gitconfig> \\
    --type=kubernetes.io/ssh-auth
    
  2. Чтобы создать секрет, который объединяет file:.gitconfig и сертификат CA, используйте команду:

    oc create secret generic <secret_name> \\
    --from-file=ca.crt=<path/to/certificate> \\
    --from-file=<path/to/.gitconfig>
    
  3. Чтобы создать основной секрет аутентификации ссертификата CA, используйте команду:

    oc create secret generic <secret_name> \\
    --from-literal=username=<user_name> \\
    --from-literal=password=<password> \\
    --from-file=ca.crt=</path/to/file> \\
    --type=kubernetes.io/basic-auth
    
  4. Чтобы создать основной секрет аутентификации с помощью file:.gitconfig, используйте команду:

    oc create secret generic <secret_name> \\
    --from-literal=username=<user_name> \\
    --from-literal=password=<password> \\
    --from-file=</path/to/.gitconfig> \\
    --type=kubernetes.io/basic-auth
    
  5. Чтобы создать основной секрет аутентификации с помощью file:.gitconfig и сертификата CA, используйте команду:

    oc create secret generic <secret_name> \\
    --from-literal=username=<user_name> \\
    --from-literal=password=<password> \\
    --from-file=</path/to/.gitconfig> \\
    --from-file=ca.crt=</path/to/file> \\
    --type=kubernetes.io/basic-auth