Библиотека девопса | DevOps, SRE, Sysadmin
10.3K subscribers
1.38K photos
71 videos
4 files
2.59K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
#memes

Когда работаешь строго по графику 😆😆
33🥰25🔥17👏12👍6
This media is not supported in your browser
VIEW IN TELEGRAM
#memes

Когда не решаешь таски, но продуктивно думаешь о них
😁15👍4🌚3🥰1
ErrImagePull — это ошибка, возникающая, когда с образом, указанным для контейнера, нельзя произвести retrieved или pull.

ImagePullBackOff — это период ожидания, пока с образом не случится pull fix.

Образы контейнеров

Одной из самых сильных сторон контейнеризации является возможность запуска любого образа за считанные секунды. Контейнер — это группа процессов, выполняющихся изолированно от базовой системы. Образ контейнера содержит все ресурсы, необходимые для запуска этих процессов: бинарники, библиотеки и необходимые конфиги.

Реестр контейнеров — это репозиторий образов, в котором выполняются два основных действия:

Push: загрузка образа для доступа из из репы
Pull: выгрузка образа для использование его в контейнере

В примерах к этой статье будет использоваться docker CLI, но можно использовать любой инструмент, реализующий спецификации Open Container Initiative для всех взаимодействий с реестром контейнеров.

Далее читайте здесь

#гайд
8
#туториал

🤔🤔 Что насчет запуска команд в bash параллельно?

Первый способ основан на символе &

#!/bin/bash

sleep 5 && echo "sleep 5_1" &
sleep 5 && echo "sleep 5_2" &
wait
echo "sleep 0"

Здесь первая и вторая команда запустятся параллельно. Через 5 секунд на экран выведутся 3 строчки sleep 5_1, sleep 5_2 и sleep 0.

Wait – команда, которая ожидает завершения определенного процесса и возвращает его состояние завершения.

Оболочка ждет (wait) пока завершатся два предыдущих процесса, прежде чем запустить следующую команду. Получается, все то, что в скрипте идет после wait, будет в режиме ожидания, пока не завершатся 2 sleep-а.

Уже похоже на асинхронность.

Теперь запустим в терминале последовательно такие команды:

sleep 60 &
sleep 90 &
sleep 120 &

На экран выведется что-то такое:

[1] 38161
[2] 38166
[3] 38167

Это PID-ы запущенных процессов. Но сейчас интересна команда jobs, которая позволяет напрямую взаимодействовать с процессами в текущей оболочке. Команда отображает состояние заданий в текущем сеансе.

Запускаем jobs и смотрим:

[1] Done sleep 60
[2]- Running sleep 90 &
[3]+ Running sleep 120 &

— список команд, которые запустились в фоне. Первое задание завершилось, а остальное еще в процессе.

Теперь посмотрим где всё это можно применить.

downloader(){
wget -q "$1"
}

while IFS= read -r url
do
downloader "$url" &
done < urls.txt

wait
echo "Завершено"

🍕Скрипт читает построчно файл url.txt
🍕 Передает каждую строчку в функцию downloader
🍕 Функция downloader каждый раз запускается в фоне
🍕 Происходит скачивание файла по ссылке
🍕 По завершению (wait) получаем complete

Файл url.txt представляет собой список прямых урлов на файлы, которые нужно скачать.

Символ & говорит — запусти всё одновременно и параллельно. Типа такого, с таким ты уже всяко встречался:

Можно все это сделать иначе. Есть утилита parallel: apt/yum/brew install parallel

Делает она то же самое, но имеет более гибкие настройки через параметры. Например, предыдущий пример со скачиванием файлов мог бы выглядеть таким образом:

parallel -j 4 wget -q {} < urls.txt

-j означает сколько джобов будет запараллелено.

А еще, есть «$!», она позволяет узнать PID последнего запущенного процесса:

sleep 60 &
[1] 39032
echo $!
39032

В первой команде запустили фоном ожидание 60 секунд, вывелся порядковый номер джобы и PID. Ну а чтобы получить последний PID, выполняем третью команду с «$!». На экран вывелся PID в чистом виде, а дальше можно его сохранить в переменную и уже проверять в скрипте, завершился он или нет.
👍2011🎉9🥰7🔥6
🧑‍🎓😎 Еще одна серия с мероприятия OFFZONE 2023

Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.

