Обновить
0
0
Сергей Чудаков@CSRedRat

DevOps

Отправить сообщение

Обзор графических интерфейсов для Kubernetes

Время на прочтение11 мин
Охват и читатели102K


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

В прошлом году мы публиковали перевод небольшого обзора web UI для Kubernetes, приуроченного к анонсу веб-интерфейса Kubernetes Web View. Автор той статьи и самой утилиты — Henning Jacobs из компании Zalando — как раз позиционировал новинку в качестве «kubectl для веба». Он хотел создать инструмент с удобными возможностями для взаимодействия в формате техподдержки (например, быстро показать проблему веб-ссылкой) и для реакции на инциденты, поиска проблем во многих кластерах одновременно. Его детище развивается и в настоящее время (в основном, силами самого автора).

Обслуживая множество Kubernetes-кластеров разных масштабов, мы тоже заинтересованы в возможности предоставлять клиентам инструмент визуальной работы. При выборе подходящего интерфейса ключевыми для нас были следующие возможности:
Читать дальше →

Как защититься от неожиданных счетов за AWS

Время на прочтение5 мин
Охват и читатели28K
Представьте, что у вас в облаке маленький проектик. Уже полгода вы платите за него по 20 центов в месяц. В принципе, ничего особенного. Но однажды утром вдруг приходит крупный счёт на 2700 долларов.


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

Агрегаты, мои агрегаты, как приятно о вас думать

Время на прочтение7 мин
Охват и читатели39K

В Domain-Driven Design выделяют стратегические и тактические паттерны. Например, первые — это Единый язык, а вторые — Агрегаты. Я много раз слышал от коллег, что со стратегией всё понятно, но когда дело доходит до перехода на тактический уровень (до кода) — всё в тумане. Это приводит к некорректным техническим решениям, которые не могут компенсировать даже правильный настрой и близость к бизнесу. Для успеха проекта крайне важно освоить тактические паттерны, особенно Агрегаты. Всё потому, что Агрегаты инкапсулируют в себя почти всю бизнес-логику, это основа вашего приложения. В этой статье я и расскажу про Агрегаты, как они могут помочь и почему важно их освоить. Но...

...сперва антипаттерны

Кунг-фу стиля Linux: sudo и поворот двух ключей

Время на прочтение5 мин
Охват и читатели16K
Если вы работали в современных Linux-системах, включая большинство ОС для Raspberry Pi, то вы, возможно, знакомы с командой sudo. Обычно она позволяет авторизованному пользователю повышать свои полномочия до уровня суперпользователя и решать в таком режиме различные задачи, требующие соответствующих привилегий.

Правда, тут есть одна проблема. Если у вас есть sudo-доступ к системе, то это значит, что вы сможете сделать с ней всё что угодно — по крайней мере, всё, что вам позволено в файле sudoers. А как насчёт операций, ошибка при выполнении которых способна серьёзно нарушить работу системы? Все видели фильмы, в которых для запуска ядерной ракеты нужен одновременный поворот двух ключей, за которым следует нажатие на кнопку «Пуск». Есть ли нечто подобное в Linux?



В Linux есть похожий механизм, но это, на самом деле, не совсем «поворот двух ключей». Речь идёт о проекте sudo_pair, работой над которым занимается компания Square. Это — плагин для sudo, который даёт нам похожие возможности. А именно, речь идёт о том, что один пользователь запрашивает выполнение некоего действия, требующего повышенных привилегий, а другой пользователь авторизует запрос. Причём этот второй пользователь может не только одобрить выполнение операции, но и понаблюдать за тем, что происходит, и даже отменить операцию в том случае, если увидит, что происходит что-то неправильное.
Читать дальше →

Кунг-фу стиля Linux: синхронизация настроек

Время на прочтение9 мин
Охват и читатели12K
Одним из лучших качеств Linux и похожих на неё операционных систем является возможность их глубокой настройки. Если вам что-то не нравится — высоки шансы того, что вы легко сможете это изменить, подправив какой-нибудь файл. Например, рассмотрим bash — командную оболочку, по любым меркам, весьма популярную. Если вам нужно поменять приглашение командной строки — это вполне осуществимо. Если нужно, чтобы клавиша Tab позволяла бы автоматически дополнять имена файлов без учёта регистра — это тоже не проблема. Обычно подобные настройки выполняются в одном из так называемых «файлов профиля», вроде .bashrc, находящихся в домашней директории пользователя.



