Большинство пользователей Kubernetes до сих пор не знают о существовании этого типа томов
Он называется ImageVolume.
Вот как он работает
Функция Image Volume позволяет использовать OCI-образы в качестве томов непосредственно внутри Pod’ов Kubernetes.
Что такое OCI-образы?
Это стандартизированный формат, который определяет структуру контейнерных образов.
С помощью ImageVolume можно хранить в образах файлы моделей, бинарные файлы, конфигурации и другие данные, а затем монтировать их в Pod’ы.
Вот практическое руководство, в котором показано, как работает эта функция и как её использовать.
Полезная возможность, о которой стоит знать.
https://devopscube.com/oci-image-volume-kubernetes-pods/
👉 DevOps Portal
Он называется ImageVolume.
Вот как он работает
Функция Image Volume позволяет использовать OCI-образы в качестве томов непосредственно внутри Pod’ов Kubernetes.
Что такое OCI-образы?
Это стандартизированный формат, который определяет структуру контейнерных образов.
С помощью ImageVolume можно хранить в образах файлы моделей, бинарные файлы, конфигурации и другие данные, а затем монтировать их в Pod’ы.
Вот практическое руководство, в котором показано, как работает эта функция и как её использовать.
Полезная возможность, о которой стоит знать.
https://devopscube.com/oci-image-volume-kubernetes-pods/
Примечание: ImageVolume подходит для любых workload’ов, которым удобно поставлять данные внутри образа: файлы моделей, датасеты, конфигурации, статические ресурсы и даже инструменты.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🥱1
Как работает сетевая подсистема контейнеров
Большинство Docker-инсталляций и Kubernetes-кластеров используют одинаковую схему сетей на основе мостов. Как лучше всего разобраться, как это устроено?
Попробуйте воссоздать такую сетевую конфигурацию с нуля, используя только стандартные Linux-команды: https://labs.iximiuz.com/tutorials/container-networking-from-scratch
👉 DevOps Portal
Большинство Docker-инсталляций и Kubernetes-кластеров используют одинаковую схему сетей на основе мостов. Как лучше всего разобраться, как это устроено?
Попробуйте воссоздать такую сетевую конфигурацию с нуля, используя только стандартные Linux-команды: https://labs.iximiuz.com/tutorials/container-networking-from-scratch
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥3
В этом руководстве показано, как построить SaaS-архитектуру с отдельным окружением для каждого пользователя в EKS Auto Mode: один pod, один поддомен и один persistent volume на пользователя, wildcard TLS и общий ALB.
➜ Читайте тут
👉 DevOps Portal
➜ Читайте тут
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Компьютерные сети 101: сокеты
Лучший способ понять, что такое сокеты и как они работают - написать несколько простых клиент-серверных программ. Хорошая новость: для этого достаточно нескольких строк на Python или Go. А если хочется испытать себя, попробуйте C - кода будет больше, зато вы окажетесь максимально близко к реальному системному API.
Несколько задач для практики в безопасном и контролируемом окружении с полезными подсказками:
Удачного хакинга!
👉 DevOps Portal
Лучший способ понять, что такое сокеты и как они работают - написать несколько простых клиент-серверных программ. Хорошая новость: для этого достаточно нескольких строк на Python или Go. А если хочется испытать себя, попробуйте C - кода будет больше, зато вы окажетесь максимально близко к реальному системному API.
Несколько задач для практики в безопасном и контролируемом окружении с полезными подсказками:
— Написать простой TCP Echo-сервер
https://labs.iximiuz.com/challenges/write-tcp-echo-server
— Задача попроще: написать клиент для сервера телеметрии
https://labs.iximiuz.com/challenges/write-tcp-client-for-telemetry-server
— Задача посложнее: написать клиент для чат-сервера
https://labs.iximiuz.com/challenges/write-tcp-client-for-chat-server
— Сделать сервер, который работает и с TCP-, и с Unix-сокетами
https://labs.iximiuz.com/challenges/write-stream-echo-server
Удачного хакинга!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥3
Linux 101: монтируем диск с уже записанными данными и читаем его содержимое
Практика по работе с накопителями в Linux:
1. Найти неподключённый диск
2. Примонтировать его к директории в корневой файловой системе
3. Найти флаг на примонтированном диске
Практическое задание: https://labs.iximiuz.com/challenges/storage-simple-mount
👉 DevOps Portal
Практика по работе с накопителями в Linux:
1. Найти неподключённый диск
2. Примонтировать его к директории в корневой файловой системе
3. Найти флаг на примонтированном диске
Практическое задание: https://labs.iximiuz.com/challenges/storage-simple-mount
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
This media is not supported in your browser
VIEW IN TELEGRAM
Kuber Community Day возвращается
30 июля в Москве все неравнодушные к технологии встречаются на инженерной конференции Kuber Community Day.
На сцене выступят практики из Ænix, MWS, «Райффайзенбанка», «СберЗдоровья», «Лаборатории Числитель», «Почтатех», «Инфосистемы Джет», Hilbert Team и других компаний.
Что вас ждет:
◾доклады без маркетинга: 30 спикеров расскажут об использовании ИИ в Kubernetes, мониторинге контейнеров, обзоре инструментов экосистемы, получении сертификаций и пр.;
◾мастер-класс по созданию Kubernetes-оператора: в конце все участники задеплоят его в кластер Yandex Managed Kubernetes;
◾arch dating: короткие встречи с опытными специалистами, где можно обсудить технические и карьерные вопросы;
◾научпоп: рассказ о кибернетическом подходе к управлению сложностью от Александра Нозика, директора центра научного программирования.
Форматы: офлайн и онлайн.
Участие бесплатное, регистрация обязательна.
30 июля в Москве все неравнодушные к технологии встречаются на инженерной конференции Kuber Community Day.
На сцене выступят практики из Ænix, MWS, «Райффайзенбанка», «СберЗдоровья», «Лаборатории Числитель», «Почтатех», «Инфосистемы Джет», Hilbert Team и других компаний.
Что вас ждет:
◾доклады без маркетинга: 30 спикеров расскажут об использовании ИИ в Kubernetes, мониторинге контейнеров, обзоре инструментов экосистемы, получении сертификаций и пр.;
◾мастер-класс по созданию Kubernetes-оператора: в конце все участники задеплоят его в кластер Yandex Managed Kubernetes;
◾arch dating: короткие встречи с опытными специалистами, где можно обсудить технические и карьерные вопросы;
◾научпоп: рассказ о кибернетическом подходе к управлению сложностью от Александра Нозика, директора центра научного программирования.
Форматы: офлайн и онлайн.
Участие бесплатное, регистрация обязательна.
😁3❤2🥱1
В этом репозитории собрано более 20 инструментов, которые автоматически генерируют архитектурные диаграммы Kubernetes на основе манифестов, Helm-чартов или текущего состояния кластера.
https://github.com/philippemerle/Awesome-Kubernetes-Architecture-Diagrams
👉 DevOps Portal
https://github.com/philippemerle/Awesome-Kubernetes-Architecture-Diagrams
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Небольшой совет по Linux
При создании новой директории часто приходится выполнять:
Эти два шага можно объединить в одну команду:
Переменная
Небольшой трюк, который позволяет сэкономить несколько нажатий клавиш при работе в терминале
👉 DevOps Portal
При создании новой директории часто приходится выполнять:
$ mkdir project
$ cd project
Эти два шага можно объединить в одну команду:
$ mkdir app && cd $_
Переменная
$_ разворачивается в последний аргумент предыдущей команды, которым в данном случае является app.Небольшой трюк, который позволяет сэкономить несколько нажатий клавиш при работе в терминале
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍8🌚4
Прокачайте навыки работы с Kubernetes на реалистичных сценариях:
👉 DevOps Portal
Создать собственный PriorityClass и назначить его рабочей нагрузке
https://labs.iximiuz.com/challenges/create-and-assign-a-custom-priorityclass-to-a-workload-b3699c08
Расширить кластер дополнительным диапазоном Service CIDR для команды разработки
https://labs.iximiuz.com/challenges/extend-the-cluster-with-an-additional-service-cidr-for-the-dev-team-5251bc66
Включить отдельные DNS-записи для каждого Pod в Deployment
https://labs.iximiuz.com/challenges/enable-per-pod-dns-records-for-deployment-1c6a4201
Разобраться, почему Pod’ы приложения-календаря со списком задач зависли в состоянии Pending
https://labs.iximiuz.com/challenges/troubleshoot-why-the-calendar-todo-app-pods-are-stuck-in-pending-9f571aa2
Повторно подключить сохранённый PV с помощью нового PVC и восстановить потерянную базу данных MariaDB
https://labs.iximiuz.com/challenges/reclaim-retained-pv-with-new-pvc-and-restore-lost-mariadb-database-783fe3ae
Настроить обязательное использование TLS для продакшен-Deployment с Nginx
https://labs.iximiuz.com/challenges/enforce-tls-policy-on-production-nginx-deployment-a9190dec
Подключить конфигурационный файл, не перезаписывая существующую директорию из образа
https://labs.iximiuz.com/challenges/inject-configmap-file-without-overwriting-existing-directory-23bcc10e
Закрепить клиента за одним и тем же Pod с помощью Session Affinity в Service
https://labs.iximiuz.com/challenges/pin-a-client-to-the-same-pod-using-service-session-affinity-6b19b89f
Настроить Health Probes и корректное завершение работы для Kubernetes Deployment
https://labs.iximiuz.com/challenges/configure-health-probes-and-graceful-shutdown-kubernetes-deployment-90e57daa
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🤯2
Как собрать мультиплатформенный контейнерный образ из отдельных одноплатформенных сборок?
Собрать мультиплатформенный образ несложно, когда все его варианты можно описать одним Dockerfile. Но так получается не всегда. Например, если приложение мигрирует с одного стека на другой, а поддержка одной из платформ всё ещё отстаёт, в итоге приходится использовать как минимум два разных Dockerfile и собирать два независимых варианта образа.
К счастью, отдельные одноплатформенные сборки можно сшить в один мультиплатформенный образ, аккуратно работая с индексом образа.
Разобраться в магии этого процесса можно здесь:
https://labs.iximiuz.com/challenges/docker-push-multi-platform-image
👉 DevOps Portal
Собрать мультиплатформенный образ несложно, когда все его варианты можно описать одним Dockerfile. Но так получается не всегда. Например, если приложение мигрирует с одного стека на другой, а поддержка одной из платформ всё ещё отстаёт, в итоге приходится использовать как минимум два разных Dockerfile и собирать два независимых варианта образа.
К счастью, отдельные одноплатформенные сборки можно сшить в один мультиплатформенный образ, аккуратно работая с индексом образа.
Разобраться в магии этого процесса можно здесь:
https://labs.iximiuz.com/challenges/docker-push-multi-platform-image
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Forwarded from Мир Linux
DevOps-инструмент недели: HAMi
Обычно Kubernetes-кластер выделяет целый GPU под одну рабочую нагрузку.
В результате часть ресурсов GPU простаивает.
HAMi решает эту проблему.
Это опенсорс middleware для Kubernetes, которое позволяет распределять, изолировать и планировать GPU и другие AI-ускорители между Pod’ами без изменений в коде приложения.
Что умеет HAMi:
- Делит один GPU на несколько частей по объёму памяти, количеству ядер или числу устройств
- Задаёт жёсткие лимиты памяти и вычислительных ресурсов для каждой рабочей нагрузки, чтобы один Pod не мог занять ресурсы другого
- Оптимально распределяет задачи по GPU: уплотняет их для экономии ресурсов или разносит по разным устройствам, чтобы избежать снижения производительности
- Управляет NVIDIA GPU, NPU, DCU, MLU и другими типами ускорителей через единый механизм планирования
- Позволяет запускать мультитенантные задачи обучения, инференса и среды с ноутбуками в общем пуле GPU
GitHub: https://github.com/Project-HAMi/HAMi
@linuxos_tg
Обычно Kubernetes-кластер выделяет целый GPU под одну рабочую нагрузку.
В результате часть ресурсов GPU простаивает.
HAMi решает эту проблему.
Это опенсорс middleware для Kubernetes, которое позволяет распределять, изолировать и планировать GPU и другие AI-ускорители между Pod’ами без изменений в коде приложения.
Что умеет HAMi:
- Делит один GPU на несколько частей по объёму памяти, количеству ядер или числу устройств
- Задаёт жёсткие лимиты памяти и вычислительных ресурсов для каждой рабочей нагрузки, чтобы один Pod не мог занять ресурсы другого
- Оптимально распределяет задачи по GPU: уплотняет их для экономии ресурсов или разносит по разным устройствам, чтобы избежать снижения производительности
- Управляет NVIDIA GPU, NPU, DCU, MLU и другими типами ускорителей через единый механизм планирования
- Позволяет запускать мультитенантные задачи обучения, инференса и среды с ноутбуками в общем пуле GPU
GitHub: https://github.com/Project-HAMi/HAMi
@linuxos_tg
❤5🔥1
В качестве движка выполнения пайплайнов Kubeflow Pipelines использует Argo Workflows.
Это Kubernetes-native движок оркестрации DAG.
Что именно это означает?
DAG (Directed Acyclic Graph, направленный ациклический граф) описывает задачи и зависимости между ними.
Например:
- Сначала выполняется задача A
- После A запускаются задачи B и C
- Задача D запускается только после завершения B и C
Самое интересное — как Argo выполняет эти задачи.
В большинстве инструментов DAG описываются на Python.
В Argo DAG задаётся декларативно в YAML в виде CRD, а каждую задачу Argo выполняет как отдельный Kubernetes Pod.
Kubeflow использует Argo Workflows в качестве бэкенда и добавляет поверх него слой для задач AI/ML.
При работе с Kubeflow Pipelines вместо того, чтобы напрямую писать YAML-манифесты Argo Workflow, пайплайны нужно описывать в виде DAG на Python.
Для ML-команд это значительно удобнее, чем поддерживать сотни строк YAML с Kubernetes CRD.
Kubeflow SDK компилирует описание пайплайна на Python в YAML в формате Intermediate Representation (IR).
Затем оно преобразуется в специфичное для Argo описание и передаётся на выполнение.
👉 DevOps Portal
Это Kubernetes-native движок оркестрации DAG.
Что именно это означает?
DAG (Directed Acyclic Graph, направленный ациклический граф) описывает задачи и зависимости между ними.
Например:
- Сначала выполняется задача A
- После A запускаются задачи B и C
- Задача D запускается только после завершения B и C
Самое интересное — как Argo выполняет эти задачи.
В большинстве инструментов DAG описываются на Python.
В Argo DAG задаётся декларативно в YAML в виде CRD, а каждую задачу Argo выполняет как отдельный Kubernetes Pod.
Kubeflow использует Argo Workflows в качестве бэкенда и добавляет поверх него слой для задач AI/ML.
При работе с Kubeflow Pipelines вместо того, чтобы напрямую писать YAML-манифесты Argo Workflow, пайплайны нужно описывать в виде DAG на Python.
Для ML-команд это значительно удобнее, чем поддерживать сотни строк YAML с Kubernetes CRD.
Kubeflow SDK компилирует описание пайплайна на Python в YAML в формате Intermediate Representation (IR).
Затем оно преобразуется в специфичное для Argo описание и передаётся на выполнение.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Webernetes — браузерный симулятор Kubernetes, который позволяет запускать ограниченный набор возможностей Kubernetes, включая Pod, Service и Deployment, полностью в браузере и без какой-либо бэкенд-инфраструктуры.
➜ https://github.com/ngrok/webernetes
👉 DevOps Portal
➜ https://github.com/ngrok/webernetes
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2
Kubeflow — это уже не просто MLOps-платформа.
Она развивается в полноценную cloud-native AI-платформу для:
• распределённого обучения AI-моделей
• дообучения LLM
• GenAI-пайплайнов
• AI-воркфлоу в Kubernetes
Если вы DevOps-инженер и хотите перейти в AI-инфраструктуру, Kubeflow — одна из лучших платформ, которые стоит изучать сегодня.
В последних релизах Kubeflow расширилась поддержка GenAI-сценариев, распределённого обучения и современных воркфлоу для AI-платформ.
Как лучше всего разобраться?
Собрать всё самостоятельно.
Вот пошаговый практический гайд, в котором показано, как:
✅ развернуть Kubeflow Pipelines в Kubernetes
✅ создавать пайплайны с помощью Kubeflow SDK
✅ запускать пайплайны и отслеживать их выполнение
- https://devopscube.com/setup-kubeflow-pipelines-kubernetes/
Если вы только начинаете знакомство с Kubeflow, сначала изучите этот материал:
- https://devopscube.com/kubeflow-pipelines/
👉 DevOps Portal
Она развивается в полноценную cloud-native AI-платформу для:
• распределённого обучения AI-моделей
• дообучения LLM
• GenAI-пайплайнов
• AI-воркфлоу в Kubernetes
Если вы DevOps-инженер и хотите перейти в AI-инфраструктуру, Kubeflow — одна из лучших платформ, которые стоит изучать сегодня.
В последних релизах Kubeflow расширилась поддержка GenAI-сценариев, распределённого обучения и современных воркфлоу для AI-платформ.
Как лучше всего разобраться?
Собрать всё самостоятельно.
Вот пошаговый практический гайд, в котором показано, как:
- https://devopscube.com/setup-kubeflow-pipelines-kubernetes/
Если вы только начинаете знакомство с Kubeflow, сначала изучите этот материал:
- https://devopscube.com/kubeflow-pipelines/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥2
В этой статье показано, как использовать Kubernetes ConfigMap в качестве лёгковесного хранилища состояния в реальном времени: отслеживать изменения ConfigMap и распределять события с помощью Python asyncio.
➜ https://medium.com/sahibinden-technology/using-kubernetes-configmaps-as-a-real-time-state-store-483c47ee23cd
👉 DevOps Portal
➜ https://medium.com/sahibinden-technology/using-kubernetes-configmaps-as-a-real-time-state-store-483c47ee23cd
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Паттерны проброса портов в Kubernetes
Ты находишься внутри dev-кластера, доступ к сети ограничен, и сервис, который ты только что задеплоил, ведёт себя странно.
Нет ни LoadBalancer, ни настроенного ingress-контроллера, и «просто открыть порт» – не вариант, потому что сетевики либо тормозят, либо отвечают отказом.
Вот здесь тебя и выручает
Вот простая инфографика, чтобы было легче понять.
👉 DevOps Portal
Ты находишься внутри dev-кластера, доступ к сети ограничен, и сервис, который ты только что задеплоил, ведёт себя странно.
Нет ни LoadBalancer, ни настроенного ingress-контроллера, и «просто открыть порт» – не вариант, потому что сетевики либо тормозят, либо отвечают отказом.
Вот здесь тебя и выручает
kubectl port-forward.Вот простая инфографика, чтобы было легче понять.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Небольшой совет по работе с командной строкой Linux
Чтобы скрыть каталоги
вместо:
👉 DevOps Portal
Чтобы скрыть каталоги
. и .., но при этом показать остальные скрытые файлы и директории, используйте:ls -A
вместо:
ls -a
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤4👍1
Запуск распределённого обучения ИИ в Kubernetes – это не просто добавление GPU
В выпуске Kubeflow Pipelines рассказывали, что этап обучения в пайплайне обычно передаётся Kubeflow Trainer.
И вот почему.
Некоторые задачи обучения ML-моделей и дообучения LLM требуют нескольких GPU, распределённых между несколькими нодами Kubernetes.
Для этого необходимо:
— создавать и управлять несколькими worker-подами;
— выделять GPU-ресурсы;
— настраивать взаимодействие между воркерами;
— отслеживать статус обучающих джобов и многое другое.
Kubeflow Trainer решает эти задачи в Kubernetes-native формате с помощью CRD и скрывает большую часть связанной с этим сложности.
В этом выпуске MLOps-рассылки разобрали:
— основы распределённого обучения;
— архитектуру Kubeflow Trainer: TrainJob, Runtimes и JobSet;
— установку Trainer и запуск первого распределённого TrainJob на CPU-нодах;
— запуск ML-задач на GPU-нодах;
— каким моделям действительно нужны GPU.
Читать: https://newsletter.devopscube.com/p/kubeflow-trainer
👉 DevOps Portal
В выпуске Kubeflow Pipelines рассказывали, что этап обучения в пайплайне обычно передаётся Kubeflow Trainer.
И вот почему.
Некоторые задачи обучения ML-моделей и дообучения LLM требуют нескольких GPU, распределённых между несколькими нодами Kubernetes.
Для этого необходимо:
— создавать и управлять несколькими worker-подами;
— выделять GPU-ресурсы;
— настраивать взаимодействие между воркерами;
— отслеживать статус обучающих джобов и многое другое.
Kubeflow Trainer решает эти задачи в Kubernetes-native формате с помощью CRD и скрывает большую часть связанной с этим сложности.
В этом выпуске MLOps-рассылки разобрали:
— основы распределённого обучения;
— архитектуру Kubeflow Trainer: TrainJob, Runtimes и JobSet;
— установку Trainer и запуск первого распределённого TrainJob на CPU-нодах;
— запуск ML-задач на GPU-нодах;
— каким моделям действительно нужны GPU.
Читать: https://newsletter.devopscube.com/p/kubeflow-trainer
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥2👍1
Ozon Tech опубликовал часть программы E-CODE. И по части инфраструктуры там такие бриллианты:
• опыт обмена множества кастомных схем доставки данных на единую платформу
• история крупной гибридной инфры, мигрировавшей в K8-s
• анатомия хранилища артефактов (и не одного — обещают вскрытие сразу семи решений)
• путь сетевого оборудования к декларативному описанию через DSL
• противостояние конечности облаков за счёт capacity management
• перевод кластеров под управлением Patroni с kube-api на etcdv3 без сплитбрейна
Озонтеховцы уже традиционно радуют серьёзным подходом к официальной части конфы. Ну а гастрофест и вечеринки — это уже на вкус и цвет. В этом году, кстати, заявлены ещё и DJ-сеты.
Короче, годная конфа. И если вы ещё не забили в календаре 12 и 13 сентября под E-CODE, пора этим заняться: https://ecode.ozon.tech/
• опыт обмена множества кастомных схем доставки данных на единую платформу
• история крупной гибридной инфры, мигрировавшей в K8-s
• анатомия хранилища артефактов (и не одного — обещают вскрытие сразу семи решений)
• путь сетевого оборудования к декларативному описанию через DSL
• противостояние конечности облаков за счёт capacity management
• перевод кластеров под управлением Patroni с kube-api на etcdv3 без сплитбрейна
Озонтеховцы уже традиционно радуют серьёзным подходом к официальной части конфы. Ну а гастрофест и вечеринки — это уже на вкус и цвет. В этом году, кстати, заявлены ещё и DJ-сеты.
Короче, годная конфа. И если вы ещё не забили в календаре 12 и 13 сентября под E-CODE, пора этим заняться: https://ecode.ozon.tech/
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Вышел годный инструмент, который помогает изучать Linux на практике
Shell Gym – интерактивный тренажёр командной строки Linux, созданный на основе многолетнего опыта преподавания. По сути, автор выделил ядро iximiuz Labs и превратил его в отдельный демон.
https://github.com/iximiuz/shellgym
👉 DevOps Portal
Shell Gym – интерактивный тренажёр командной строки Linux, созданный на основе многолетнего опыта преподавания. По сути, автор выделил ядро iximiuz Labs и превратил его в отдельный демон.
https://github.com/iximiuz/shellgym
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4
Forwarded from infosec
• Друзья, пришло время провести очередной конкурс. На этот раз мы разыгрываем бумажную версию книги "The Ultimate Kali Linux Book" - это новое издание книги по изучению Kali Linux, которое перевели на русский язык.
• К слову, книга содержит более 800 страниц информации и будет полезна как новичкам, так и опытным специалистам.
• Итоги подведём 8 августа в 10:00, при помощи бота, который рандомно выберет 8 победителей. Доставка для победителей бесплатная в зоне действия СДЭК. Удачи❤
Для участия нужно:
1. Быть подписанным на наш канал: Infosec.
2. Подписаться на канал наших друзей: Мир Linux.
3. Нажать на кнопку «Участвовать»;
4. Ждать результат.
Бот может немного подвиснуть — не переживайте! В таком случае просто нажмите еще раз на кнопку «Участвовать».
#Конкурс
• К слову, книга содержит более 800 страниц информации и будет полезна как новичкам, так и опытным специалистам.
• Итоги подведём 8 августа в 10:00, при помощи бота, который рандомно выберет 8 победителей. Доставка для победителей бесплатная в зоне действия СДЭК. Удачи
Для участия нужно:
1. Быть подписанным на наш канал: Infosec.
2. Подписаться на канал наших друзей: Мир Linux.
3. Нажать на кнопку «Участвовать»;
4. Ждать результат.
#Конкурс
Please open Telegram to view this post
VIEW IN TELEGRAM