Рубрики
Uncategorized

Как использовать KBLD для быстрое итерации на kubernetes развернутые приложения

Обязательная доставка контейнерного покрытия Изображение BOBA Jovanovic на Unsplash Что такое KBLD? … Tagged с Куберовщиком, докером, дежоптом.

Обязательная доставка контейнерного покрытия изображения Боба Джованович на Бессмысленно

Что такое KBLD?

При создании приложений, которые простираются или взаимодействуют с Kubernetes, есть времена, когда необходимо развернуть и развиваться против реального кластера K8S. В то время как Кубернаны заставляют его тривиальны, чтобы применить и развернуть новые изменения, здание и толкать новую разработку Docker Images для вашего приложения может быть ригамаролем. Кроме того, вы также должны помнить, чтобы настроить imagepullpolicy Для ваших контейнеров до Всегда Отказ В противном случае, кто знает, если Узел Ваше приложение заканчивается работает, есть кэшировано старое изображение!

К счастью, есть инструмент, который может помочь решить все эти проблемы. KBLD CLI (произносится «K Build») помогает со всеми вещами вокруг изображения здания и толкать для Кубератеса. Это при активной разработке, поэтому обратитесь к KBLD сайт Для максимально современного набора функций, но я фанат своей способности сделать следующее:

  1. Знать, где мой исходный код для создания жизни
  2. Создайте изображение OCI (используя Docker или Cloud Foundpacks )
  3. Пометить изображение и подтолкните его к реестру моего выбора (локальный реестр для добпому, DockerHub, GCR и т. Д.)
  4. Найдите ссылки на изображение в kubernetes Развертывание yamls и замените расплывчатые ссылки с выявлениями изображения для детерминированных развертываний

У меня меньше вентилятора, однако, его ценной документации. Так что в этом посте я собираюсь показать, как я пользуюсь KBLD Чтобы построить документы Docker для моих проектов.

Понимание конфигурации KBLD

Как и большинство вещей в экосистеме Кубернетика, KBLD CLI настроен файлами YAML. Здесь есть несколько вариантов, но два основных объекта YAML, которые я использую, являются Источники и ИМЕДЕЦИИ .

Источники

apiVersion: kbld.k14s.io/v1alpha1
kind: Sources
sources:
- image: image-repository/image-name
  path: /path/to/source/code
  pack:
    build:
      builder: heroku/buildpacks:18

А Источники Объект объявляет изображения, которые KBLD должны нести ответственность за строительство. Он включает информацию о путь Для исходного кода изображения, а также конфигурации для построителя изображения ( Docker или Pack ).

ИМЕДЕЦИИ

apiVersion: kbld.k14s.io/v1alpha1
kind: ImageDestinations
destinations:
- image: image-repository/image-name
  newImage: docker.io/image-repository/image-name

ИМЕДЕЦИИ Скажите KBLD, как он должен метить и нажать на изображения, которые он построил. Это довольно простой ресурс, и сначала я был удивлен, что здесь не было ничего об аутентификации для частных реестров. Это конфигурация, однако, входит через ваш Docker Config или в качестве переменных среды. Посмотреть Эти документы по аутентификации KBLD Для получения дополнительной информации об этом.

Эти ресурсы Кубератеса?

Подобный разработчик может признать, что эти ресурсы KBLD выглядят подозрительно похожи на объекты ресурсов Kubernetes, и удивляются, есть ли какие-либо CRD участвует здесь. Это не тот случай, хотя. Сходства являются чисто поверхностными, и эти ресурсы используются на стороне клиента непосредственно по KBLD CLI.

Как всегда, обратитесь к Документация KBLD Config Document за последнее о том, что возможно.

Как использовать KBLD

TcDowney/Manmo.

это способ

это способ

просто небольшое приложение для тестирования Маршрутизация на основе пути

docker run -p 8080:8080 downey/mando

построить и развернуть

Может быть построен и развернут в Кубернаны с kbld.

kbld -f build -f deploy | kubectl apply -f -

Следующие примеры относятся к простому приложению Go под названием Мандо Это будет построено и развернуто в Kubernetes, используя kbld. .

Создание приложения с KBLD с помощью DockerFile

