Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Динамичный карточный батлер с PVE и PVP-боями онлайн! Собери коллекцию карточных героев, построй свою боевую колоду и вступай в бой с другими игроками.

Cards out!

Карточные, Ролевые, Стратегии

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

DevOps

С этим тегом используют

IT IT юмор Программирование Linux Программист Юмор Сисадмин Все
241 пост сначала свежее
2
atygaev
atygaev
1 год назад

С таким деплоем и врагов не надо⁠⁠

Деплоить в пятницу опасно и безответственно.
Поэтому деплоить надо в субботу.

[моё] IT юмор Программирование Программист Админ DevOps Разработка Разработчики Трудовые будни IT Эффективный менеджер Текст
7
8
raidshadowlegend
raidshadowlegend
1 год назад
Лига Сисадминов

Перенаправление логов из Fluentbit в Seq⁠⁠

Seq — это сервер поиска и анализа структурированных журналов приложений в режиме реального времени. Можно смотреть на него как на своего рода альтернативу для ELK. Хотя лицензия тут тоже не свободная, а использование для юрлиц платное. Но для домашней лаборатории для меня в своё время это оказался превосходный вариант (в принципе я до сих пор считаю так, потому что времени на развертывание Seq тратится несравнимо меньше чем на ELK. Для экспериментов самое то.

В данной статье проведу нехитрую операцию по развертыванию и настройке fluentbit и seq в docker, и настрою отправку собранных логов из fluentbit в seq.

Начнём с создания отдельной сети для наших контейнеров:

docker network create fluent-bit_seq

Установка Seq

Теперь захэшируем пароль, который будет использоваться.

PH=$(echo 'seqPass%%' | docker run --rm -i datalust/seq config hash)

Убедимся, что переменная действительно содержит пароль:

echo $PH

Запускаем контейнер:

docker run --name seq -d --network fluent-bit_seq \ -p8080:80 --restart unless-stopped \ -e ACCEPT_EULA=Y -e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH" \ datalust/seq

Теперь, можем обратиться в браузере к localhost:8080 и залогиниться в Seq с помощью username=admin password=seqPass%%

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост
Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост

Установка Fluentbit

Для начала экспортируем переменную, которая будет содержать каталог из которого будет взята конфигурация Fluentbit.

export sharedFolder=/var/fluent-bit_seq

Запустим временный контейнер, откуда скопируем дефолтный конфиг:

docker run -d --rm --name temp cr.fluentbit.io/fluent/fluent-bit

Скопируем сам конфиг с последующей остановкой ставшего ненужным контейнера:

docker cp temp:/fluent-bit/etc/ $sharedFolder docker stop temp

Теперь еще раз запустим контейнер fluentbit, но уже смонтировав в него каталог с конфигом:

docker run -dti --name fluent-bit --network fluent-bit_seq \ -v $sharedFolder:/fluent-bit/etc \ cr.fluentbit.io/fluent/fluent-bit

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост

По дефолту fluentbit отправляет вывод на stdout. Так что с помощью docker log всегда можно посмотреть что с ним происходит. Наша задача как раз исправить дефолтное поведение.

docker logs fluent-bit

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост

Настройка отправки логов в Seq

Отправляемся в конфиг fluentbit и ищем следующую секцию:

# fluent-bit.conf

[OUTPUT]

name stdout

match *

Заменяем её на указанную ниже, с последующим сохранением:

# fluent-bit.conf

[OUTPUT]

Name http

Match *

Host seq

Port 5341

URI /api/events/raw?clef

Format json_lines

Json_date_key @t

Json_date_format iso8601

Log_response_payload False

Теперь перезапустим контейнер с fluentbit для принятия изменений:

docker restart fluent-bit

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост

Возвращаемся в браузер, открываем Seq, логинимся и теперь можем видеть, что логи из fluentbit отправляются прямиком туда:

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост
Показать полностью 6
Linux IT DevOps Сисадмин Будни сисадмина Туториал Гайд Логи Длиннопост
0
367
TovarishChe
1 год назад
Лига Сисадминов

Огромная просьба к сообществу!⁠⁠

Уважаемые коллеги, на сайте появился некий персонаж @Stravnik. Огромная просьба, если имеется возможность запретить этому персонажу постить в ваших группах - крайне советую это сделать. Человек не знает линукса, K8s, докера, но при всем при этом постит "гайдлайны" которые переполнены ошибками, неточностями, а также плохими практиками. Ребят, я не супер спец сам, ушел в девопс недавно, но имею большой опыт в администрировании различных систем, и то что пишет этот человек и каким пафосом он относится к комментариям, указывающим на его ошибки... Просто финиш. При всем при этом якобы является офигенным специалистом, ведет комюнити DevOPS в СПБ, а также выступает в роли приглашенного эксперта на конференциях. o_O

Я считаю что такой человек не должен учить новичков ни в коем случае. Ко мне часто на работу приходят джуны с курсов, и часто приходится их доучивать и показывать куда копать в саморазвитие, а также править их косяки. Но они при этом имеют хоть какой-то базис от которого можно отталкиватся. Тут же копипаста с разных сайтов без понимания как это вообще работает, и обучение новичков плохому. Во имя ваших же нервов и будущих коллег джунов - ОСТАНОВИТЕ ЭТОГО ЧЕЛОВЕКА!!!

[моё] Бездарность Пафос Негатив Компьютерная помощь Дилетант Эгоцентризм DevOps Linux Без рейтинга Текст
87
Stravnik
Stravnik
1 год назад

Установка Python3.10.10 + OpenSSL 1.1.1 в RHEL 7⁠⁠

Данный пост не претендует на полноту предоставленной информации.
Все действия выполняете на свой страх и риск.
Для понимания поста требуются минимальные знания в администрировании Linux.

Понадобилось мне недавно установить Python3 определенной версии на сервера с ОС RHEL 7. И вот вроде задача простая, но были несколько условий, а именно:

  • На контуре закрыт доступ в сеть Интернет

  • В локальном репозитории нет нужной версии

И еще были требования к минимальным номерам версий, Python должен быть не ниже 3.10.10 и исходя из этого появлялась еще необходимость обновить OpenSSL до версии 1.1.1. После прочтения нескольких статей родилась эта короткая инструкция.

Заходим на сервер, копируем архивы с Python и OpenSSL в папку /tmp и погнали. Начнём с установки OpenSSL версии 1.1.1n.

sudo -s

yum install nano wget yum-utils gcc openssl-devel bzip2-devel libffi-devel perl -y

cp /tmp/openssl-1.1.1n.tar.gz /usr/src

cd /usr/src

tar -xzf openssl-1.1.1n.tar.gz

cd openssl-1.1.1n

./config

make -j $(nproc)

make install

mkdir lib

cp *.{so,so.1.1,a,pc} ./lib

rm -f /usr/src/openssl-1.1.1n.tar.gz

echo 'export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64' >> /etc/profile.d/openssl.sh

source /etc/profile.d/openssl.sh

openssl version

Если последняя команда выведет номер версии отличный от 1.1.1, то выполняем следующее:

mv /usr/bin/openssl /usr/bin/openssl.backup.1.0.2k-fips

ln -s /usr/local/bin/openssl /usr/bin/openssl

С OpenSSL разобрались, теперь приступаем к установке Python версии 3.10.10.

cd /tmp

tar -xzf Python-3.10.10.tgz

cd Python-3.10.10

./configure --prefix=/opt/python310 --with-system-ffi --with-computed-gotos --enable-loadable-sqlite-extensions --with-openssl=/usr/src/openssl-1.1.1n

make -j $(nproc)

make altinstall

rm -f /tmp/Python-3.10.11.tgz

ln -s /opt/python310/bin/python3.10 /usr/bin/python3.10

python3.10 -m pip install pyopenssl

python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)"