Если некто работает за единственным компьютером, то никаких проблем с настройками у него не возникает. Он вносит в файл .bashrc, и в другие подобные файлы, необходимые изменения, настраивает систему под себя, и работает в той среде, которая ведёт себя так, как ему того хочется. Проблемы появляются тогда, когда кому-то приходится пользоваться несколькими компьютерами. Возможно, речь идёт о веб-сервере, о настольном компьютере, о машине, играющей роль файрвола, и о нескольких десятках Raspberry Pi. Как настроить все эти системы одинаково? И как, после того, как они все одинаково настроены, поддерживать настройки в актуальном состоянии?
Читать дальше →

Обзор инструментов для chaos engineering в Kubernetes. Часть 1: kube-monkey, chaoskube, Chaos Mesh

Время на прочтение11 мин
Охват и читатели9.8K


Хаос-инжиниринг для Kubernetes становится всё популярнее, и это закономерно: ведь такая инфраструктура создавалась быть готовой к тому, чтобы в любой момент что-нибудь «отстрелило». А значит — это замечательное свойство надо проверять в реальных проектах.

Благо, уже сегодня можно найти не одно Open Source-решение, помогающее в подобных экспериментах. Представляем вашему вниманию их обзор. Он получился весьма объёмным, поэтому был разбит на две части: в этой мы рассмотрим три популярных проекта.
Читать дальше →

Каверзные вопросы по Python

Время на прочтение4 мин
Охват и читатели41K

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


Читать дальше →

Защита Linux-сервера. Что сделать в первую очередь

Время на прочтение7 мин
Охват и читатели110K

Habib M’henni / Wikimedia Commons, CC BY-SA

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

О работе ПК ч.3: От включения до полной загрузки Windows 10

Время на прочтение20 мин
Охват и читатели130K
Мы продолжаем разбираться как работает ПК на примере клавиатуры и Windows 10. В этой статье поговорим о том как происходит единение софта и железа.

Старт системы


Полностью компьютер выключен когда он отключен от питания и конденсаторы на материнской плате разрядились. До эры смартфонов мобильные телефоны часто глючили и если перезагрузка не лечила проблему, то приходилось доставать батарею и ждать 10 секунд, потому что сбрасывалось программное состояние ОС, в то время как чипы на материнской плате и контроллеры устройств оставались активными сохраняя состояние, драйвера ОС к ним просто реконнектились. 10 секунд — время на разрядку конденсаторов, состояние чипов сбрасывается только при полном отключении.
Если же ПК подключен к розетке или батарее, то он находится в режиме Stand-By, это значит что по шине питания подаётся маленькое напряжения (5В) от которого запитываются некоторые чипы на материнке. Как минимум это системный контроллер, по сути это мини-компьютер запускающий большой компьютер. Получив уведомление о нажатии кнопки Power он просит блок питания/батарею подать больше напряжения и после инициализирует весь чип-сет, в том числе и процессор. Инициализация включает в себя перекачку кода и данных прошивки материнки (BIOS/UEFI) в оперативную память и настройку CPU на её исполнение.
Думать что кнопка Power это рубильник который подаёт электричество на CPU и тот начинает исполнять с заранее известного адреса прошивку BIOS неправильно. Возможно старые компьютеры так и работали. Кнопка включения находится на своей плате, вместе со светодиодами состояний и к материнке она подключается через специальный разъём. На картинке ниже видны контакты для кнопки Power, Reset, а также светодиодов с состоянием Power и чтения жёсткого диска. Нажатие кнопки включения переводится в сигнал на контакты материнки, откуда он достигает системный контроллер.

Читать дальше →

GitLab CI для непрерывной интеграции и доставки в production. Часть 2: преодолевая трудности

Время на прочтение5 мин
Охват и читатели45K

Эта статья продолжает первую часть, содержащую подробное описание нашего пайплайна:

image

… и рассказывает о проблемах, с которыми мы столкнулись для его реализации, и их решении.

Итак, я остановился на том, что созданный .gitlab-ci.yml не позволяет реализовать пайплайн в полной мере, поскольку GitLab CI не предоставляет директив для разделения задач по пользователям и для описания зависимостей выполнения задач от статуса выполнения других задач, а также не позволяет разрешить модификацию .gitlab-ci.yml только для отдельных пользователей.
Читать дальше →

Как я собирал статистику по брутфорсу наших серверов и лечил их