Если вы хотите следить, вам понадобится следующее:

  1. Установить Docker
  2. Подпишитесь на бесплатный Аккаунт Dockerhub или иметь доступ к другому реестру изображений
  3. Установите KBLD
  4. Иметь доступ к кластеру Kubernetes и kubectl Если вы хотите развернуть

Начать, поскольку мы будем публиковать в реестре OCI Image, нам сначала нужно аутентифицировать . Так как я нажав мои изображения в Dockerhub, это означает, что мне просто нужно Докер Логин Отказ

Для следующего я буду отработать от kbld-dockerfile-пример филиал моего тестового приложения репо.

В этом репо у меня есть пример Развертывание Для Кубератесов в Развертывание каталог и файлы KBLD в построить каталог.

---
apiVersion: kbld.k14s.io/v1alpha1
kind: Sources
sources:
- image: downey/mando
  path: .

Вот я настроил KBLD для создания моего изображения, Downey/Manmo , используя код и Dockerfile в корне моего хранилища.

---
apiVersion: kbld.k14s.io/v1alpha1
kind: ImageDestinations
destinations:
- image: downey/mando
  newImage: docker.io/downey/mando

Это ИМЕДЕЦИИ Конфигурация рассказывает KBLD к метку и нажать на мой образец в DockerHub в Docker.io/downey/mando Отказ

Теперь, чтобы использовать эту конфигурацию, в корне каталога приложения мы можем запустить:

kbld -f build -f deploy

Затем мы увидим KBLD свою магию. Так и будет:

  1. Построить Мандо приложение, использующее его Dockerfile
  2. Толкать его в Dockerhub
  3. Обновите ссылки на изображение в наших kubernetes Развертывание использовать дайджест для изображения Мы только что построили
  4. Вывод kubernetes yaml со всеми изменениями

Затем мы можем либо написать этот вывод в файл или развернуть его прямо в Kubernetes:

kbld -f build -f deploy | kubectl apply -f -

Это может показаться не так много. Но после десятков циклов Docker Build , Docker Push , Обновление Cubernetes Config, чтобы указать на новый тег, а развертывание, KBLD может в конечном итоге сохранить кучу времени!

Где я Действительно Найти kbld полезно, хотя с облачными родными рубашками.

Создание приложения с KBLD с помощью Buildpacks

Для этого раздела я буду отработать от KBLD-Pack-пример филиал моего тестового приложения репо. Если вы не знакомы с концепцией Buildpacks, я бы поощрял вас на Узнайте больше о них Или проверьте мой блог на Развертывание приложений к Куберату с Buildpacks Отказ

Использование Buildpacks вместо DockerFile для сборки простой с KBLD Отказ Поток в значительной степени одинаково — вместо Dockerfile мы будем использовать пакет CLI (установить его, если вы еще не имеете) и сделаете несколько незначительных твиков нашим Источники Ямл.

--------
apiVersion: kbld.k14s.io/v1alpha1
kind: Sources
sources:
- image: downey/mando
  path: .
  pack:
    build:
      builder: cloudfoundry/cnb:tiny

Здесь мы говорим KBLD, который «Строитель» использовать. Я использую CNB: крошечный Строитель, поскольку он оптимизирован для создания легких изображений «отмерзгивание» для двоичных файлов. Идеально подходит для этого корпуса. Если вы не уверены, какой построитель использовать, вы всегда можете работать пакет предлагает-строителей Чтобы получить актуальный список строителей из облачного литейного завода и Heroku.

В любом случае, как я уже говорил ранее, поток такой же, как раньше. Чтобы построить и развернуть, просто запустить:

kbld -f build -f deploy | kubectl apply -f -

KBLD CLI теперь построит, используя пакет вместо Докер Действительно Так как я использую пакет CLI довольно нечасто, я более чем рад передать царствованию на KBLD И позвольте ему органищать сборку и толчок.

Резюме

Ну вот об этом. Если вы получили это далеко, надеюсь, этот пост помог Demystify некоторые основные случаи использования для kbld. И как он может помочь упростить потоку Docker Image Push-Consuct. Если вы хотите узнать больше, проверьте KBLD Docs. или присоединиться к # K14s Канал на Кубернаны слабые Отказ Удачи! 🌝.

Оригинал: «https://dev.to/downey/using-kbld-to-rapidly-iterate-on-kubernetes-deployed-apps-48eh»