Управляющий кластер
Опыта с Kubernetes у меня не было никакого. За всё время практики он как-то не подворачивался — не складывались ни обстоятельства, ни задачи. В новую архитектуру я включил его осознанно: прекрасно понимаю логику его работы, и он идеально вписывается в то, что мы строим. Рано или поздно он всё равно появился бы в проекте. Ну что ж — время пришло.
Ноды — поды, кубернетис — хуетис… Всё оказалось не так страшно, инструмент выстроен действительно логично и понятно. Вчера я поднял свой первый кластер.
Точнее — два кластера. Я решил не объединять управляющий Kubernetes с хранилищем данных. Да, это добавляет работы: отдельное развёртывание, выпуск сертификатов, лишняя возня с конфигурацией. Но зато etcd живёт как самостоятельный распределённый кластер хранения — именно так, как планировалось ещё в старой архитектуре. В будущем это даёт независимое масштабирование обоих слоёв. Сейчас я обдумываю, не стоит ли вынести кластер хранения ближе к входным узлам — чтобы сократить задержку при обращениях на входе в сеть.
Технически всё оказалось несложно, хотя и заняло время.
Время — самый дефицитный ресурс во всей этой истории. Я занимаюсь проектом в редкие паузы между другими делами. Стараюсь не забрасывать — но основное внимание сейчас занято совсем другим. Возвращаюсь к этому в промежутках. Вот, например, сейчас: сижу в кафе с пирожным и чашкой кофе после ЛФК, набираю этот пост на телефоне — клавиатуру всегда ношу с собой специально для таких случаев.
Но основное время ушло даже не на строительство кластера, а на смежные вопросы безопасности и операционного обеспечения. Моя цель — не просто поднять готовую работающую систему. Параллельно я веду разработку инструментов, которые позволяют автоматизировать весь этот процесс и воспроизвести его быстро и безопасно.
Я стараюсь никогда не решать задачу в её частном виде. Всегда пытаюсь свести частное к общему — и решив один раз, переиспользовать дальше. Написал большой набор скриптов, покрывающих основные сценарии администрирования: развёртывание нод и кластеров, выпуск сертификатов, базовая настройка безопасности. Отладка заняла время — зато теперь поднять новый кластер (или пересоздать существующий) — это пара минут и несколько команд в терминале.
Параллельно я переосмыслил подход к безопасности. Всё чувствительное — ключи, пароли, токены — теперь хранится локально. Попутно разрабатываю инструмент (рабочее название — «Хранитель ключей»): хранить всё чувствительное на зашифрованном физическом носителе, администрировать узлы только с него, с явной аутентификацией при каждой сессии. Рабочий пайплайн уже собран — и, возможно, я выложу его в опенсорс, когда немного обкатаю и причешу интерфейс.
Отдельное направление — но оно мне нравится именно тем, что даёт возможность снова писать код и стучать в терминале. Я уже успел по этому соскучиться.
Вчера поднял управляющий кластер. Завтра — кластер входных узлов. Послезавтра — следующий.