На этом всё.

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)

Показать полностью
[моё] Linux IT Python Openssl DevOps Текст
11
Stravnik
Stravnik
1 год назад
GNU/Linux

Добавление Linux в Windows домен⁠⁠

Добавление Linux в Windows домен Linux, Гайд, IT, Windows, DevOps, Active Directory

Всем привет. Понадобилось мне по-быстрому добавить Linux машины в домен Windows.

Из этого родилась эта заметка. Приступаем.

У нас уже есть вся инфраструктура, сервера, DNS сервера (тут не будет гайда по их настройке). Заходим на Linux машину по SSH и поочередно выполняем следующие команды:

# лично я пользуюсь nano

yum install nano -y

# Правим файл

nano /etc/resolv.conf

# Добавляем в него

search <ИМЯ_ДОМЕНА>

nameserver <IP_DNS_сервера>

# Останавливаем и отключаем файервол (для упрощения работы)

systemctl stop firewalld && systemctl disable firewalld

# Правим файл

nano /etc/hosts

# Добавляем в него

<IP_DNS_сервера> <FQDN_DNS_сервера>

# Устанавливаем chrony

yum install chrony -y

# Правим файл

nano /etc/chrony.conf

# Добавляем в него

server <FQDN_DNS_сервера> iburst

# Стартуем необходимые службы

systemctl start chronyd && systemctl enable chronyd

