Вкалывают роботы, счастлив человек
Сегодня расскажем про применение генеративных нейросетей в работе DevOps, приложение kubed для расшаривания секретов в разных неймспейсах и стартап Mobb, создавший утилиту для автоматического устранения уязвимостей.
AI IaC Generator
Управление через конфигурационные файлы, а не через настройку каждого элемента отдельно, давно стало нормой для облачных инфраструктур. Создавать шаблоны, запросы и конфиги вручную не слишком эффективно, потому что автоматизирую уже всё и везде. ChatGPT и другие генеративные нейронные сети, обученные на публичных данных, вполне способны забрать на себя рутину и облегчить жизнь DevOps. Поскольку OpenAI позволяет взаимодействовать с ChatGPT через API, была создана удобная консольная утилита AIaC.
Сразу сделаем оговорку — эта утилита в любом случае будет почти платной. Она построена, как специфичный CLI-интерфейс, значительно упрощающий получение желаемого результата. OpenAI в качестве триала даёт небольшой кредит $18 долларов, которого вполне хватит для полноценного тестирования, но дальше придётся закинуть кредитов.
Установить AIaC можно 4 способами:
- через Homebrew,
- в качестве контейнера Docker,
- через go install,
- через сборку из исходного кода.
После установки потребуется создать API-токен и указать его через переменную среды или через флаг --api-key. Затем можно приступать к экспериментам и получать результат в stdout или сразу же сохранять его в файлы. Вот пара примеров применения.
Так можно создать dockerfile для развёртывания защищённого nginx:
aiac get dockerfile for a secured nginx
Или CI/CD-конвейер для приложение на Node.js:
aiac get jenkins pipeline for building nodejs
Не стоит забывать и о способностях генеративных нейросетей создавать простой код:
aiac get python code that scans all open ports in my network
Возможно это уменьшит количество времени и сил, затрачиваемых на простые задачи. А джунам такая штука поможет повысить насмотренность и приёмы, которые пригодятся им в дальнейшей работе.
Демон kubed
Представьте, что у вас есть задача, сделать доступным один и тот же Secret или ConfigMap во всех пространствах имён. Обычно приходится вручную применять их к каждому неймспейсу по отдельности. Это довольно утомительно и неудобно, особенно если планируется создавать новые пространства имён в будущем.
Решение — демон kubed, его задачей будет синхронизация таких объектов между пространствами имен или кластером. Удобнее всего установить его из helm-чарта:
helm repo add appscode https://charts.appscode.com/stable/
helm repo update
helm install kubed appscode/kubed --version v0.12.0 --namespace kube-system --set enableAnalytics=false
По-умолчанию демон устанавливается в пространство имён kube-system. Проверить статус развёртывания можно простой командой:
kubectl get deployment -n kube-system
Давайте создадим три пространства имён:
kubectl create ns demo1
kubectl create ns demo2
kubectl create ns demo3
Также создадим объект Secret:
kubectl -n kube-system create secret generic credentials --from-literal=name=purushotham
Включаем синхронизацию между всеми пространствами имён:
kubectl -n kube-system annotate secret credentials kubed.appscode.com/sync=""
Вуаля! Теперь наш Secret синхронизировался между всеми неймспейсами. Детали использования и подробности работы вы найдёте в этой статье.
Правила Мобба
Рынок безопасности приложений нуждается в качественных и эффективных инструментах. Стартап Mobb несколько дней назад привлёк начальное финансирование в размере $5,4 млн для развития технологии автоматического устранения уязвимостей. Бесплатная Community-версия уже доступна всем желающим. Пока что поддерживаются только Java-проекты.
Идея сводится к тому, что большинство уязвимостей основаны на 8 типовых ошибках, которые чаще всего совершают программисты. Для исправления этих ошибок были разработаны особые шаблоны, их назвали правилами Мобба. Система находит уязвимости и готовит патч, устраняющий их. Автоматически патч не применяется, чтобы имелась возможность выполнить предварительный просмотр изменений.
Исторически так сложилось, что многие обнаруживаемые уязвимости на деле не влияют на приложения. Но чтобы это выяснить и разработать исправление, приходится тратить время разработчиков. Автоматизированный инструмент в этом плане значительно сокращает время, а следовательно и затраты.
Разумеется, нужно понимать, что Mobb вовсе не «серебряная пуля» и вряд ли сможет безопасно исправить все найденные проблемы. Но для типовых ошибок он вполне подойдёт, давая разработчикам больше времени на действительно важные уязвимости. Звучит отлично, а остальное будет видно из практики эксплуатации.
Лень или суперспособность
На портале Hackaday недавно появилась любопытная статья про отладку Python-приложения «на лету» с помощью ИИ. Эта рутинная операция обычно отнимает много времени и может быть утомительной. Разработчик с ником BioBootloader создал прототип приложения Wolverine, которое наделяет приложения на Python возможностью автоматического исправления ошибок.
Автор приложения захотел применить способности ChatGPT 4 анализировать код и чинить его. Если приложение аварийно завершается, Wolverine сам перепишет сбойный участок кода и перезапустит приложение. Если эти действия вызовут какой-то другой сбой, то ИИ продолжит итеративно исправлять ошибки и перезапускать приложение до того момента, пока оно не начнёт работать правильно.
Это демонстрирует потенциальное будущее разработки, когда приложения смогут самостоятельно искать и устранять ошибки. Для плохо задокументированных проектов или в случае полного отсутствия документации такой подход может сэкономить немало рабочего времени. Тем не менее, никто не сможет гарантировать, что в какой-то участок приложения не проникнет что-то вроде:
subprocess.run (["rm", "/", "-rf"])
Конечно, машины вряд ли пойдут на столь откровенный саботаж, но потенциально это дыра в безопасности. К тому же, есть соблазн для начинающих кодеров полностью перекладывать отладку ошибок на ИИ, а не учиться это делать самостоятельно.
Немного IT
Этот подкаст снимают и развивают двое наших коллег из Evrone. Они обсуждают преимущества и недостатки языков программирования, сравнивают их особенности. В этом выпуске они обсудили тестирование: юнит, интеграционное и End-to-end, а также внешние инструменты. Ещё рассказали про свой личный опыт на проектах и затронули тему чистой архитектуры.
Выпуски длятся 50-70 минут, а значит можно совместить какие-нибудь скучные занятия с обучением. Отличная возможность погрузится в нюансы IT, стоя в пробке или проезжая очередную станцию метро!
Ну а если вам есть что сказать — добро пожаловать в комментарии!
Митапы
DevOps Meetup
25 октября 2023
Осенью у нас запланирован DevOps Meetup. Программа мероприятия формируется, но регистрация уже открыта. Кстати, вы уже можете подать доклад прямо в режиме онлайн. Заявки на участие спикера принимаются до 5 октября.
Интересуетесь нашими мероприятиями? В Telegram-канале Evrone meetups мы выкладываем анонсы с подробными описаниями докладов, а также студийные записи прошедших митапов. Тем для кого выступать в новинку, мы оказываем всяческую поддержку и помогаем оформить экспертизу в яркое выступление. Подписывайтесь и пишите @andrew_aquariuss, чтобы узнать подробности.
Вакансии
Evrone
Мы открыты для новых DevOps-инженеров. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.