#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4👍3
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3👏2
GitLab CI Components —переиспользуемые, параметризуемые блоки конфигурации CI/CD, которые позволяют применять принцип DRY (Don't Repeat Yourself) в пайплайнах GitLab.
📎 Компоненты были представлены в GitLab 16.0 как экспериментальная функция, а в версии 17.0 стали общедоступными. Механика похожа на модули в Terraform или пакеты в языках программирования.
✅ Зачем это нужно?
— Избежать дублирования кода: Устранить копирование одинаковых jobs и steps в разные
— Стандартизировать процессы: Создать единые, проверенные шаблоны для часто выполняемых задач (сборка, тестирование, деплой).
— Упростить поддержку: Обновить логику в одном месте (компоненте), и изменения применятся во всех проектах, которые его используют.
— Создавать библиотеки шагов: Делиться готовыми решениями внутри команды или сообщества.
✅ Ключевые принципы:
🔵 Компонент — это файл
🔵 Include — Подключение компонента в
🔵 Параметры — Компоненты принимают входные параметры (inputs), что делает их гибкими и адаптируемыми.
✅ Практический пример:
Простой компонент для линтера (
Использование компонента в проекте:
GitLab CI Components — это эволюция подхода к CI/CD как к коду. Они позволяют заменить рутинное копирование десятков строк конфигурации в каждом проекте на подключение готового компонента. В результате CI/CD-конфигурация превращается из монолитного скрипта в набор декларативных, версионируемых и легко тестируемых модулей.
➡️ Подробнее в документации Gitlab
#заметкиИнженера
— Избежать дублирования кода: Устранить копирование одинаковых jobs и steps в разные
.gitlab-ci.yml файлы.— Стандартизировать процессы: Создать единые, проверенные шаблоны для часто выполняемых задач (сборка, тестирование, деплой).
— Упростить поддержку: Обновить логику в одном месте (компоненте), и изменения применятся во всех проектах, которые его используют.
— Создавать библиотеки шагов: Делиться готовыми решениями внутри команды или сообщества.
.yml с определением одной или нескольких джоб, который хранится в отдельном репозитории GitLab..gitlab-ci.yml с помощью директивы include: component.Простой компонент для линтера (
.gitlab/ci/components/linter.yml в отдельном репозитории)
# Определение компонента
spec:
inputs:
stage:
default: test
image:
default: "node:20-alpine"
"lint-$[[ inputs.linter ]]": # Динамическое имя джобы
stage: $[[ inputs.stage ]]
image: $[[ inputs.image ]]
noscript:
- run-lint --linter $[[ inputs.linter ]]
Использование компонента в проекте:
# .gitlab-ci.yml вашего приложения
include:
# Указываем полный путь к компоненту
- component: gitlab.example.com/org/ci-catalog/linter@main
inputs:
linter: "eslint"
GitLab CI Components — это эволюция подхода к CI/CD как к коду. Они позволяют заменить рутинное копирование десятков строк конфигурации в каждом проекте на подключение готового компонента. В результате CI/CD-конфигурация превращается из монолитного скрипта в набор декларативных, версионируемых и легко тестируемых модулей.
#заметкиИнженера
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥3
Он мониторит репозитории, находит устаревшие пакеты, библиотеки или образы контейнеров и автоматически создает Pull/Merge Requests с обновлениями.
— Автоматическое сканирование репозитория на наличие зависимостей (npm, Docker, Maven, Helm, Terraform, Go и более 20 других менеджеров пакетов).
— Проверка доступных обновлений в реестрах пакетов (npmjs, Docker Hub, Maven Central и др.).
— Создание отдельного PR для каждого обновления с информацией о версиях, changelog и проверками совместимости.
— Группировка нескольких обновлений в одном PR (например, все патчи для библиотеки).
— Автоматическое разрешение конфликтов и пересоздание PR при появлении новых версий.
— Интеграция с GitHub, GitLab, Bitbucket и Azure DevOps.
— Автономный бот: Работает как GitHub App, GitLab App или в self-hosted режиме.
— Политики обновлений: Можно настроить автоматический мерж для minor/patch версий, require статусы проверок, расписание (например, только по будням).
— Безопасность: Встроенная проверка уязвимостей (CVE) через интеграцию с Snyk, OSV.
— Широкий охват: Поддерживает не только языки программирования, но и инфраструктурные инструменты (Terraform, Ansible, Helm, Dockerfile).
Renovate избавляет разработчиков от рутины ручного отслеживания версий зависимостей, обеспечивая своевременные и безопасные обновления.
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2
Командная оболочка (shell) — это программа-интерпретатор, которая принимает команды от пользователя (введённые в текстовом терминале) и передаёт их операционной системе на выполнение. Это основной способ взаимодействия с Linux для администрирования, автоматизации и разработки.
Стандартный и наиболее распространённый шелл, установленный по умолчанию почти во всех дистрибутивах.
Особенности: Полная обратная совместимость с классическим Bourne shell (sh), мощное скриптование, автодополнение через Tab, история команд.
Продвинутая оболочка, набравшая огромную популярность благодаря проекту Oh My Zsh.
Особенности: Улучшенное автодополнение (в т.ч. путей и опций), использование разных тем, встроенная коррекция опечаток, модульная архитектура, расширенная подстановка файлов (globbing) , лучшая поддержка Unicode.
Шелл, ориентированный на интерактивность и удобство использования прямо «из коробки».
Особенности: Автодополнение на основе истории и мануалов, подсветка синтаксиса прямо в командной строке, удобная конфигурация (
fish_config), интуитивно понятный скриптовый язык. Из минусов — неполная совместимость с Bash-синтаксисом.
# Показать текущую активную оболочку
echo $SHELL
Изменить шелл можно с помощью команды
chsh (change shell).
# Сменить оболочку текущего пользователя на zsh
sudo chsh -s /bin/zsh
# Выйти и зайти в систему заново, чтобы изменения вступили в силу
exit
Выбор оболочки — это баланс между мощью и совместимостью (Bash), кастомизацией и сообществом (Zsh) или удобством и простотой (Fish). Для большинства системных задач и скриптов Bash остаётся де-факто стандартом, а для персональной рабочей станции многие выбирают Zsh или Fish за улучшенный пользовательский опыт.
#линуксятина
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3👏2
Практичное введение в Linux через командную строку: от базовой работы в оболочке до автоматизации на shell-скриптах.
Фундаментальная основа, которая надолго остаётся применимой в работе с правами, bash и текстовыми утилитами.
— основы работы в shell: команды, навигация, файлы/каталоги, права, процессы, перенаправления;
— окружение и настройка: переменные, профили;
— ключевые утилиты для повседневных задач: поиск, архивация, работа с текстом, регулярные выражения, обработка потоков;
— сеть и базовые системные действия на уровне пользователя;
— введение в написание shell-скриптов: структура, условия/циклы, параметры, функции, обработка строк и ошибок;
— подход «учусь, делая»: много практических примеров и команд, которые реально встречаются в работе.
Автор:
Уильям Шоттс
Издательство:
No Starch Press, 2019г.
#книги
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍5❤3👏1
С 1 января для Организаторов Распространения Информации (ОРИ - мессенджеры, соцсети, почта и похожие сервисы) изменились требования по хранению данных.
#статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥5👏3
Тренд на двойное вымогательство усиливается: шифрование дополняют угрозой публикации данных.
19 и 21 января зафиксировали волну вредоносных писем по российским организациям из разных отраслей: через вложения и ссылки атакующие пытаются получить первичный доступ и скомпрометировать учётные записи.
Речь о компаниях, которые занимаются исследованиями рынка и потребителей: им ограничивают работу с данными россиян и устанавливают дополнительные требования к тому, как такие исследования можно проводить в России.
Прогнозы аналитиков предполагают, что мировые расходы на IT в 2026 году превысят $1,4 трлн с основными инвестициями в генеративный ИИ, облачные сервисы и безопасность.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥2
— Симулятор в браузере, где вы решаете инженерную задачу: собрать работающую архитектуру, справляться с ростом нагрузки и не выходить за рамки бюджета.
— Интерактивное TUI-приложение с 60+ упражнениями по обработке текста в Linux: от простого grep до хитрых комбинаций с awk и sed.
— Интерактивная среда для экспериментов с Kubernetes API прямо в браузере. Позволяет изучать и тестировать запросы к API-серверу без необходимости разворачивать реальный кластер.
— Платформа с задачами по программированию на множестве языков.
— Визуальный симулятор Git, который помогает понять внутреннее устройство системы контроля версий через интерактивные упражнения с ветками, коммитами и слияниями.
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥5👏3
Наглядная схема из чего состоит Kubernetes и как компоненты общаются между собой.
— kubectl; CI/CD; monitoring.
Отправляют команды и получают данные из кластера (HTTPS).
— API Server; scheduler; controller-manager; cloud-controller; etcd.
Управляет кластером: принимает запросы, планирует поды, следит за состоянием, хранит его в etcd (mTLS/gRPC).
— CoreDNS; CNI; Metrics Server.
DNS, сеть и метрики.
— kubelet; kube-proxy; container runtime.
Запускают и поддерживают работоспособность контейнеров приложений, а также обеспечивают сетевое взаимодействие между подами и сервисами внутри кластера (gRPC)
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍3👏2❤1
Как разбить большую задачу на маленькие
Это способ превратить большую и не до конца понятную задачу в последовательность простых, ясных и проверяемых шагов.
Цель в снижении неопределённости и когнитивной нагрузки.
* если один из пунктов отсутствует, задача остаётся слишком размыта.
🔺 Зафиксировать базовые метрики производительности
Результат: документ/дашборд с метриками p95/p99, RPS, error rate, загрузкой ресурсов.
Ответственный: backend / SRE.
Срок: 1 день.
🔻Определить основные точки деградации
Результат: список узких мест с подтверждением (трейсы, логи, медленные запросы).
Ответственный: backend + DevOps.
Срок: 1 день.
🔺Сформировать план изменений
Результат: перечень конкретных доработок с ожидаемым эффектом и приоритетами.
Ответственный: backend lead / архитектор.
Срок: 0,5 дня.
🔻Реализовать изменения
Результат: Код и конфигурация обновлены и зафиксированы в Git.
Ответственный: backend.
Срок: 1–2 дня (в зависимости от объёма).
🔺Провести нагрузочное тестирование
Результат: отчёт с результатами тестов и сравнением метрик «до / после».
Ответственный: QA / SRE.
Срок: 1 день.
🔻Подтвердить эффект и зафиксировать результат
Результат: обновлённые метрики, вывод о достижении цели или список дальнейших действий.
Ответственный: владелец сервиса.
Срок: 0,5 дня.
#MentalDebug
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4👏2❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥6👏4
Новая стандартная спецификация для управления внешним доступом к сервисам в Kubernetes.
— Разделение ответственности: Инфраструктурная команда управляет шлюзами (Gateways), а разработчики — правилами маршрутизации (HTTPRoute).
— Единый стандарт: Замена множества аннотаций Ingress-контроллеров на унифицированные CRD.
— Расширенные функции: Поддержка TLS, нагрузочного балансирования, канареечных развертываний, трассировки и многопротокольной маршрутизации (HTTP, gRPC, TCP/UDP) из коробки.
— Переносимость: Единая конфигурация работает с разными реализациями (Istio, Cilium, NGINX и др.).
— GatewayClass: Определяет тип шлюза (как IngressClass). Создается администратором кластера.
— Gateway: Реализация шлюза в конкретном namespace. Определяет виртуальный IP, порты и привязку к GatewayClass.
— HTTPRoute (и другие *Route): Правила маршрутизации, привязанные к Gateway. Создаются разработчиками.
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: public-lb
spec:
controllerName: "example.ru/gateway-controller"
denoscription: "Шлюз для внешнего трафика"
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: web
namespace: infra
spec:
gatewayClassName: public-lb
listeners:
- name: http
protocol: HTTP
port: 80
allowedRoutes:
namespaces:
from: All
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: frontend-route
namespace: app
spec:
parentRefs:
- name: web
namespace: infra
hostnames: ["app.example.ru"]
rules:
- matches:
- path:
type: PathPrefix
value: /api
backendRefs:
- name: backend-service
port: 8080
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: frontend-service
port: 80
1. Контроллер Gateway API разворачивает шлюз (load balancer) с публичным IP
2. Трафик на
app.example.ru поступает на шлюз3. Путь
/api маршрутизируется к backend-service, остальной трафик — к frontend-service4. Политики namespaces предотвращают конфликты между командами
Gateway API — это не просто "Ingress 2.0", а фундаментально новая модель, которая превращает маршрутизацию трафика из админской задачи в декларативный и самообслуживаемый процесс.
#заметкиИнженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3👏2❤1
Мощный инструмент для побайтового копирования и преобразования данных на уровне блоков. В отличие от обычных файловых копировщиков, dd работает напрямую с устройствами.
— Клонирование дисков и разделов
— Создание загрузочных флешек
— Резервное копирование MBR/GPT
— Тестирование скорости чтения/записи
— Безопасное удаление данных
— Заполнение диска тестовыми данными
dd if=<input> of=<output> bs=<block_size> count=<blocks>
—
if (input file) — источник данных—
of (output file) — приемник данных—
bs (block size) — размер блока (например, 1M, 4K)—
count — количество блоков для обработки— Создание загрузочной флешки
# Запись образа ISO на USB-накопитель
sudo dd if=ubuntu-24.04.3-live-server-amd64.iso of=/dev/sdb bs=4M status=progress oflag=sync
— Заполнение всего диска нулями
# Заполнение всего диска /dev/sdb нулями
sudo dd if=/dev/zero of=/dev/sdb bs=1M status=progress
— Клонирование диска на диск
# Клонирование всего диска (размеры должны совпадать!)
sudo dd if=/dev/sda of=/dev/sdb bs=64K status=progress conv=noerror,sync
— Заполнение диска случайными данными
# Заполнение случайными данными
sudo dd if=/dev/urandom of=/dev/sdb bs=1M status=progress
— Создание файла со случайными данными размером 500 Mb
# Создание файла размером 500 Mb
dd if=/dev/urandom of=random.data bs=1M count=500
dd — это швейцарский нож для работы с дисками.
При правильном использовании он решает множество задач: от быстрого заполнения диска тестовыми данными до полного клонирования систем. Главное — всегда дважды проверять параметры if и of, чтобы не уничтожить важные данные.
#линуксятина
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4🔥2
Kubernetes-native управление трафиком на основе Envoy Proxy и стандарта Gateway API.
— Предоставляет Envoy Proxy как managed-сервис внутри кластера через стандартный Gateway API
— Поддержка протоколов: HTTP, HTTPS, TCP, UDP, gRPC, WebSocket
— Встроенные возможности: load balancing, retries, rate limiting, circuit breaking
— TLS-терминация с автоматическим управлением сертификатами (через cert-manager)
— Межкластерная маршрутизация (Multi-cluster)
— Стандартизированный API: Полная совместимость с Kubernetes Gateway API
— Упрощённая архитектура: Контроллер + набор Envoy прокси, без сложных компонентов
— Расширения через политики: Дополнительные функции (CORS, JWT, rewrite) через custom Policy ресурсы
— Наблюдаемость из коробки: Метрики Prometheus, трейсы OpenTelemetry, структурированные логи
— Мульти-тенантность: Чёткое разделение Infrastructure (Gateway) и Application (HTTPRoute) ролей
Envoy Gateway — это золотая середина между простотой NGINX Ingress и мощью полного service mesh.
Он идеально подходит для команд, которые хотят получить расширенные возможности маршрутизации Envoy, но без операционной сложности Istio или самостоятельного управления прокси.
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4👏2
корова с сообщением прямо в терминале
Классическая консольная утилита, которая выводит в терминал ASCII-арт коровы (или другого животного), говорящей ваше сообщение.
Инструмент для легкого развлечения, автоуведомлений или просто чтобы поднять настроение
Установка:
# Ubuntu/Debian
sudo apt install cowsay
# Fedora
sudo dnf install cowsay
# Arch/Manjaro
sudo pacman -S cowsay
# macOS
brew install cowsay
Базовое использование:
cowsay "Привет, мир"
_____________________
< Привет мир >
---------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
P.S. Весна уже близко
#rootoffun
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7😁5👍2❤1
У части перевозчиков возникли ограничения на оформление и возврат билетов, онлайн-операции и регистрацию пассажиров. Инцидент затронул сразу несколько каналов обслуживания и привёл к задержкам в обработке пассажирских операций.
Выявлено большое число несоответствий требованиям ИБ, включая формальный подход к защите объектов КИИ.
Ссылки маскируются под доступ к документам в Telegram и ведут на поддельное восстановление доступа, через которое перехватываются учётные данные и обеспечивается установка вредоносного ПО.
Согласно докладу WEF, развитие искусственного интеллекта повышает скорость и сложность кибератак, а зависимости в глобальных цепочках поставок расширяют зону риска. В результате ландшафт угроз становится более динамичным и требует новых подходов к защите.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤1👏1
Схема от Bytebytego наглядно показывает разницу в доставке контента при работе напрямую с сервером и при использовании CDN.
— web; mobile; desktop.
Открывают сайт, загружают видео, картинки, стили и скрипты. Географически могут быть где угодно — от Калининграда до Сиднея.
— первичный сервер с оригинальным контентом.
Хранит оригинальные файлы (видео, изображения, JS/CSS). Без CDN каждый пользователь тянет данные напрямую отсюда — даже если находится за тысячи километров.
— удалённый маршрут запроса, рост задержек, повышенная нагрузка на основной сервер.
Чем дальше пользователь находится от сервера, тем выше задержка отклика. При увеличении нагрузки основной сервер становится узким местом и потенциальной точкой отказа.
— узлы, расположенные ближе к пользователям, хранящие копии контента для быстрой выдачи.
CDN хранит копии статики ближе к пользователям. Запрос идёт не через полмира, а к ближайшему узлу.
— минимальная задержка, стабильная скорость, масштабируемость.
Пользователь получает контент из ближайшего CDN-узла. Origin нагружается только при первом запросе или при обновлении кэша.
— ускорение загрузки, снижение трафика на основной сервер, защита от пиков.
Меньше сетевых задержек для пользователей и ниже риски для серверов: часть запросов вообще не доходит до серверной части приложения.
— сайты, SaaS, медиа, маркетплейсы, API со статикой.
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3👏3
— Официальные интерактивные материалы от проекта Kubernetes.
— Пошагово вводят в базовые концепции и терминологию, помогают понять устройство кластера и назначение ключевых объектов.
— Подходит для старта и выравнивания базы перед практикой.
— Браузерная среда для экспериментов с Kubernetes без локальной установки.
— Позволяет получить временный доступ к кластеру и выполнять команды в терминале, тестируя манифесты и базовые сценарии.
— Удобно для быстрых проверок и самостоятельной практики.
— Платформа с практическими сценариями и встроенным терминалом.
— Задания построены вокруг типовых задач: поды, деплойменты, сервисы, сеть, диагностика и устранение проблем.
— Подходит для закрепления навыков на прикладных кейсах.
— Обучающая платформа с лабораторными работами и тренажёрами. — Даёт структурированную практику по Kubernetes с постепенным усложнением тем и акцентом на реальные навыки администрирования и эксплуатации.
— Подходит для системного обучения и подготовки к рабочим задачам.
#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3👏2
Для ИТ-директора и инженера соглашение об SLA — это не красивая цифра и не маркетинговая уловка, а граница риска.
И часто ожидания от «трёх девяток» не совпадают с реальностью.
— Архитектура и отказоустойчивость
Без этого процент остаётся на бумаге.
— Мониторинг и реакция
Определяет скорость обнаружения проблемы и восстановления сервиса.
— Процессы и регламенты
Нужны понятные роли и шаги, чтобы инцидент не превращался в хаос.
— Границы ответственности
SLA может выполняться, а пользователи всё равно видят недоступность.
— Коммуникация в момент инцидента
Статус и сроки восстановления должны быть ясными, иначе доверие падает.
#статья #изПрактики
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6😱4🔥2👏2