Время на прочтение5 мин
Охват и читатели20K

Мы разместили 5 ханипотов, в дальнейшем просто «серверов», чтобы собрать статистику по брутфорсу RDP в наших сетях.

Один сервер находился в Лондоне, другой в Цюрихе, один в защищенной сети в M9, два других в дата-центре Rucloud в защищенной и незащищенной сетях. IP адреса каждого из серверов находятся в разных подсетях, каждый IP адрес отличается первым октетом. Если попытаться измерить «расстояние» скана между IP адресами по формуле:

((Первый октет подсети №1) – (Первый октет подсети №2)) * (2^24),

Если сканировать 0.0.0.0/0, атакующему придется пролистать как минимум 771751936 IP адресов, чтобы найти два самых «ближайших» друг к другу сервера. Вдобавок, ни один из серверов не отвечал на ICMP и каждый IP адрес не использовался никем в течение 3 месяцев, все 5 серверов открыли порты в одно и то же время. Все серверы были подключены к AD.
Читать дальше →

Используем Chrome DevTools профессионально

Время на прочтение5 мин
Охват и читатели84K
И снова здравствуйте. В преддверии старта курса «JavaScript Developer. Professional» перевели

11 советов для тех, кто использует Chrome в качестве среды разработки.





Итак, по тем или иным причинам вы решили при разработке ориентироваться на Chrome. Вы открываете инструменты разработчика и приступаете к отладке кода.



Иногда вы открываете консоль, чтобы посмотреть вывод своей программы, или вкладку Elements, чтобы проверить CSS-стили элементов DOM.



А действительно ли вы разбираетесь в Chrome DevTools? На самом деле у инструментов разработчика множество мощных функций, которые облегчают жизнь, но о них мало кто знает.
Я расскажу о самых полезных из них.
Читать дальше →

WSL эксперименты. Часть 1

Время на прочтение7 мин
Охват и читатели16K
Привет, хабр! В октябре OTUS запускает новый поток курса «Безопасность Linux». В преддверии старта курса делимся с вами статьёй, которую написал один из наших преподавателей — Александр Колесников.





В 2016 году компания Microsoft представила IT сообществу новую технологию WSL (Windows Subsystem for Linux), в перспективе позволявшую объединить до этого непримиримых конкурентов, которые сражались за популярность как среди рядовых, так и продвинутых пользователей ОС: Windows и Linux. Данная технология предоставляла возможность использовать инструменты ОС Linux в окружении Windows без необходимости запуска Linux, к примеру, с помощью мультизагрузки (Multi-boot). На Habr вы можете обнаружить большое количество статей, описывающих преимущества использования WSL. Однако, к сожалению, на момент создания статьи на данном ресурсе не было обнаружено исследований безопасности такого симбиоза операционных систем. Настоящий пост станет попыткой это исправить. В статье будет рассказано об особенностях архитектур WSL 1 и 2, разобрано несколько примеров атак на системы, использующие данные технологии. Статья разбита на 2 части. В первой будут предоставлены основные теоретические методы атак со стороны Linux и Windows. Вторая статья будет включать в себя настройку тестовой среды и воспроизведение атак.
Читать дальше →

Улучшение Python-кода: 12 советов для начинающих

Время на прочтение12 мин
Охват и читатели45K
В мои обязанности входит наём Python-разработчиков. Если у заинтересовавшего меня специалиста есть GitHub-аккаунт — я туда загляну. Все так делают. Может быть, вы этого и не знаете, но ваш домашний проект, не набравший ни одной GitHub-звезды, может помочь вам в получении работы.

То же самое относится и к тестовым задачам, выдаваемым кандидатам на должность программиста. Как известно, мы, когда впервые видим человека, формируем первое впечатление о нём за 30 секунд. Это влияет на то, как мы будем, в дальнейшем, оценивать этого человека. Мне кажется несправедливым то, что люди, обладающие привлекательной внешностью, добиваются всего легче, чем все остальные. То же самое применимо и к коду. Некто смотрит на чей-то проект и что-то тут же бросается ему в глаза. Ошмётки старого кода в репозитории — это как крошки хлеба, застрявшие в бороде после завтрака. Они могут напрочь испортить первое впечатление. Может, бороды у вас и нет, но, думаю, вам и так всё ясно.