Самое слабое звено: разбираемся в атаках на цепочки поставок

В последние годы атаки на цепочки поставок перестали быть прерогативой спонсируемых государствами групп. Управлению киберразведки BI.ZONE известно как минимум несколько случаев, когда финансово мотивированные хакеры, например операторы программ‑вымогателей, использовали данный метод для получения первоначального доступа к своим целям.

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

Смотреть

#видео
5🔥3
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека devops’a
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook
🔸Instagram
👍43
⚙️ Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам

CI/CD (Continuous Integration / Continuous Deployment) — это непрерывная интеграция и развертывание, предназначенные для повышения удобства, частоты и надежности публикации изменений программного обеспечения или продукта, где:

CI — это практика разработки ПО, при которой изменения в коде автоматически собираются, тестируются и интегрируются в целевую ветку репозитория. Основная идея — минимизация разрыва между компонентами проекта и быстрая обратная связь о качестве кода, благодаря автоматической сборке и тестированию.

CD — это продолжение CI, которое позволяет автоматически разворачивать успешно собранный и протестированный код на сервере или другой среде реального применения. Цель — автоматизация процесса разработки и развертывания приложения или программного продукта после всех этапов проверки и тестирования. Развертывание в продакшн должно выполняться после ручного подтверждения деплоя, чтобы предоставить дополнительный уровень контроля и безопасности.

Инструментов работы с CI/CD

🔹 Gitlab CI/CD — полностью интегрированная в GitLab система для автоматизации сборки, тестирования и развертывания программного кода.

🔹 Jenkins — система с открытым исходным кодом для внедрения CI/CD для автоматизации процесса разработки.

🔹 Azure DevOps — отдельное комплексное решение от Microsoft с набором инструментов разработки. Оно позволяет командам планировать работу, совместно создавать код и доставлять приложения.

🔹 TeamCity — сервер непрерывной интеграции от JetBrains. У TeamCity открытая архитектура, которая позволяет разработчикам создавать плагины для расширения функционала.

Для углубленного ознакомления переходим сюда

#гайд
👍15🔥7🥰6😁5🎉5
🤔 Очередной #дайджест по DevOps

➡️ Рекомендации по безопасности: уязвимости Curl — описание предстоящего апдейта и безопасности в целом, а curl, как известно, напичкан пробоями в безопасности

➡️ SIG-архитектура — обсуждение насущного с лидом Conformance sub-project

➡️ Учимся бесплатно деплоить Java (и не только) приложения — использование для деплоя бесплатного сервиса CircleCi и AWS от Amazon

➡️ Group wait, Group interval и Repeat interval — разбор нюансов работы Prometheus Alertmanager, чтобы полностью понять, как функционируют интервалы

➡️ Обзор работоспособности сети с помощью mtr, ss, lsof и iperf3 — если в сети происходит что-то странное, на помощь всегда приходят эти инструменты
👍5🔥21
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍42
💫🕳️ k'exp — Kubernetes Explorer

Данный софт поможет разобраться в Kubernetes через визуализацию. Это не очередная попытка управлять производственными кластерами в браузере.

kexp предназначен для:

изучения возможностей Kubernetes
разработки приложений
разработка контроллера и оператора

Installation

Получите последний релиз с GitHub:

GOOS=linux
GOARCH=amd64

curl -Ls https://github.com/iximiuz/kexp/releases/latest/download/kexp_${GOOS}_${GOARCH}.tar.gz | tar xvz

sudo mv kexp /usr/local/bin

Использование

Это статически связанный двоичный файл Go со встроенным UI. Если у вас уже настроен kubectl для доступа к вашим кластерам, вы также можете запустить kexp — он использует ту же логику обнаружения KUBECONFIG.

По умолчанию kexp запускает сервер на localhost:5173:

kexp
open localhost:5173

В качестве альтернативы вы можете указать кастомный адрес:

kexp --host 0.0.0.0 --port 8090

#обзор
👍82
📦📦 Перенос Docker на другой диск в Windows

Небольшой туториал по переносу Docker с диска С, на диск D. У автора статьи было мало места на 120-гиговой SSD-шке, и пришлось пойти на этот шаг. Если у кого-то стоит такая задача — милости просим.

