Forwarded from Библиотека задач по DevOps | тесты, код, задания
Какой механизм использует Kubernetes для предотвращения несанкционированного доступа к конечным точкам через сервер API?
Anonymous Quiz
9%
Аутентификация прокси
13%
Авторизация конечной точки
67%
RBAC (ролевое управление доступом)
10%
Сегментация сети
🪶 Как следовать принципу DRY при настройке Apache APISIX
DRY — один из самых известных принципов разработки ПО: он помогает избежать ненужного повторения фрагментов кода, которые выполняют одни и те же действия. DRY также стоит применять при настройке конфигурации сложных систем, поскольку этот принцип:
☑️ Делает конфигурацию более компактной и легкой для понимания.
☑️ Упрощает поддержку — когда нужно внести изменения, вы делаете это только в одном месте.
☑️ Повышает читаемость — конфигурация становится более структурированной и логичной, что облегчает ее понимание.
☑️ Улучшает масштабируемость — при усложнении конфигурации принципы DRY помогают сохранять ее управляемой и расширяемой.
☑️ Сокращает время на настройку — используя переиспользуемые компоненты, можно быстрее создавать новые конфигурации или модифицировать существующие.
В качестве примера в статье рассматриваем, как применять DRY при настройке конфигурации API-шлюза Apache APISIX.
🔗 Читать статью
🔗 Зеркало
DRY — один из самых известных принципов разработки ПО: он помогает избежать ненужного повторения фрагментов кода, которые выполняют одни и те же действия. DRY также стоит применять при настройке конфигурации сложных систем, поскольку этот принцип:
☑️ Делает конфигурацию более компактной и легкой для понимания.
☑️ Упрощает поддержку — когда нужно внести изменения, вы делаете это только в одном месте.
☑️ Повышает читаемость — конфигурация становится более структурированной и логичной, что облегчает ее понимание.
☑️ Улучшает масштабируемость — при усложнении конфигурации принципы DRY помогают сохранять ее управляемой и расширяемой.
☑️ Сокращает время на настройку — используя переиспользуемые компоненты, можно быстрее создавать новые конфигурации или модифицировать существующие.
В качестве примера в статье рассматриваем, как применять DRY при настройке конфигурации API-шлюза Apache APISIX.
🔗 Читать статью
🔗 Зеркало
🤔🤔 Как снизить расходы на мониторинг: более разумный подход к данным
Мониторинг может стать дорогостоящим из-за огромных объемов данных, которые необходимо обрабатывать. В этой статье вы узнаете о лучших способах хранения и обработки метрик мониторинга для снижения расходов и о том, как VictoriaMetrics может в этом помочь.
Подробности тут
#туториал
Мониторинг может стать дорогостоящим из-за огромных объемов данных, которые необходимо обрабатывать. В этой статье вы узнаете о лучших способах хранения и обработки метрик мониторинга для снижения расходов и о том, как VictoriaMetrics может в этом помочь.
Подробности тут
#туториал
🚀 Новые возможности React 19: конец эры повторных рендерингов
Новый компилятор React 19 обещает существенное повышение производительности, что станет настоящим прорывом для разработчиков. Но это лишь верхушка айсберга. В этой статье мы не только разберемся, как работает компилятор, но и погрузимся в мир других новейших возможностей React 19.
🔗 Читать статью
🔗 Зеркало
Новый компилятор React 19 обещает существенное повышение производительности, что станет настоящим прорывом для разработчиков. Но это лишь верхушка айсберга. В этой статье мы не только разберемся, как работает компилятор, но и погрузимся в мир других новейших возможностей React 19.
🔗 Читать статью
🔗 Зеркало
Forwarded from Библиотека задач по DevOps | тесты, код, задания
Какой из этих вариантов не является методом WebElement?
Anonymous Quiz
14%
getText()
30%
size()
17%
setTagName()
39%
sendKeys()
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
Linux Dash
Позволяет мониторить:
👉 Среднюю загрузку системы (load average)
👉 Оперативную память (Всего/Использовано/Свободно)
👉 Использование дисков (свободное место)
👉 Список пользователей
👉 Список ПО и пути до бинарных файлов
👉 Список интерфейсов с их IP-адресами
👉 Текущую скорость интерфейса (Входящая/Исходящая)
👉 Список подключенных пользователей
👉 Список процессов
#софт
Позволяет мониторить:
👉 Среднюю загрузку системы (load average)
👉 Оперативную память (Всего/Использовано/Свободно)
👉 Использование дисков (свободное место)
👉 Список пользователей
👉 Список ПО и пути до бинарных файлов
👉 Список интерфейсов с их IP-адресами
👉 Текущую скорость интерфейса (Входящая/Исходящая)
👉 Список подключенных пользователей
👉 Список процессов
#софт
😮 SQL: от Тетриса до ИИ — неожиданные возможности языка баз данных
Долгое время SQL использовали лишь для запросов и изменения записей в базах данных — для полноценного программирования в привычном смысле слова он не подходил. Однако добавление рекурсивных общих табличных выражений (CTE) сделало SQL полным по Тьюрингу. Рекурсивные CTE состоят из двух частей:
• Нерекурсивная часть (базовый случай) — создает начальные данные.
• Рекурсивная часть — может выполняться много раз, каждый раз используя результат предыдущего шага.
Благодаря CTE на SQL можно при желании реализовать любой алгоритм. Энтузиасты уже сделали:
• Визуализацию множества Мандельброта с помощью ASCII-графики.
• 3D-движок для рисования объемных фигур.
• GPT на 500 строках SQL-кода. Подробная статья о реализации этого проекта опубликована здесь.
• Трассировку лучей (это метод создания реалистичных изображений).
На прошлой неделе коллекция крутых SQL-проектов пополнилась еще одной интересной разработкой — версией «Тетриса».
Эта реализация демонстрирует несколько нестандартных SQL-техник, о которых стоит знать, даже если вы используете SQL только по прямому назначению:
• Игровой цикл. В основе игры – рекурсивное общее табличное выражение (CTE). Оно создает бесконечный цикл, который инициализирует состояние игры, обновляет его на основе ввода пользователя и отрисовывает игру. Цикл продолжается, пока игра не закончится.
• Вывод игры. Поскольку SQL-запрос обычно возвращает результат только после завершения, для отображения игры в реальном времени используется команда RAISE NOTICE. Эта команда выводит информацию в стандартный вывод, позволяя отображать игровое поле и другую информацию в процессе игры.
• Пользовательский ввод. Обработка пользовательского ввода реализована через отдельную таблицу в базе данных. Эта таблица служит коммуникационной шиной между игрой и пользователем. Пользователь добавляет команды в эту таблицу, а игра их считывает.
• Решение проблемы изоляции данных. Чтобы игра могла видеть новые команды, добавленные в таблицу ввода во время выполнения запроса, используется расширение dblink. Оно позволяет создавать новое подключение к базе данных с новым снимком данных, что дает возможность считывать самые последние команды пользователя.
• Предотвращение кэширования. Чтобы PostgreSQL не кэшировал результаты запроса к таблице ввода, к запросу добавляется уникальный идентификатор итерации. Это заставляет базу данных выполнять запрос заново на каждой итерации игрового цикла.
Для управления состоянием игры и обработки игровых событий используются подзапросы и агрегатные функции.
• Подзапросы позволяют вычислить новое состояние игры после каждого хода, включая позицию фигуры, состояние поля, счет и т. д. К примеру, рекурсивный подзапрос используется для вычисления максимального количества линий, на которые может упасть текущая фигура.
• Агрегации применяются для подсчета очищенных линий, выбора фигуры с наименьшим рангом, обновления счета и уровня игры. Например,
🔗 Подробнее читайте в статье
🔗 Зеркало
Долгое время SQL использовали лишь для запросов и изменения записей в базах данных — для полноценного программирования в привычном смысле слова он не подходил. Однако добавление рекурсивных общих табличных выражений (CTE) сделало SQL полным по Тьюрингу. Рекурсивные CTE состоят из двух частей:
• Нерекурсивная часть (базовый случай) — создает начальные данные.
• Рекурсивная часть — может выполняться много раз, каждый раз используя результат предыдущего шага.
Благодаря CTE на SQL можно при желании реализовать любой алгоритм. Энтузиасты уже сделали:
• Визуализацию множества Мандельброта с помощью ASCII-графики.
• 3D-движок для рисования объемных фигур.
• GPT на 500 строках SQL-кода. Подробная статья о реализации этого проекта опубликована здесь.
• Трассировку лучей (это метод создания реалистичных изображений).
На прошлой неделе коллекция крутых SQL-проектов пополнилась еще одной интересной разработкой — версией «Тетриса».
Эта реализация демонстрирует несколько нестандартных SQL-техник, о которых стоит знать, даже если вы используете SQL только по прямому назначению:
• Игровой цикл. В основе игры – рекурсивное общее табличное выражение (CTE). Оно создает бесконечный цикл, который инициализирует состояние игры, обновляет его на основе ввода пользователя и отрисовывает игру. Цикл продолжается, пока игра не закончится.
• Вывод игры. Поскольку SQL-запрос обычно возвращает результат только после завершения, для отображения игры в реальном времени используется команда RAISE NOTICE. Эта команда выводит информацию в стандартный вывод, позволяя отображать игровое поле и другую информацию в процессе игры.
• Пользовательский ввод. Обработка пользовательского ввода реализована через отдельную таблицу в базе данных. Эта таблица служит коммуникационной шиной между игрой и пользователем. Пользователь добавляет команды в эту таблицу, а игра их считывает.
• Решение проблемы изоляции данных. Чтобы игра могла видеть новые команды, добавленные в таблицу ввода во время выполнения запроса, используется расширение dblink. Оно позволяет создавать новое подключение к базе данных с новым снимком данных, что дает возможность считывать самые последние команды пользователя.
• Предотвращение кэширования. Чтобы PostgreSQL не кэшировал результаты запроса к таблице ввода, к запросу добавляется уникальный идентификатор итерации. Это заставляет базу данных выполнять запрос заново на каждой итерации игрового цикла.
Для управления состоянием игры и обработки игровых событий используются подзапросы и агрегатные функции.
• Подзапросы позволяют вычислить новое состояние игры после каждого хода, включая позицию фигуры, состояние поля, счет и т. д. К примеру, рекурсивный подзапрос используется для вычисления максимального количества линий, на которые может упасть текущая фигура.
• Агрегации применяются для подсчета очищенных линий, выбора фигуры с наименьшим рангом, обновления счета и уровня игры. Например,
BOOL_OR()
применяется для определения, есть ли хотя бы одно столкновение между фигурой и занятыми клетками на поле.🔗 Подробнее читайте в статье
🔗 Зеркало
#дайджест перед выходными
🛟 Фильтры Ansible: превращаем сложное в простое — как легко и просто можно обрабатывать данные прямо в Ansible, используя его собственные мощные возможности
🛟 Azure DevOps с OpenShift — как интегрировать Azure DevOps с кластером OpenShift для создания и развертывания приложений на нем
🛟 От чего зависит, готова ли нода Kubernetes — что делать со статусом NotReady
🛟 pgbackweb — утилита для управления бэкапами PostgreSQL с графическим интерфейсом.
🛟 Inside PromQL: A closer look at the mechanics of a Prometheus query — как данные передаются от источника к конечному пункту назначения в API
🛟 Фильтры Ansible: превращаем сложное в простое — как легко и просто можно обрабатывать данные прямо в Ansible, используя его собственные мощные возможности
🛟 Azure DevOps с OpenShift — как интегрировать Azure DevOps с кластером OpenShift для создания и развертывания приложений на нем
🛟 От чего зависит, готова ли нода Kubernetes — что делать со статусом NotReady
🛟 pgbackweb — утилита для управления бэкапами PostgreSQL с графическим интерфейсом.
🛟 Inside PromQL: A closer look at the mechanics of a Prometheus query — как данные передаются от источника к конечному пункту назначения в API
Claudie
Платформа для управления multi-cloud и hybrid-cloud кластерами Kubernetes с поддержкой пулов нод различных облачных провайдеров и локальных центров обработки данных
Типичные варианты использования
👉 Экономия средств
👉 Локализация данных и соответствие требованиям (например, GDPR).
👉 Управляемый Kubernetes для провайдеров, которые не предлагают подобные услуги
👉 Cloud bursting
👉 Интерконнект сервисов
#софт
Платформа для управления multi-cloud и hybrid-cloud кластерами Kubernetes с поддержкой пулов нод различных облачных провайдеров и локальных центров обработки данных
Типичные варианты использования
👉 Экономия средств
👉 Локализация данных и соответствие требованиям (например, GDPR).
👉 Управляемый Kubernetes для провайдеров, которые не предлагают подобные услуги
👉 Cloud bursting
👉 Интерконнект сервисов
#софт
🧑🎓🧑🎓 Self-Hosting a Container Registry
Иногда вместо того, чтобы полагаться на провайдера, такого как AWS или GCP, вы можете захотеть разместить свои образы самостоятельно. Это позволяет сохранить инфраструктуру внутренней и уменьшить зависимость от внешних поставщиков.
Автономный реестр работает на ваших серверах, что дает вам больше контроля над настройками реестра и размещением образов контейнеров. В то же время это связано с затратами на обслуживание и защиту реестра.
Продолжение здесь
#туториал
Иногда вместо того, чтобы полагаться на провайдера, такого как AWS или GCP, вы можете захотеть разместить свои образы самостоятельно. Это позволяет сохранить инфраструктуру внутренней и уменьшить зависимость от внешних поставщиков.
Автономный реестр работает на ваших серверах, что дает вам больше контроля над настройками реестра и размещением образов контейнеров. В то же время это связано с затратами на обслуживание и защиту реестра.
Продолжение здесь
#туториал
Forwarded from Библиотека собеса по DevOps | вопросы с собеседований
Почему используется Kube-apiserver?
Kube-apiserver используется для настройки и проверки объектов API. Кроме того, он используется для того, чтобы пользователи могли взаимодействовать с кластером Kubernetes, где используется API сервера Kubernetes. Таким образом, это часть интерфейса плоскости управления, и именно этот интерфейс проверяет, является ли входящий запрос легитимным или нет.
Kube-apiserver проверяет и предоставляет данные для объектов API и включает модули, службы и контроллеры репликации. Сервер API отправляет команды REST-операций и предоставляет самый передовой общий статус кластера, через который взаимодействуют все остальные компоненты.
Kube-apiserver используется для настройки и проверки объектов API. Кроме того, он используется для того, чтобы пользователи могли взаимодействовать с кластером Kubernetes, где используется API сервера Kubernetes. Таким образом, это часть интерфейса плоскости управления, и именно этот интерфейс проверяет, является ли входящий запрос легитимным или нет.
Kube-apiserver проверяет и предоставляет данные для объектов API и включает модули, службы и контроллеры репликации. Сервер API отправляет команды REST-операций и предоставляет самый передовой общий статус кластера, через который взаимодействуют все остальные компоненты.
#вакансия #DevOps #K8s #удаленка
Вакансия: DevOps Junior/ Middle-
Локация: Россия;
Формат работы: удаленно;
Оплата: 120.000- 250.000 р. net
Привет! В инвестиционный фонд, занимающийся торговлей на фьючерсном рынке, требуется Junior/Middle DevOps инженер. Мы ищем специалиста с минимальным опытом, но большим желанием учиться и развиваться в крутой команде.
Вас ждет опытный тимлид, готовый делиться знаниями и прокачивать ваши навыки. Работа предполагает участие в исследовании и внедрении открытых систем, их адаптацию под задачи разработки и настройку для оптимального соответствия бизнес-процессам. Будет возможность автоматизировать CI/CD процессы и адаптировать внутренние системы, а также решать сложные задачи, такие как централизованная авторизация и построение высоконагруженных кластеров.
Чем предстоит заниматься:
• Исследование и внедрение открытых систем для поддержки разработки;
• Тонкая настройка инфраструктуры под задачи бизнеса;
• Внедрение и оптимизация CI/CD процессов;
• Адаптация решений под высокие нагрузки и требования доступности.
Будет здорово, если у вас есть:
• Базовые знания Kubernetes и Docker;
• Понимание принципов CI/CD и опыт работы с GitLab;
• Интерес к созданию Helm-чартов;
• Навыки написания скриптов на Bash, Python или Golang;
• Опыт работы с системами мониторинга (Grafana, Victoria Metrics) — будет плюсом;
• Желание разобраться в работе с HA-кластерами баз данных (Postgres, Clickhouse);
• Любое знакомство с протоколом OIDC будет преимуществом.
Наш стек:
• Мониторинг: Grafana, Victoria Metrics, EFK, Jaeger;
• Базы данных: Postgres, Clickhouse, Zookeeper;
• Хостинг: Baremetal Kubernetes, CentOS, Istio, GitLab;
• Безопасность: Vault.
Если вам интересно развиваться в крутой команде с множеством интересных задач, будем рады вашему отклику!
📌 Пишите сюда: @gal_keller
Вакансия: DevOps Junior/ Middle-
Локация: Россия;
Формат работы: удаленно;
Оплата: 120.000- 250.000 р. net
Привет! В инвестиционный фонд, занимающийся торговлей на фьючерсном рынке, требуется Junior/Middle DevOps инженер. Мы ищем специалиста с минимальным опытом, но большим желанием учиться и развиваться в крутой команде.
Вас ждет опытный тимлид, готовый делиться знаниями и прокачивать ваши навыки. Работа предполагает участие в исследовании и внедрении открытых систем, их адаптацию под задачи разработки и настройку для оптимального соответствия бизнес-процессам. Будет возможность автоматизировать CI/CD процессы и адаптировать внутренние системы, а также решать сложные задачи, такие как централизованная авторизация и построение высоконагруженных кластеров.
Чем предстоит заниматься:
• Исследование и внедрение открытых систем для поддержки разработки;
• Тонкая настройка инфраструктуры под задачи бизнеса;
• Внедрение и оптимизация CI/CD процессов;
• Адаптация решений под высокие нагрузки и требования доступности.
Будет здорово, если у вас есть:
• Базовые знания Kubernetes и Docker;
• Понимание принципов CI/CD и опыт работы с GitLab;
• Интерес к созданию Helm-чартов;
• Навыки написания скриптов на Bash, Python или Golang;
• Опыт работы с системами мониторинга (Grafana, Victoria Metrics) — будет плюсом;
• Желание разобраться в работе с HA-кластерами баз данных (Postgres, Clickhouse);
• Любое знакомство с протоколом OIDC будет преимуществом.
Наш стек:
• Мониторинг: Grafana, Victoria Metrics, EFK, Jaeger;
• Базы данных: Postgres, Clickhouse, Zookeeper;
• Хостинг: Baremetal Kubernetes, CentOS, Istio, GitLab;
• Безопасность: Vault.
Если вам интересно развиваться в крутой команде с множеством интересных задач, будем рады вашему отклику!
📌 Пишите сюда: @gal_keller
go-pretty
Утилита для улучшения консольного вывода таблиц, списков, прогресс-баров, текста и т. д. с большими возможностями настройки.
Запустите go get github.com/jedib0t/go-pretty/v6, чтобы добавить зависимости к проекту, и импортируйте пакеты:
github.com/jedib0t/go-pretty/v6/list
github.com/jedib0t/go-pretty/v6/progress
github.com/jedib0t/go-pretty/v6/table
github.com/jedib0t/go-pretty/v6/text
#софт
Утилита для улучшения консольного вывода таблиц, списков, прогресс-баров, текста и т. д. с большими возможностями настройки.
Запустите go get github.com/jedib0t/go-pretty/v6, чтобы добавить зависимости к проекту, и импортируйте пакеты:
github.com/jedib0t/go-pretty/v6/list
github.com/jedib0t/go-pretty/v6/progress
github.com/jedib0t/go-pretty/v6/table
github.com/jedib0t/go-pretty/v6/text
#софт
Kamal
Open Source-инструмент для развёртывания веб-приложений с помощью Docker. В Kamal 2.0 разработчики сделали так, чтобы всё одинаково просто работало и при деплое на 50 серверов, и при деплое 5 приложений на одном сервере.
Главное в обновлении:
👉 переход с использования прокси Traefik на собственный kamal-proxy;
👉 Kamal 2.0 будет запускать все контейнеры в кастомной сети Docker;
👉 новый способ передачи секретов в контейнеры.
#софт
Open Source-инструмент для развёртывания веб-приложений с помощью Docker. В Kamal 2.0 разработчики сделали так, чтобы всё одинаково просто работало и при деплое на 50 серверов, и при деплое 5 приложений на одном сервере.
Главное в обновлении:
👉 переход с использования прокси Traefik на собственный kamal-proxy;
👉 Kamal 2.0 будет запускать все контейнеры в кастомной сети Docker;
👉 новый способ передачи секретов в контейнеры.
#софт
Очередной #дайджест для DevOps-a
🛟 Тестирование Hetzner's Storage Classes для Database Workloads в Kubernetes — Hetzner Terrraform Kubernetes упрощает процесс настройки базового кластера за считанные минуты, но достаточно ли этого для обработки нагрузок на проде?
🛟 Всестороннее понимание Kubelet — материал посвящен анализу исходного кода функций kubelet, ключевых компонентов и процесса его загрузки
🛟 Безопасность Multi-Cluster ArgoCD — начиная с версии 1.24, стандартом является создание токена, срок действия которого истек, но это означает, что у вас должна быть стратегия ротации, и если вы потеряете этот токен, нет способа его аннулировать
🛟 Well-Known Labels, Annotations and Taints — лейбл, который позволяет закрывать часть сервисов за разными CNI/kube-proxy/loxilb если есть такая необходимость
🛟 hostctl — инструмент для управления содержимым /etc/hosts
🛟 Тестирование Hetzner's Storage Classes для Database Workloads в Kubernetes — Hetzner Terrraform Kubernetes упрощает процесс настройки базового кластера за считанные минуты, но достаточно ли этого для обработки нагрузок на проде?
🛟 Всестороннее понимание Kubelet — материал посвящен анализу исходного кода функций kubelet, ключевых компонентов и процесса его загрузки
🛟 Безопасность Multi-Cluster ArgoCD — начиная с версии 1.24, стандартом является создание токена, срок действия которого истек, но это означает, что у вас должна быть стратегия ротации, и если вы потеряете этот токен, нет способа его аннулировать
🛟 Well-Known Labels, Annotations and Taints — лейбл, который позволяет закрывать часть сервисов за разными CNI/kube-proxy/loxilb если есть такая необходимость
🛟 hostctl — инструмент для управления содержимым /etc/hosts
Forwarded from Библиотека собеса по DevOps | вопросы с собеседований
Можете ли вы назвать мне некоторые команды Kubectl?
kubectl annotate
kubectl config
kubectl autoscale
kubectl config current-context
kubectl apply
kubectl config set.
kubectl cluster-info
kubectl attach