# Устанавливаем дополнительный софт

yum install realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools -y

# Проверяем доступность домена

realm discover <ИМЯ_ДОМЕНА>

# Подключаем машину к домену

realm join -U <АДМИНИСТРАТОР_ДОМЕНА> <ИМЯ_ДОМЕНА>

# Конфигурируем

authconfig --enablemkhomedir --enablesssdauth --updateall

# Включаем необходимые службы

systemctl enable sssd.service && systemctl restart sssd

# Прописываем хостнэйм

hostnamectl set-hostname <FQDN_ЭТОЙ_МАШИНЫ>

# Правим файл

nano /etc/sysctl.conf

# Меняем значения

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

# Применяем изменения

sysctl -p

# Рестартим сетевую службу

systemctl restart network

# Добавляем пользователя в админ группу

nano /etc/sudoers.d/<КОРОТКОЕ_ИМЯ_ДОМЕНА>

# Добаявляем

%<ИМЯ_ДОМЕННОГО_ПОЛЬЗОВАТЕЛЯ>@<ИМЯ_ДОМЕНА> ALL=(ALL) ALL

# Меняем права на файл

chmod 0440 /etc/sudoers.d/<КОРОТКОЕ_ИМЯ_ДОМЕНА>

Это необходимый минимум для включения Linux машины в домен Windows. Да, инструкция не идеальная, но для “попробовать” её достаточно.

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

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)

Показать полностью
[моё] Linux Гайд IT Windows DevOps Active Directory
116
Stravnik
Stravnik
1 год назад

Kubernetes, создание и управление Deployments – K8s. Часть 3⁠⁠

Сегодня предлагаю разобрать следующий по списку объект Kubernetes, а именно Deployment.

Создание и управление Deployments

Команда для создания deployment выглядит так:

kubectl create deployment DEPLOYMENT_NAME --image IMAGE_NAME

Чтобы посмотреть список созданных deployment:

kubectl get deployments

Как и у Pods, у deployments есть команда для отображения подробной информации:

kubectl describe deployments DEPLOYMENT_NAME

Для скейлинга деплоймента можно использовать такую команду:

kubectl scale deployment DEPLOYMENT_NAME --replicas NUM_OF_REPLICAS

Для проверки, что команда сработала вводим:

kubectl get pods

После скейлинга можно посмотреть параметр replica set:

kubectl get rs

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

И теперь, если вы удалите Pod, то он автоматически перезапустится. Таким образом Deployment всегда будет поддерживать количество работающих подов, которое было указано при скейлинге.

Так же можно сделать автоскейлинг:

kubectl autoscale deployment DEPLOYMENT_NAME --min=MIN_NUM_REPLICS --max=MAX_NUM_REPLICAS --cpu-percent=CPU_PERCENT_NUM

Команда для проверки:

kubectl get hpa

Deployment также можно создать с помощью YAML файла. С минимально необходимым YAML файлом вы можете ознакомиться в моем GitHub`е.

И для запуска deployment через yaml файл используется вот такая команда:

kubectl apply -f FILE_NAME.yaml

Для удаления deployment есть команда delete:

kubectl delete deployments DEPLOYMENT_NAME

Обновление Docker Image в Deployment

Посмотреть историю обновлений:

kubectl rollout history deployment/DEPLOYMENT_NAME

Команда для обновления вот такая:

kubectl set image deployment/DEPLOYMENT_NAME CONTAINER_NAME=UPDATED_CONTAINER_NAME --record

Для просмотра статуса обновления:

kubectl rollout status deployment/DEPLOYMENT_NAME

А как откатить последнее выполненное обновление? Легко:

kubectl rollout undo deployment/DEPLOYMENT_NAME

Можно откатиться на любую ревизию:

kubectl rollout undo deployment/DEPLOYMENT_NAME --to-revision=REVISION_NUM

Как обновиться, если вместо версии вы ранее указали latest? Вот так:

kubectl rollout restart deployment/DEPLOYMENT_NAME

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)

Показать полностью
[моё] DevOps Kubernetes IT Текст
0
Stravnik
Stravnik
1 год назад

Главные объекты Kubernetes и работа с Pod – K8s. Часть 2⁠⁠

Главные объекты K8s

  • Pod – объект в котором работают один или больше Docker контейнеров

  • Deployment – сэт одинаковых подов, нужен для Auto scaling и для обновления Docker image, держит минимальное количество работающих подов

  • Service – предоставляет доступ к Deployment через: ClusterIP, NodePort, LoadBalance или ExternalName

  • Nodes – сервера где все это работает

  • Cluster – логическое объединение нодов

И сегодня мы поговорим про Pod.

Создание и управление Pods

kubectl run POD_NAME --image=IMAGE_NAME --port=PORT

Эта команда создаст pod с именем POD_NAME из Docker image с именем IMAGE_NAME и откроет на этом поде порт с номеров PORT. Но есть и второй вариант создания пода:

kubectl apply -f FILE_NAME.yaml

Данная команда создаст файл на основании yaml файла. С минимально необходимым yaml файлом вы можете ознакомиться в моем GitHub`е.