# выключаем wsl
wsl --shutdown
# экспортируем данные docker-desktop
wsl --export docker-desktop D:\docker-desktop.tar
# убираем регистрацию данных docker-desktop
wsl --unregister docker-desktop
# импортируем данные docker-desktop в новую директорию
wsl --import docker-desktop D:\wslStore\ D:\docker-desktop.tar --version 2
# удаляем D:\docker-desktop.tar

После этих манипуляций, все наши сокровища с DockerDesktop будут располагаться в D:\wslStore\. Но, это не означает, что данные (контейнеры, снимки и прочие) будут тоже находиться там.

Читать далее

#туториал
🎉15👍7🔥21
🕷️🕸️ Понимание кластерной сети Kubernetes

По умолчанию все поды в кластере K8s могут взаимодействовать друг с другом без NAT, поэтому каждому модулю присваивается IP-адрес всего кластера. Контейнеры внутри каждого пода совместно используют сетевое пространство имен поды, что позволяет им взаимодействовать друг с другом на localhost через loopback. С точки зрения рабочих нагрузок, выполняемых внутри контейнеров, эта IP-сеть выглядит как любая другая, и никаких изменений не требуется.

Когда пода создается или терминируется, частью работы kubelet является настройка или очистка песочницы поды, на которой он запущен. Kubelet полагается на реализацию Container Runtime Interface (CRI) для обработки деталей создания и уничтожения песочниц. CRI состоит из нескольких интерфейсов; наиболее интересными являются RuntimeService interface (client-side API; integration point kubelet->CRI) и RuntimeServiceServer (server-side API; integration point RuntimeService->CRI implementation). Эти API-интерфейсы одновременно большие и объемные, но в данной статье нас интересуют только *PodS и коробочный набор методов (например, RunPodSandbox). Однако под капотом CRI находится сетевой интерфейс контейнера, который создает и настраивает сетевое пространство имен поды.

Очень крутая и объемная статья, продолжение которой вас ждет тут

#гайд
👍82
#вопросы_с_собеседования

Редкий, но интересный вопрос по *nix на смекалку.

Как можно создать zombie-процесс?

#include «stdlib.h>
#include
#include
int main() {
pid_t child_pid;
/* Создание дочернего процесса. */
child_pid = fork();
if (child_pid > 0) {
/* Это родительский процесс — делаем минутную паузу. */
sleep(60);
} else {
/* Это дочерний процесс — немедленно завершаем работу. */
exit(0);
}
return 0;
}
🔥192
🧑‍🎓😎 Еще одна серия с мероприятия OFFZONE 2023

Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.

Логические уязвимости повышения привилегий в ОС Windows

В докладе будет рассказано о логических уязвимостях в ПО для ОС Windows. Будут рассмотрены основные методы и техники их эксплуатации, разобраны кейсы и даны советы, как избежать таких уязвимостей в разработке. Также спикер поделится опытом взаимодействия с вендорами, в чьих продуктах были обнаружены уязвимости.

Смотреть

#видео
👍43
🤔 Очередной #дайджест по DevOps

➡️ Docker vs. Virtual Machines — технические детали Docker и виртуальных машин, их различия, общие черты и сценарии, в которых они проявляют себя.

➡️ Exit Codes в контейнерах и Kubernetes — понимание exit codes в контейнере может помочь понять основную причину сбоев pod при устранении сбоев

➡️ Open Source, AI и другие технотренды — вебинар будет полезен разработчикам и тимлидам команд разработки, DevOps и DevSecOps-инженерам, руководителям и специалистам по ИБ, техническим и ИТ-директорам

➡️ Понимание Kubernetes Limits и Requests — помощь в изучении, какие ресурсы задействованы и насколько они необходимы

➡️ argocd-vault-replacer — плагин для замены плейсхолдеров в манифестах Kubernetes секретами, хранящимися в Hashicorp Vault.
🥰1713👍12👏8🤩8
This media is not supported in your browser
VIEW IN TELEGRAM
В нашей IT-компании предусмотрен дополнительный контроль качества сливок и кофе в целом

#memes
12👍7❤‍🔥4🥰4😁3
🧑‍🎓🧑‍🎓 Держите шпаргалки, которые часто бывают необходимы, а вспомнить сложно

#шпаргалки
🥰136