Обычно легко понять то, что некий код написан новичком. В этом материале я дам вам несколько советов о том, как обыграть кадровиков вроде меня и повысить свои шансы на получение приглашения на собеседование. При этом вас не должна мучить мысль о том, что, применяя эти советы, вы кого-то обманываете. Вы не делаете ничего дурного. Применяя те небольшие улучшения кода, о которых пойдёт речь, вы не только повышаете свои шансы на успешное прохождение собеседования, но и растёте как программист. Не могу сказать, что профессиональному росту способствует упор на заучивание алгоритмов или модулей стандартной библиотеки.

В чём разница между новичком и более опытным разработчиком? Новичок не работал с устаревшими кодовыми базами. Поэтому он не видит ценности в том, чтобы вкладывать время в написание кода, который легко поддерживать. Часто новички работают в одиночку. Они, в результате, не особенно заботятся о читабельности кода.
Читать дальше →

Какие английские слова IT-лексикона мы неправильно произносим чаще всего

Время на прочтение5 мин
Охват и читатели175K
Пока пара новых статей на технические темы еще в процессе написания, я решил опубликовать небольшой лингвистический материал. Достаточно часто замечаю, что коллеги, у которых английский язык — не родной, неправильно произносят некоторые характерные для IT сферы слова. И дело здесь не в том, насколько аутентично произносятся отдельные звуки, а именно в транскрипции. Регулярно встречал ситуации при общении с носителями, когда неправильно произносимое слово приводило к недопониманиям.

Дальше я приведу несколько наборов слов, сгруппированных по типовым ошибкам. К каждому слову будет приложена транскрипция, приблизительная транскрипция на русском и ссылка на более детальную информацию в словаре. Так как большинство IT компаний все-таки работает с Северной Америкой, то транскрипции будут из US English.
Читать дальше →

Четыре простые настройки терминала Kubernetes, которые повысят вашу продуктивность

Время на прочтение4 мин
Охват и читатели11K

Я управлял эксплуатацией больших Kubernetes-кластеров более трёх лет, и хочу поделиться своим минималистичным подходом к настройке терминала kubectl terminal, которая доказала свою высокую эффективность в повседневной работе. Хорошо настроенный терминал с командной строкой может значительно повысить вашу продуктивность. Это как хлеб и масло — волшебное сочетание.

Но в отличие от популярных модификаций и функциональных добавлений я верю в простую конфигурацию, не требующую установки новых бинарников, обёрток или модификаций. Особенно в случае с kubectl — нативным, достаточно хорошо спроектированным инструментом, у которого совсем мало недостатков.

Вот четыре мои простых дополнения к терминалу kubectl. С этой конфигурацией я каждый день управляю 20 большими Kubernetes-кластерами на 400 машин.
Читать дальше →

Как дебажить переменные окружения в Linux

Время на прочтение4 мин
Охват и читатели33K
Часто бывает так, что приходишь на машину и обнаруживаешь какой-то скрипт, запущенный под системным пользователем неделю назад. Кто его запустил? Где искать этот run.php? Или добавляешь запись в /etc/crontab, а скрипт там падает с ошибкой «command not found». Почему? И что делать? 

У меня есть ответы на эти вопросы.

Читать дальше →

ENTRYPOINT vs CMD: назад к основам

Время на прочтение6 мин
Охват и читатели359K

Construction


Название ENTRYPOINT всегда меня смущало. Это название подразумевает, что каждый контейнер должен иметь определенную инструкцию ENTRYPOINT. Но после прочтения официальной документации я понял, что это не соответствует действительности.

Читать дальше →

Шпаргалка по визуализации данных в Python с помощью Plotly

Время на прочтение62 мин
Охват и читатели404K
Plotly — библиотека для визуализации данных, состоящая из нескольких частей:

  • Front-End на JS
  • Back-End на Python (за основу взята библиотека Seaborn)
  • Back-End на R

В этой простыне все примеры разобраны от совсем простых к более сложным, так что разработчикам с опытом будет скучно. Так же эта «шпаргалка» не заменит на 100% примеры из документации.



Читать дальше →

Внутри виртуальной машины Python. Часть 1

Время на прочтение9 мин
Охват и читатели38K

Оглавление



Введение


Примечание к переводу
В Python есть такое понятие, как «code object», которое (насколько я знаю) не встречается в других языках. Привожу определение этого термина, а подробности можно узнать в этой единственной статье на русском языке.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Пермь, Пермский край, Россия
Дата рождения
Зарегистрирован
Активность