Время собирать Куб

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Следить за быстрым циклом выпуска новых версий Kubernetes — это серьезная задача, особенно для разработчиков платформ, которые используют Kubernetes в качестве основы для своих систем. Kubernetes выпускает новую версию примерно каждые три месяца, и каждая версия привносит новые функции, улучшения, а иногда и критические изменения, которые могут нарушить обратную совместимость.

Чтобы решить эту проблему, мы решили создать переиспользуемый шаблон для сборки Kubernetes, используя сам Kubernetes в качестве фермы для сборки.
Этот шаблон, описанный в документации kube-buildx-farm.md, предоставляет структурированный способ настройки и управления фермой для сборки на основе Kubernetes.

Build
Build

https://github.com/avkcode/k8s-release

Особое внимание в нашем решении уделяется использованию buildx с драйвером Kubernetes. Этот подход позволяет эффективно распределять задачи сборки между узлами кластера, что значительно ускоряет процесс. Одним из ключевых преимуществ является встроенная поддержка кэширования. Buildx позволяет кэшировать слои образов и промежуточные результаты сборки, что особенно полезно при повторных сборках. Это может сократить время сборки на десятки процентов, так как не требуется пересобирать уже собранные и неизменившиеся компоненты.

В данной структуре проекта видно, что система легко расширяется за счет добавления новых Dockerfile для различных компонентов. Например, если требуется добавить поддержку нового компонента Kubernetes или стороннего инструмента, достаточно создать соответствующий Dockerfile в корне проекта. Это позволяет гибко настраивать и расширять сборку, не затрагивая основную логику работы фермы сборки.

-rw-r--r-- 1 root root  2928 Mar  3 21:04 Makefile
drwxr-xr-x 7 root root  4096 Mar  3 21:04 .
drwxr-xr-x 8 root root  4096 Mar  3 20:54 .git
-rw-r--r-- 1 root root  4475 Mar  3 20:53 README.md
-rw-r--r-- 1 root root  5569 Mar  3 20:47 kube-buildx-farm.md
drwxr-xr-x 3 root root  4096 Mar  3 20:26 bridge
drwxr-xr-x 2 root root  4096 Mar  3 20:01 cfg
drwxr-xr-x 2 root root  4096 Mar  3 19:30 output
-rw-r--r-- 1 root root  2152 Mar  3 19:29 docker-compose.yml
-rw-r--r-- 1 root root   859 Mar  3 19:28 Dockerfile.kubectl
drwxr-xr-x 2 root root  4096 Mar  3 19:19 .gitlab
drwxr-xr-x 4 root root  4096 Mar  3 14:06 ..
-rw-r--r-- 1 root root   103 Mar  3 11:35 config-local.toml
-rw-r--r-- 1 root root   852 Mar  3 11:25 Dockerfile.kube-apiserver
-rw-r--r-- 1 root root   186 Mar  2 09:54 config-remote.toml
-rw-r--r-- 1 root root   636 Mar  2 09:52 registry.yaml
-rw-r--r-- 1 root root 35149 Mar  2 08:36 LICENSE
-rw-r--r-- 1 root root   698 Mar  2 08:36 Dockerfile.etcd
-rw-r--r-- 1 root root   888 Mar  2 08:36 Dockerfile.kube-controller-manager
-rw-r--r-- 1 root root   859 Mar  2 08:36 Dockerfile.kubelet
-rw-r--r-- 1 root root   871 Mar  2 08:36 Dockerfile.kube-proxy
-rw-r--r-- 1 root root   852 Mar  2 08:36 Dockerfile.kube-scheduler
-rw-r--r-- 1 root root  3424 Mar  2 08:36 .gitignore
  • config-local.toml: Конфигурационный файл для настройки кэша buildx.

  • config-remote.toml: Конфигурационный файл для настройки кэша buildx.

  • docker-compose.yml: Файл конфигурации Docker Compose, к нему подключены Dockerfileы с компонентами Kubernetes.

  • Dockerfile.etcd: Dockerfile для сборки образа etcd, ключевого компонента Kubernetes.

  • Dockerfile.kube-apiserver: Dockerfile для сборки образа API-сервера Kubernetes.

  • Dockerfile.kube-controller-manager: Dockerfile для сборки образа менеджера контроллеров Kubernetes.

  • Dockerfile.kube-proxy: Dockerfile для сборки образа kube-proxy, обеспечивающего сетевую маршрутизацию.

  • Dockerfile.kube-scheduler: Dockerfile для сборки образа планировщика Kubernetes.

  • Dockerfile.kubectl: Dockerfile для сборки образа CLI-инструмента kubectl.

  • Dockerfile.kubelet: Dockerfile для сборки образа kubelet, отвечающего за работу узлов.

  • kube-buildx-farm.md: Документация о настройке фермы Buildx билдеров Kubernetes.

  • output: Директория для хранения выходных данных или артефактов сборки.

  • registry.yaml: Конфигурационный файл для настройки реестра контейнеров, используемого для хранения собранных образов.

Каждый Dockerfile описывает этапы сборки и зависимости для конкретного компонента, что делает процесс модульным и легко управляемым. Например, если вы хотите добавить сборку для нового инструмента или сервиса, достаточно создать для него отдельный Dockerfile, и система автоматически интегрирует его в общий процесс сборки через Makefile или другие инструменты оркестрации.

Добавить раннер GitLab или Agent Jenkins к хосту на котором установлен Docker и buildx не должно составить большого труда.

Такой подход не только упрощает поддержку и расширение проекта, но и обеспечивает согласованность и воспроизводимость сборок для всех компонентов.

Таким образом, использование Kubernetes в качестве платформы для сборки не только упрощает поддержку актуальных версий, но и значительно ускоряет процесс за счет эффективного использования ресурсов и кэширования.

Источник: https://habr.com/ru/articles/887590/


Интересные статьи

Интересные статьи

Интернет-магазины и площадки электронной коммерции — это сложные системы, в работе которых могут случаться сбои и ошибки. Но в коммерческой среде простои в работе — это всегда убытки. В статье расскаж...
Привет! Меня зовут Артем Цыпин, я исследователь в Институте искусственного интеллекта AIRI. Наша команда занимается применением глубокого обучения в науках о жизни. В сферу наших интересов входят таки...
Все мы работаем в разных предметных областях, и бывает усложно уделить время знакомству с BI. Надеюсь, у Вас есть менее получаса на чтение этой статьи и знакомство с примером, а также есть желание про...
Получить трафик для интернет-магазина сегодня не проблема. Есть много каналов его привлечения: органическая выдача, контекстная реклама, контент-маркетинг, RTB-сети и т. д. Вопрос в том, как вы распор...
Эта статья посвящена одному из способов сделать в 1с-Битрикс форму в всплывающем окне. Достоинства метода: - можно использовать любые формы 1с-Битрикс, которые выводятся компонентом. Например, добавле...