Ресурсы и ссылки для Cloud, Kubernetes и контейнеров

December 28, 2018
kubernetes docker cloud kubectl cluster контейнеры containers image docker hub
Share on:

Kubernetes

Основной сайт Kubernetes kubernetes.io - главный источник обновлений, новостей и кстати, на удивление отличной документации по API, командам kubectl, и другим основным краеугольным камням Kubernetes. Без всякого сомнения рекомендуется как основной справочник по всем командам и функциям для работы с Kubernetes, особенно после того как станет понятна основная идея всей платормы.

Особенно хорош раздел где четко структурирована и подана сама “квинтэссенция” операций команды kubectl - великолепная помощь при работе с командной строкой.

Docker

Сайт разработчиков инструмента Docker - последние версии, новости и обновления.

В повседневной работе с командной строкой Docker очень удобна и визуально структурирована помощь по командам docker.

Docker Hub

Главное хранилище образов (image) для запуска контейнеров Docker и не только, если используется другая среда запуска контейнеров. У каждого разработчика, применяющего контейнеры на практике, практически гарантированно есть бесплатная учетная запись на этом сайте, для хранения своих образов, в том числе и для запуска из них контейнеров на кластерах Kubernetes.

Особенно интересен список наиболее популярных образов Docker на странице explore - в некотором роде барометр интересов и текущих предпочтений использующих контейнеры разработчиков. Можно легко видеть количество скачиваний и звезд, отданных за каждый образ. Все образы в открытом доступе проверяются на уязвимости и особенно, в случае контейнеров, встроенный “троянский” вредоносный код - по крайне мере, самые популярные из них должны быть гарантированно чисты. Будьте осторожны с малоизвестными образами - известны удачные попытки встраивания в них “троянского кода” в образе по использованию ресурсов процессора и сети для выработки криптовалюты.

Minikube

Minikube - самый популярный способ запуска кластера Kubernetes прямо на своей рабочей машине или лэптопе - он устанавливает минимальную виртуальную машину и запускает на ней все компоненты Kubernetes, а затем настраивает kubectl на работу с этим кластером. Отличный способ избежать постоянной работы с Интернетом и публичными провайдерами облака для тестирования приложений в контейнерах.

Посмотрите как установить и настроить Minikube в моей статье.

Skaffold

Отличный инструмент от коллег в Google для развертывания любого сервиса или множественных сервисов на кластере Kubernetes - неважно, локальное ли это тестирование с помощью Minikube или Docker, или же полноценное развертывание на публичном облачном кластере. Skaffold берет на себя задачу построения образа контейнера для вашего приложения или сервиса (обычно, конечно же, с помощью Dockerfile), присваивает образу новую версию (обычно основанную на текущем времени или можно использовать последний коммит в Git), и отправляет все объекты Kubernetes в управление кластера с помощью kubectl.

В чем отличие от ручной работы? Основное премущество Skaffold - автоматизация бесконечного цикла docker build, docker tag, docker push, и наконец kubectl apply, особенно когда вы ловите сложную ошибку или заканчиваете срочную новую функциональность. В таких ситуациях зачастую необходимо проверить все на кластере несколько раз, а это требует перестроения образа контейнера, новых версий и обновления развертывания. Skaffold сделает все это за вас, просто запустите его в фоновом режиме - и более того, он автоматически будет отслеживать изменения в исходном коде вашей программы и Dockerfile, и тут же развертывать новую версию приложения (или множество сервисов) на кластере.

Очень хорошая документация, особенно первые примеры.

Jib - контейнеры для Java

Создание образов контейнеров для Java ничем не отличается по сути от других контейнеров, но столкнулось с проблемой - если строить приложение с нуля, прямо в Dockerfile (что является предпочтительным способом - мы отсекаем особенности своей собственной машины и ее кэш), создание образа становится очень долгим и громоздким - стандартные системы сборки Maven и Gradle собирают все зависимости (dependencies) заново, скачивают их из Интернета с хранилищ подобных Maven Central, и так каждый раз, при любом малейшем изменении в коде или конфигурации.

Задача Jib - оптимизировать этот процесс. Он встраивается в системы сборки Maven и Gradle, и кэширует зависимости - как правило довольно большое количество сторонних библиотек JAR. При изменении кода в образ копируются только новые классы, а все библиотеки и зависимости остаются в предыдущем “слое” (layer). Более того, Jib строит изображение Java без помощи Docker, просто используя совместимый формат образа. Ускорение процесса просто потрясающее, и Jib стал очень популярен - работа с контейнерами стала возможна почти с такой же эффективной скоростью, как и без них, как если бы проект собирался со всеми кэшами локально. Skaffold уже поддерживает Jib для построения образов.

Jib на GitHub

comments powered by Disqus