Git-репозиторий
В этом разделе:
В качестве источника входных данных для сборки приложения может быть использован Git-репозиторий. В этом случае, в сборке будет использоваться исходный код из указанного Git-репозитория.
Чтобы добавить Git-репозиторий в качестве источника входных данных, в разделе Sourse
Build Config добавьте параметры:
Git
— добавьте URL Git-репозитория. Добавьте полеref
, чтобы проверить ссылки на Git. Например, в качестве значения поляref может быть указан тег ``SHA1
или имя ветви.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-репозитория:
Добавьте поле
sourceSecret
в разделSource
в Build Config.Присвойте имя секрету в поле
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
:
Добавьте файлы
client.crt
,cacert.crt
иclient.key
в папку/var/run/secrets/openshift.io/source/
в исходном коде приложения.В файле
.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
Создайте секрет:
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_dsa
, id_ecdsa
, id_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):
Если сертификат использует промежуточные центры сертификации, объедините сертификаты в файле
ca.crt
. Для этого используйте команду:cat intermediateCA.crt intermediateCA.crt rootCA.crt > ca.crt
Создайте секрет. Для этого используйте команду:
oc create secret generic mycert --from-file=ca.crt=</path/to/file>
Чтобы отключить проверку Git TLS в стратегии конфигурации сборки, установите значение GIT_SSL_NO_VERIFY
переменной среды true
.
Подсказка
Используйте команду oc set env
для управления переменными средами конфигурации сборки (Build Config).
Комбинации
Ниже приведено несколько примеров как можно комбинировать вышеуказанные методы для создания секретов исходного клона.
Чтобы создать секретный ключ аутентификации на основе 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
Чтобы создать секрет, который объединяет file:.gitconfig и сертификат CA, используйте команду:
oc create secret generic <secret_name> \\ --from-file=ca.crt=<path/to/certificate> \\ --from-file=<path/to/.gitconfig>
Чтобы создать основной секрет аутентификации ссертификата 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
Чтобы создать основной секрет аутентификации с помощью 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
Чтобы создать основной секрет аутентификации с помощью 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