Как использовать kubernetes helm из конвейера CI / CD, размещенного вне кластера k8s

Я использую kubernetes helm для развертывания приложений в моем кластере. На моем ноутбуке все работает нормально, когда helm использует файл kube-config кластера для развертывания в кластере.

Я хочу использовать helm с моего сервера CI / CD (который находится отдельно от моего кластера) для автоматического развертывания приложений в моем кластере. Я создал сервисную учетную запись k8s для моего CI / CD-сервера. Но как мне создать файл kube-config для учетной записи службы, чтобы helm мог использовать его для подключения к моему кластеру с моего сервера CI / CD ??

Или это неправильный способ использовать Helm с сервера CI / CD?


comment
Это правильный способ сделать это. Вы можете просто скопировать каталог ~ / .kube, чтобы получить необходимые конфигурации.   -  person Norbert van Nobelen    schedule 26.04.2017


Ответы (4)


Helm использует установленный kubectl для взаимодействия с вашим кластером. Это означает, что если вы можете получить доступ к своему кластеру через kubectl, вы можете использовать helm с этим кластером.

Не забудьте убедиться, что вы используете правильный контекст, если у вас более одного кластера в файле kubcfg. Вы можете проверить это, запустив kubectl config current-context и сравнив его с данными о кластере в файле kubecfg.

Вы можете найти более подробную информацию в документации Helm, ознакомьтесь с кратким руководством по началу работы для получения дополнительной информации.

person Merlin    schedule 26.04.2017

почему бы просто не запустить свой CI-сервер внутри кластера kubernetes, тогда вам не нужно будет управлять секретами для доступа к кластеру? Мы делаем это на Jenkins X, и это отлично работает - мы можем запускать kubectl или helm внутри конвейеров.

person James Strachan    schedule 22.05.2018
comment
Что ж, когда был задан вопрос, Дженкин Икс просто не существовал. В моей обычной настройке у меня есть как минимум 2 кластера, постановка и продукт, и я обычно не запускаю сборку на продукте. Имея 2 кластера и когда сборка / развертывание не выполняется в том же кластере, где развернуто приложение, снова возникает вопрос. - person Nithin; 31.05.2018
comment
Потому что репо находится за пределами кластера, и веб-перехватчики не могут взаимодействовать с моим кластером? Делает PR-сборки и такое трудное - person Sinaesthetic; 05.09.2018

В этом случае вы захотите установить kubectl на любом ведомом устройстве или агенте, который вы определили для использования вашим сервером CI / CD, ИЛИ установить kubectl на лету в вашей автоматизации, И затем убедитесь, что у вас есть ИЛИ вы можете сгенерировать kubeconfig для использования.

Чтобы ответить на вопрос:

Но как мне создать файл конфигурации kube для учетной записи службы ...

Вы можете установить новые кластеры, учетные данные и контексты для использования с kubectl в файле kubeconfig по умолчанию или в настраиваемом файле kubeconfig, используя kubectl config set-cluster, kubectl config set-credentials и kubectl config set-context. Если у вас установлена ​​переменная KUBECONFIG env и она указывает на файл kubeconfig, это работает, или при установке новых записей просто передайте -kubeconfig, чтобы указать на настраиваемый файл.

Здесь соответствующая документация по API для версии 1.6.

person Murad Korejo    schedule 01.05.2017

Мы создали helmsman, который предоставляет вам декларативный синтаксис для управления диаграммами управления в вашем кластере. Он настраивает kubectl (и, следовательно, helm) для вас, где бы вы его ни запускали. Его также можно использовать из контейнера докеров.

person Sami    schedule 07.03.2018