Для вывода списка созданных подов можно использовать следующую команду:

kubectl get pods

Как удалить Pod? Очень просто, для этого есть команда:

kubectl delete pods POD_NAME

Окей, мы создали под, что дальше? А дальше у нас есть следующие команды для работы с Pods:

kubectl describe pods POD_NAME

Данная команда выведет подробнейшую информацию о поде с именем POD_NAME. Тут вы можете увидеть имя ноды на которой запущен данный под, ip адреса, какие volume приаттачены к контейнеру и так далее.

kubectl exec POD_NAME CMD_NAME

Данная команда запускает команду CMD_NAME внутри пода POD_NAME. Для примера:

kubectl exec -it POD_NAME sh

Запустит шелл в интерактивном режиме (ключ -it).

kubectl logs POD_NAME

Данная команда выведет логи пода с именем POD_NAME.

kubectl port-forward POD_NAME LOCAL_PORT:REMOTE_PORT

Данная команда пробросит порт с вашего локального компьютера (LOCAL_PORT) на порт (REMOTE_PORT) пода с именем POD_NAME.

В следующих статьях мы посмотрим на такие объекты k8s как Deployment и Service.

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)

Показать полностью
[моё] Linux DevOps Kubernetes Текст
2
Stravnik
Stravnik
1 год назад

Основы Kubernetes для DevOps – K8s. Часть 1⁠⁠

Что такое Kubernetes?

K8s – это opensource проект разработанный Google на языке Go, изначально разрабатывался для своих же приложений. Первая версия вышла в 2014 году. Kubernetes предназначен для контейнеризированных приложений.

Прежде чем изучать Kubernetes я рекомендую ознакомиться с темой про Docker!

Основные «фишки» Kubernetes:

  • Автоматизация развертывания приложений

  • Автоматизация масштабирования приложений

  • Автоматизация управления приложениями

Из чего состоит K8s?

Основной компонент Kubernetes это Cluster.

Вы создаете Kubernetes Cluster состоящий из Nodes.

Nodes существуют двух типов:

  • Worker Node – сервер на котором запускаются и работают контейнеры.

  • Master Node – сервер который управляет Worker Nodes.

Когда вы запускаете команды управления, они всегда посылаются на Master Node. Напрямую с Worker Node вы не взаимодействуете.

Чуть подробнее про Nodes

На Kubernetes Master Node работают три главных процесса k8s:

  • kube-apiserver

  • kube-controller-manager

  • kube-scheduler

На Kubernetes Worker Node работают два главных процесса k8s:

  • kubelet

  • kube-proxy

Kubernetes Cluster

Обычно в Kubernetes кластере запущена одна Master нода (две и более нод используют для высокодоступных вариантов кластера) и одна Worker нода. Это самый минимальный набор для кластера.

Что может k8s и почему он популярен

  • Service discovery and load balancing. Вы запустили один Docker контейнер в k8s кластере. K8s дает вам доступ к этому Docker контейнеру через ip адрес, через определенный порт на любой Worker через определенный порт на любой Worker ноде или через DNS имя, также если вы запустили несколько копий вашего Docker контейнера, то k8s сделает load balancing между этими контейнерами.

  • Storage orchestration. Вы можете присоединить любой локальный диск или диск из AWS, GCP или Azure к одному или нескольким Docker контейнерам.

  • Automated rollouts and rollbacks. Автоматическое обновление на новую версию Docker Image или возврат на предыдущую версию.

  • Automatic bin packing. Вы создаете k8s кластер, где Kubernetes может запускать Docker контейнеры. Вы указываете сколько процессоров и оперативной памяти нужно каждой копии этих контейнеров, а k8s уже сам решит на каких Worker Node их лучше запускать.

  • Self-healing. Вы указываете сколько копий Docker контейнеров вам нужно и если с контейнером что-то произошло (завис, просто не отвечает и т.д.), то k8s это исправляет.

  • Secret and configuration management. K8s позволяет вам хранить «секреты», например пароли или любую секретную информацию все ваших приложений в Docker контейнере.

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

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)

Показать полностью
[моё] Linux DevOps Kubernetes IT Текст
8
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии