Это копия, сохраненная 13 октября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий неправильно задеплоился здесь: https://2ch.hk/pr/arch/2021-06-29/res/1902319.html (М)
https://youtube.com/watch?v=Ck1SGolr6GI
Я б помог, но в девопсе нихуя не понимаю, только тред перекатил.
Ладно, я не заметил, есть там азур. Но в каком-то ебнутом представлении, зачем билд и интегрейшн делать в дженкисах, чтоб потом на азур лить? В чем проблема на азуре и билдить и т.д?
Сап, девопсы. Есть ли какая-то принципиальная разница между использованием docker compose и kubernetes, если я хочу развернуть приложение на одной машине?
Каэш.
Кубернетес - про отказоустойчивость от многонодовости. А ты кубернетесом на одной ноде убъешь к хренам все преимущество куба. И оверхед еще получишь.
Для одной ноды юзай докер-композ или докер просто, размазанный ансиблом.
Спасибо!
Есть файлы static.Dockerfile и nginx.Dockerfile, но нет самого dockerfile.
Не могу разобраться с тем чтобы заставить это работать.
В файле ридми есть команда для билда: "docker build . --tag имя-проекта"
Но после этой команды вылазит ошибка:
failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount169807584/Dockerfile: no such file or directory
И я не могу понять - команды неактуальные в ридми? Как добавить проект?
Сейчас задача просто развернуть это добро чтобы протестировать, получилось ли у меня решить проблему или нет.
Выручай.
К девам лезть совсем не хочется, опять отфутболят и я даже не пойму кто прав, хочу просто закрыть вопрос и не возвращаться к нему
Всё, решил. Девопсы запрятали докерфайл в пиздях и неправильно описали ридми.
может быть такое, что тебе платят слишком дохуя
скоро лид заметит это
и ты окажешься на улице в очереди за просрочкой
Переделываю локальное окружение тестирования с docker-compose с адовым жонглированием файлами override и yaml anchors... пишу это и чувствую боль на minikube. Скажите, есть ли какой-то стандартный способ как заставить резолвиться все ingress hostnames в ip minikube с хоста системы?
Конечно это не великая проблема сделать руками с нуля: все хостнеймы заданы у меня в 1 структурке (helm) 1 раз, засунуть их скопом в СМ и подкинуть их бинду слушающему на node/host port ввиде файла зоны, и отредактировать systemd-resolved на хосте - не так сложно. Но хотелось бы нативно: хуяк-хуяк, ты понимаешь.
Явно же я не один такой "умный" с такой очевидной хотелкой.
Квест прикольный. Но никогда не запаривался. С миникубом или портфорвард или если 1-2 хостнейма, то руками в hosts
Хостов около 15.
Разработчиков 20.
Редактирование файла хост руками - уже пройденый этап. Который генерит кучу совершенно бестолковых вопросов.
Таки на самом деле я его сейчас и редактирую, только с помощью https://github.com/nginx-proxy/docker-gen на основе меток на контейнерах.
Пожалуй если делать без овер инжиниринга: то во время helm install werf bundle apply надо выгружать все отрендереные hostnames в какойто конфигмап. А после забирать их через kubectl и синхронизировать с /etc/hosts. Благо для интерфейса уже используется makefile, куда в таргет запуска можно просто дописать все костылики. Только вот это (в отличии от ДНС) не покрывает 2,5 машины на винде и (возможно) маке.
Перевелись девопсы. Аноны поигрались с кубернетесом и решили вкатываться в разработку и QA.
Что из CI полезно изучить для саморазвития? Практичного? Если работал или только с велосипедными самопальными системами в статусе пользователя, либо без CI/CD вообще?
Что может быть полезно для небольших проектов на несколько человек? Jenkins как выбор нормально, или лучше что-то ещё?
Дженкинса хватит для всего.
Под прозрачно я имею ввиду таким образом, чтобы не переписывать хеадер Authorization и позволить приложению самому им пользоваться (для всяких review и стендовых окружений смотрящих в интернет). А так же не заниматься допиливанием кода кустомных сервисов для интеграции в SSO.
Как должна выглядеть архитектура этого овна?
Походу нужно пердолить примерно такую схему для прозрачного (для приложения) аутентифицирования:
LDAP (FreeIPA) -> OIDC provider (keycloak) -> http proxy with OIDC (gogatekeeper)
Сложна, сложна... нихуя непонятна.
Пока я тут выдумывал как закрыть свои веб сервисы SSO, нас поломали к хуям (CVE-2021-26084) и слили базу confluence, где было много серетов. да, я блядь знаю что секреты нельзя хранить в такой хуйне, она досталась понаследству, и там было столько говна, что его разгребание никак не вписывалось в рабочие будни состоящие на 90% из файерфайгхтинга... спасибо питуху, теперь вписывается, лел :)
Скажи мне анон, как мне назначить нормальные policy в vault:
Хочу разбить секреты так:
1) каталоги с проектами
2) подкаталоги с общим функциональным назначением
3) плоское пространство секретов на которые нужно поразному давать доступ в зависимости от членства в группе.
Например:
Рога_копыта/backend:
- qa_token - хуйня для QA
- root_password - только для админов
Я знаю, что можно в тупую называть все секреты с нужным префиксом (как я сделал выше: qa и root) и назначать соотвествующие полиси их матчащие, а потом полиси назначать на группы.
Но не хочется блжджад корячить названия секретов. Плюс ко всему это негибко, можно запросто невписаться в понятные префиксы и начать городить хуйню.
Есть еще варианты?
Не забудьте обновить мокрописечный конфлюенс, если с 26 августа еще не обновляли
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-26084
> арбитари экзекьюшн у неавторизованного пользователя
ЗАТО СОВРЕМЕННО!!!111
Нихуя не понимаю в конфлюэнсе, а неймспейсов или чего-то подобного там разве нет?
>арбитари экзекьюшн у неавторизованного пользователя
Охуенно да.
Какого черта для неавторизованого пользователя вообще работают какие-то api методы кроме аутентификации.
>а неймспейсов или чего-то подобного там разве нет
Незнаю, возможности провести аудит насколько правильно он настроен и используется нет.
>>159421
Зафигачил на префиксах, подругому вроде и нельзя.
Странно вообще. Задача-то вроде довольно классическая.
пока собираюсь действовать вот по этому хауту, отговори, подскажи получше, поактуальнее https://habr.com/ru/post/462473/
>Как сейчас принято разворачивать куб-кластер?
Есть готовые сервисы. Выбирай на свой вкус и кошелёк.
https://aws.amazon.com/ru/eks/
https://cloud.google.com/kubernetes-engine
https://azure.microsoft.com/en-us/services/kubernetes-service/
https://www.alibabacloud.com/ru/product/kubernetes
>всё же склоняюсь к ручному развёртыванию
Нахуя? Ты что, дата центр строишь или типа того? Любые твои "ручные развертывания" будут менее производительными, чем готовые сервисы. Потому что у готовых сервисов максимально облегченная ОС, оттюнингованная конкретно под кубернетис.
Ценность образовательная. Кого-то волнует оптимизация и здравый смысл в наше время? Задача получить максимум хайповых строчек в резюме и что бы бизнес это оплатил. Бизнес согласен, так чего же я жду? Перейти в облако я всегда успею, у нас там прод тащем-та
Есть дженкинс. В нем есть немного джоб на freestyle project. В них в каждой указаны параметризированные параметры списком. И если что-то в этом списке меняется, то приходится в каждой джобе менять список параметров руками.
Вопрос: сделать список параметризованных параметров общим для всего дженкинса, чтобы я только выбирал пункт именем параметра, а уже список для выбора отображался тот, что есть где-то внутри дженкинса?
Есть ARG
>Как сейчас принято разворачивать куб-кластер?
Через kubespray. Интегрируешь в свой bootstrap playbook и вперед.
Если тебе хочется прямо руками позапускать kubeadm, поставить etcd, kube-api балансер, повыпускать сертификаты через openssl и т.д. - кто тебе может помешать, открывай инструкцию и делай. ПИЗДЕЦ КАК ИНТЕРЕСНО
>Deckhouse
Если ты знаешь про такую штуку. То Дмитрий Столяров, фюрер проекта выпустившего это freemium ненужно, считает что в среднесрочной перспективе установщики кубирнетис будут так же ненужны, как сейчас ненужны установщики систем виртуализации.
но дело не в том, что бы устанавливать ненужно, а в том, что бы чуть глубже чем никак понимать как оно работает или даже это ненужно? а что нужно, как быть нужным чуть далее чем сейчас?
>поставить etcd, kube-api балансер, повыпускать сертификаты через openssl
Какие по твоему знания можно извлечь из этого? Сейчас 2021 год, камон.
>а что нужно
Имхо нужно быстрее переходить к эксплуатации, и решать реальные проблемы эксплуатации, а не придумывать обучение ради обучения.
>понимать как оно работает
Когда все пизданется на проде ты очень быстро поймешь, базарю. азазазаза
но дело не в том, что бы устанавливать ненужно, а в том, что бы чуть глубже чем никак понимать как оно работает или даже это ненужно? а что нужно, как быть нужным чуть далее чем сейчас?>>170226
коллектив уже в любом случае решил что стэджовый куб будет в офисе, заднюю включать себе дороже, вопрос только в том, как извлечь из этого максимум пользы лично для себя
Поставь ЛБ на каждую ноду. Несколько мегабайт памяти, тебе жалко чтоли?
Если нода упадет... и хуй с ней и её локальным ЛБ.
Kubespray подефолту если не ошибаюсь для того же самого ставит на каждую ноду nginx.
Если на каждую ноду поставить ЛБ, то всё равно чтобы подключиться с второму контролеру нужно знать айпишник любой ноды в кластере. Это решение ничуть не отличается от тупо записать на бумажке айпишник второго контролера. Плюс не любая нода доступна из внешней сети.
Во первых так днс сервер станет единой точкой отказа, а во вторых как его в конфиг клиента прописать? И как сделать чтобы dhcp его возвращал, а не какой-нибудь глобальный днс?
а я вот тут ссылку постил с двухлетним хау ту и там не слова про TLS бутстрапинг. https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/ Это неизбежно? Я ловлю всевозможную дичь при попытке заджойнить воркер ноду - так и должно быть? пик стронгли рилэйтед
>всё равно чтобы подключиться с второму контролеру нужно знать айпишник любой ноды в кластере.
Не понял, какое отношение имеют ip-шники всех нод в кластере к ip-шнику 2 контроллера. кто в кого ходит?
Бред какой-то.
У тебя что control plane разъезжает по всем worker nodes?
>Это решение ничуть не отличается от тупо записать на бумажке айпишник второго контролера
И в чем по твоему тут проблема? Просто прописать второй контроллер в ЛБ на локалхостах всех нод? Ты что постоянно вводишь и выводить новые master ноды? Зачем?
Я щас не троллирую. Может быть ты что-то делаешь неправильно, и как бывает крайне часто, начав с неправильно, приходят за решением как это неправильно "улучшить" добить. Если это действительно прям нужно, я бы поставил сайдкар рядом с локальным ЛБ, который был стучал в kubeapi, спрашивал кто там щас мастер ноды, и релоадил бы балансер с обновленным конфигом.
Кстати я посмотрел на твою 2 картинку, там ровно то решение о котором я тебе и говорю - локальный ЛБ.
Как смонтировать Google Cloud Storage bucket как папку в Docker контейнер?
Если датасет небольшой и только читать - скопируй в инит контейнере.
Если большой или писать - учи приложение работать с s3.
>Если датасет небольшой и только читать - скопируй в инит контейнере.
Вот об этом и вопрос как там его монтировать.
>Если большой или писать - учи приложение работать с s3.
Мне надо чтобы крешдампы куда-то сохранялись после того как куберовский под был уничтожен. Некого там учить работать с S3. Тем более что это Google Cloud.
Или как вы вообще делаете эту самую разработку под докер контейнеры
Не на ощупь же? Или докер уже в самом конце?
Сап, дево-псы.
Ситуация такая: работаю виндовым эникеем. Есть пара свободных машин (чистых), много времени и желание потратить его с пользой для будущей зряплаты. Чо посоветуете почитать/посмотреть/поразворачивать на тестовых машинах, чтобы вкатиться в этот ваш Dev Ops?
ансибл, докер, системы мониторинга графана+прометей+алертменеджер, системы логгирования elk например. Но все это ты можешь и локально в виртуалках/контейнерах делать
Скачал образы из dockerhub но при запуске у меня появляются ошибки что внутри контейнера недостаточно прав на доступ к файлам. Из-за чего такая хрень: версия докера/containerd может влиять? Рукожопость создателя образа! И как вообще дебажить подобные проблемы?
Мимо макака-тестер
Спасибо, погуглю сюда.
>у меня появляются ошибки что внутри контейнера недостаточно прав на доступ к файлам.
Каким файлам, внутри какого контейнера, как запускал
>как вообще дебажить подобные проблемы?
Гуглить научиться, или хотя бы научиться давать вводные данные. Вопрос уровня двач я покакал жидко, почему так может происходить?
То что при запуске контейнера происходит ошибка доступа и речь идет о доступе к файлам внутри контейнера.
ты необучаемый, к сожалению твоя проблема нерешаема
Ну что, пацанчики?
Собрал свою двухпроцессорную поебень с Алика и Авито, держу в курсе, так сказать!
А это значит, что пришло время дикого неистового ПЕРДОЛИНГА
Буду обмазываться kvm, k8s, Openshift до посинения нахуй!
Пожелайте удачи в освоении, советы гуру и обучающие материалы приветствуются.
ДевПопсы тут? Придумал вам тестовое задание, надо написать yml для запуска java maven pipline и тестов на гитлабе. Имя папки с помником: chlen. Если сделайте и я запущу - значит вы готовы. Везде комменты наставьте, что где что означает, комменты через # пишутся. Время до завтра, кто первый напишет, тот и победил.
Сколько процентов выполнения, стажер?
господин разраб
Молодец! Премию получишь 10% в следующем месяце. И с сегодняшнего дня пайплайны ты писать будешь, раз тебе это интересно и у тебя получается.
Кабаныч
потому что Terraform сразу для всего. Любая сколько угодно сложная гибридная инфраструктура.
Конечно же это выгоднее.
Насколько хорошо знать линупсы надо для нормального вката в девопс?
Вроде админю серваки в одной конторе биллинг, веб, несколько бд, днс, дхцп, могу посмотреть там если че то случилось или почему какой то сервис перестал работать, но каких то сверх познаний нет
К примеру на собеседовании встрял на вопросе про описание каждого столбца в top
С докером и ансимблом чисто для себя ради интереса знакомился, прикольно, хочется с этим работать, но на текуем месте не выйдет. Тут сплошное легаси и монолиты и вообще полный пиздец, хочу немного позадрачивать и укатиться в девопсы
жопой читал (
На твоем уровне достаточно, я вообще по сравнению с классическими админами нихуя не знаю.
> К примеру на собеседовании встрял на вопросе про описание каждого столбца в top
Какой-то долбоеб был, не обращай внимания. Ну и отвечать надо с достоинством.
Правильный ответ:
Топ в своей практике не использую. Для скриптов и получения краткой информации есть ps. Если нужно сидеть и караулить процесс, что бывает редко, я использую htop. А вообще, я в состоянии настроить мониторинг и алертинг, чтобы видеть актуальное состояние машин и получать уведомления.
> С докером и ансимблом чисто для себя ради интереса знакомился
Технологии надо знать хорошо. Учи гит, докер и ансибл для начала, можно мониторинг поизучать, это будет плюсом:
Zabbix-стэк
Prometheus + node-explorer + alertmanager + cAdvisor + Grafana,
elk-стэк
Jenkins тоже очень желательно. Быстро его не осилишь, но простейший пайплайн надо уметь написать. И знать такие вещи, как webhooks. git-hooks, сборка из разных веток.
Зарегистрируйся в любом облаке, там есть бесплатный период, посмотришь, как это все работает и какие услуги предоставляются. Там же будешь создавать вм-ки и на них все свое учебное говно запускать.
Молодой перспективный, только вкатился
>Какой-то долбоеб был, не обращай внимания.
Отнють. Просто этот вопрос на который не ожидают 100% ответа. Это нормально не ответить полностью. Я точно не отвечу за все поля.
Но если человек не знает что значит: pid, la, чем отличается virt от res, что такое wa и st метрики CPU, почему всю память сожрал buffer/cache, а available еще больше свободно... то значит у человека мало опыта, и скорее всего он такой NENUJEN.
Можно подумать в ps и htop мокрая писька которую надо ставить сбоку, офигенный тащемто заход на собеседование с мокрых писек, что-то другое показывается.
Как много намониторит кандидат не могущий инто в top с помощью:
>Prometheus + node-explorer + alertmanager + cAdvisor + Grafana,
>скачать бесплатно докер-композе графане дашборде стек оверфлоу без регистрации и смс...
вопрос конечно риторический.
мимо мидол
Во-первых, у него не спросили про метрики, у него спросили про top.
Во-вторых, по-твоему, все, что надо "ставить сбоку" это плохо? mc и screen тоже?
Высер про "скачать бесплатно" вообще не понял. Ты считаешь, что мониторинг и докер-композ изучать не надо?
Сап, нюфаг хочет настроить себе CI/CD для своих проектов, поэтому прошу советов мудрых, ибо не знаю с чего начать.
Суть такая: есть приложение которое я говнячу, оно запускается в докер контейнере и лежит в единственной ветке в гите - master.
Все настройки там для прода (реальный домен в allowed хостах, постгрес как бд, и всё такое) и каждый раз чтобы запустить его локально приходится пердолиться и править некоторое говно, чтобы запустить его на SQLite и с локальным айпишником, к примеру.
Хочу узнать как вообще правильно делать dev и production ветки, как настроить автосборку по пушу в гит и всё вот такое.
Но не могу даже нагуглить ничего толкового.
Если бы вы скинули какой нибудь мануал для совсем тупых, было бы замечательно. С меня как всегда, очевидно
>Во-вторых, по-твоему, все, что надо "ставить сбоку" это плохо? mc и screen тоже?
В основно да. В контейнерах таких утилит как htop, mc нет. Нужно уметь обходиться без них.
mc - ненужно стоит признать что пользуюсь им иногда для копирования файлов по ssh, когда незнаю где они точно лежат и для просмотра архивов
screen - переопределяет бинды vim = 146% ненужно.
>Высер про "скачать бесплатно" вообще не понял.
Если человек не разобрался с более простыми вещами, то мониторинг он сможет настроить при помощи подобного запроса к гуглу.
>Ты считаешь, что мониторинг и докер-композ изучать не надо?
Всему своё время.
>>209983
Начать неплохо с описания своего приложения в docker-compose.
С помощью файла docker-compose.override.yml можно переопределять базовый шаблон. Например описать продовую инсталяцию в базовом docker-compose.yml, но при развертывании на dev подкладывать (подключать опцией) файл override, где ты например можешь заменить postgres на sqlite (очень плохой пример).
Все окружения должны конфигурироваться посредством env. Т.е. нужно чтобы твой docker-compose умел кушать переменные окружения и подставлять их в контейнеры, которые в свою очередь их тоже кушают. Ты должен завести 2 файла описывающих переменные окружения: для dev и prod. Для dev - положи в репозиторий, для прод - оставь лежать на сервере, чтобы с репозитория его не спиздили. Про k8s и его серкреты, hashicorp vault почитаешь как с этим разберешься.
>Если бы вы скинули какой нибудь мануал для совсем тупых
12 factor app, это не мануал, это как должно быть. How-to сам нагуглишь.
Спасибо, буду дрочить компоузы.
Как вообще в реальных проектах работают дев ветки? Там полностью "боевой" сетап с нормальной бд и этим все, которые разработчики у себя поднимают, или нет?
>можешь заменить postgres на sqlite (очень плохой пример).
И почему вот это плохой пример?
При пуше в ветку, которая матчится как дев ветка, запускается новое дев окружение (важно что именно новое и чистое, мы тестируем не накопленые ошибки, а только новые), запускаются тесты (все которые идут быстро, юнит тесты например) и т.д.
Разработчик получает в чатик ссылку с url как получить доступ до развернутого стенда, либо сообщение об ошибке.
Если этим развертыванием долго не пользовались, по таймауту, по удалению ветки - оно удаляется.
Это хорошо ложится на k8s и gitlab с его абстракцией environments.
>И почему вот это плохой пример?
Потому что обычные базы как правило слушают сокет, а sqlite линкуется с приложением. Т.е. меняется не просто контейнер который слушает какойто сокет, а меняется конструкция приложения.
>то значит у человека мало опыта, и скорее всего он такой NENUJEN.
То значит человек просто не пользовался top. Я, нахуй, top запускал от силу пару раз за 3+ года деятельности девопсером. Нахуй не нужно. Накручиваешь себе метрики и алерты, и живешь спокойно.
Нужно раз и навсегда расставить все точки над i по поводу жестких дисков.
Допустим, у меня на сервере с гипервизором N Терабайт быстрых nvme дисков и 4N Терабайта медленных HDD.
Как распределять диски при создании виртуалок?
1. В какие разделы можно подключать медленные жесткие диски? В какие категорически нельзя?
2. По шкале от 0 до 10 что из этого требовательно к скорости дисков:
- Статика на nginx
- Динамика на php
- Бэкенд на Tomcat
- База данных
- Дженкинс
- Гитлаб
- Сервер мониторинга
Инбефо: бэкапы. Я их уже настроил.
Какой же зумерский подход.
каждая из этих сущностней может быть загружена по-разному в зависимости от того как ее использую.
Если тебе кто-то и ответит, то такие же непрофессиональные зумеры.
>N Терабайт быстрых nvme дисков и 4N Терабайта медленных HDD
ладно есть решение для тебя:
берешь и ебошишь lvm cache.
О, браток, спасибо от души. Прям то, что мне нужно, пойду пердолиться, чтоб зумером не быть
Книжки какие, статьи?
Спасибо.
Как меня заебала эта тупая пизда с противным голосом в предложках. Будь моя воля наделал бы картинок боевых свиней с ней
1) Нахуя? Вот читаю статья аля что это для чего нужно. И там везде просто общие фразы: "ну, это, контейнеры запускать". Их же и так можно запустить. Вот просто зачем? Зачем это нужно? Какую проблему эта фигня решает?
2) Почему в одной Worker Node может быть несколько Pod, и в одном Pod несколько Container? Почему нельзя просто сделать 1 Worker Node в нём 1 Pod в нём 1 Container. Ну или хотябы в 1 Pod только 1 Container? К чему вообще эти числа привязаны, зачем разделение, зачем в 1 Pod 100 контейнеров?
1. в Мире Белых Людей очень дорого устраивать заседания, созвоны и тд заебы людей. Выгоднее попросить программистов написать приложение для кубера и потом в облаке запустить.
В России ты просто покупаешь сервера и программисты как-нибудь разворачивают. Все равно им деваться некуда. Время машин дороже времени людей.
2. Рыночная конкуренция.
Если будешь ебать вола, то конкурент в кубере быстренько все развернет и обгонит тебя.
В России не рыночек решает, а Связи. Спешить никуда не надо.
По поводу остального вообще неебу. Задротские вопросы какие-то.
Мимо-кабанчик
> Почему нельзя просто сделать 1 Worker Node в нём 1 Pod в нём 1 Container
Ты только что придумал узкоспециализированную виртуальную машину. Или ускоспециализированный сервер.
Как это пофиксить? Можно как-то добавить кнопок на 3й стейдж чтобы вручную нажимать только те, на какие хосты хочешь деплоиться? Или как-то передавать данные о хостах при деплое?
Привет, ты че еблан.
Раздели нахуй CI и СD. Тесты гоняй в одном пайплайне, билди в другом (или расширении первом) и последним степом билда деплой джарник в артефактори или докер в докер репозиторий, че ты там админишь. И отдельно деплой в различные среды.
Прикол в том что с проекта съебался девопс, новый неизвестно когда будет, я хз че тот там намутил, но сейчас надо разгребать
Я думал норма мутить в одном пайплайне build а затем deploy
1) Единообразия доставки любого софта, повторямости конфигурации при смене версий вверх и вниз, оркистрации механизм поиска контейнерами своих "контрагентов", последовательность запуска и обновления сервисов, отказоустойчивость и маштабирование, единообразный мониторинг и логирование, лимиты, права доступа, стандартный интерфейс конфигурации в том смысле, что это как будто бы новый "Linux", который все знаю и ожидают этого знания от других, практически полная абстракция от железа я, например, гоняю один и тот же оче параметризованый чарт от kind на локалхосте до высоко нагруженого прода со всеми промежуточными остановками (а так же: автотестами, "кнопочками понажимать" в CI мапящимися в хуки и т.д.), но это не показательно, я прост ебанутый, да... хуй знает, может чтото забыл. Заебался чот на работке.
И самое главное "забыл": все перечисленое выше НЕ идет из коробки.
2) Потому что pod нужен для того чтобы контейнеры запускались в 1 неймспейсе с общими волюмами и на одной ноде. Пример: php-fpm + nginx, мне нафиг не всрался дополнительный service discovery между каждым php и nginx (это не бесплатно), я просто запускаю первый на localhost, а второй находясь с ним в одном сетевом неймспейсе без всяких SD может сразу с ним общаться.
>Почему нельзя просто сделать 1 Worker Node в нём 1 Pod в нём 1 Container.
Потому что затраты на запуск 1 среднестатистического контейнера гораздо меньше чем затрат на запуск рантайма для запуска 1 контейнера. Смекаешь?
Амазон обещал ворваться и все изменить своими микровиртуалками - да что-то не стрельнуло.
>К чему вообще эти числа привязаны
К архитектуре системы.
>зачем в 1 Pod 100 контейнеров
Низачем.
Нужно просто скопировать 3 джобу столько раз сколько тебе надо.
---
Сложность тут возникает как правильно скопировать.
На мой взгляд нужно сделать так:
- Если в джобе использовались variables (для канкатенации строк например, которая в этом случае неполноценная) то их нужно вынести в отдельный анчор: как list для script, состоящий из шелового определения переменных, с полноценной канкатенацией и любыми преобразованиями (sed|grep|awk|cut|какими_угодно) и подключать этот анчор (делающий тожесамое но лучше) в script.
- Преобразовать джобу чтобы она принимала параметр хоста через переменную из variables.
- Всю джобу за исключением variables сделать анчером.
- Создавать новые джобы-копии состоящие из анчера выше и 1 (2) строчки задания соответствующего variable (твоего хоста).
Тоже самое можно провернуть с environments (gitlab) - вероятно это даже гибче, так же местами можно использовать extends но это если ты пидор и любишь через задний ход
Для первого (git) очевидно, нужно не изобретать велосипед, а взять готовую систему CI которая умеет своим агентом это делать. (например gitlab)
Для второго честно говоря не ябу как работает dvc, но вангую примерно как lfs или submodules задача сводится к: использовать кешь, сделать так чтобы ключем адресации к кешу был не дайджест (хешь) объемнного контента, а небольшой файлик, исключить возможные гонки (кешь должен быть не обычной директорией на хосте)
- Собирать многостадийный докер контейнер
- Не пулить dvc до сборки контейнера, пулить изнутри сборки (из собираемого образа), нужные ключи/файлы можно пробросить через buildkit/werf сильно рекомендую последний для такой задачи.
- Засунуть манифест со ссылкой на dvc контент в соотвествующую директорию сборки этого контента (если это не делается поумолчанию) и закоммитить (и потом подобающе обновлять). Если его версия вдруг хранится в гите не ябу, как например хранится версия сабмодулей - то извлечь этот манифест из гита и ДОПОЛНИТЕЛЬНО (не ломая обычный сценарий использования) положить в виде файлика в директорию, закоммитить. Если dvc не умеет читать манифест из файла, а читает только из гита - значит создавать на момент сборки временный 1но разовый репозиторий гит, импортировать dvc конфиг туда и загружать dvc контент. (это выглядит костыльно, но по ресурсам это бесплатно)
- На каждый отдельно версифицированный dvc контент отдельный Image в Dockerfile. В "сборке" имейджа просто пулится dvc контент (выкрутасы описаны выше)
- На этапе сборки собствено софта: копируются загруженые артифакты из слоев выше (а не dvc), запускается сборка.
- Можно вытащить артифакт сборки из образа контейнера, если образ не конечная цель.
Таким образом:
- Собрав 1 раз последний контейнер (т.е софт) мы прогреем кеши скачаным контентом dvc.
- Ключем доступа к контенту будет закомиченый маленький файлик. Докер демон во время сборки без скачивания dvc сможет понять, что контент адресуемый этим файликом не изменился, не будет его долго скачивать, а возьмет готовым с локалхоста (контейнера с кешем)
Это будет хорошо работать в сценарии редкого изменения dvc контента.
---
Но если изменения частые, можно перейти к нескольким уровням кеша.
Например импользуя werf можно строго по той же логике собирать предварительно кешированные артифакты и так же их использовать.
Но заюзать хитрую особенность werf: он всегда скачивает файлы из гита во 2 слой. В независимости от того хочешь ли ты их там использовать или нет.
Таким образом у нас появляется возможность запулить артифакты 2 раза:
- 1 раз из 2 слоя подефолту: зафетчить dvс и переключиться на нужную версию файлов. Сделав тем самым базовый слой.
- 2 раз в слое выше, когда файл ссылка/ключ на dvс контент изменился, переключиться на необходимую dvс версию на базе уже имеющегося скачаного т.е. загрузив только недостающее.
Логика работы остается та же. Только при изменении dvc манифеста загрузка идет с какого-то базового образа.
Нужно быть аккуратным: настроить dvc так чтобы не менялся atime и mtime при 2 pull у необновляемых файлов, а то файлы будут скопированны в оверлейной fs (изменение атрибута = изменение файла = его копирование). Если он подефолту меняет - можно какой-нибудь костылик сбоку сделать, типо восстановления атрибутов (не уверен что сработает), или загружать 2 раз в новое временное место и потом синхронизировать только изменения и временное удалять в одном слое.
Базовый образ лучше делать от транка, откуда все бренчуется. (но он наверное сам рано или поздно сделается, не уверен).
Можно еще кcтати кешь с хоста заюзать для первоначальной монопольной сборки (например ночью/переодически), доведя количество уровней кеша до 3.
---
Сам не понял, нахуя я это все тут написал. Ебанутый, хуле.
Для первого (git) очевидно, нужно не изобретать велосипед, а взять готовую систему CI которая умеет своим агентом это делать. (например gitlab)
Для второго честно говоря не ябу как работает dvc, но вангую примерно как lfs или submodules задача сводится к: использовать кешь, сделать так чтобы ключем адресации к кешу был не дайджест (хешь) объемнного контента, а небольшой файлик, исключить возможные гонки (кешь должен быть не обычной директорией на хосте)
- Собирать многостадийный докер контейнер
- Не пулить dvc до сборки контейнера, пулить изнутри сборки (из собираемого образа), нужные ключи/файлы можно пробросить через buildkit/werf сильно рекомендую последний для такой задачи.
- Засунуть манифест со ссылкой на dvc контент в соотвествующую директорию сборки этого контента (если это не делается поумолчанию) и закоммитить (и потом подобающе обновлять). Если его версия вдруг хранится в гите не ябу, как например хранится версия сабмодулей - то извлечь этот манифест из гита и ДОПОЛНИТЕЛЬНО (не ломая обычный сценарий использования) положить в виде файлика в директорию, закоммитить. Если dvc не умеет читать манифест из файла, а читает только из гита - значит создавать на момент сборки временный 1но разовый репозиторий гит, импортировать dvc конфиг туда и загружать dvc контент. (это выглядит костыльно, но по ресурсам это бесплатно)
- На каждый отдельно версифицированный dvc контент отдельный Image в Dockerfile. В "сборке" имейджа просто пулится dvc контент (выкрутасы описаны выше)
- На этапе сборки собствено софта: копируются загруженые артифакты из слоев выше (а не dvc), запускается сборка.
- Можно вытащить артифакт сборки из образа контейнера, если образ не конечная цель.
Таким образом:
- Собрав 1 раз последний контейнер (т.е софт) мы прогреем кеши скачаным контентом dvc.
- Ключем доступа к контенту будет закомиченый маленький файлик. Докер демон во время сборки без скачивания dvc сможет понять, что контент адресуемый этим файликом не изменился, не будет его долго скачивать, а возьмет готовым с локалхоста (контейнера с кешем)
Это будет хорошо работать в сценарии редкого изменения dvc контента.
---
Но если изменения частые, можно перейти к нескольким уровням кеша.
Например импользуя werf можно строго по той же логике собирать предварительно кешированные артифакты и так же их использовать.
Но заюзать хитрую особенность werf: он всегда скачивает файлы из гита во 2 слой. В независимости от того хочешь ли ты их там использовать или нет.
Таким образом у нас появляется возможность запулить артифакты 2 раза:
- 1 раз из 2 слоя подефолту: зафетчить dvс и переключиться на нужную версию файлов. Сделав тем самым базовый слой.
- 2 раз в слое выше, когда файл ссылка/ключ на dvс контент изменился, переключиться на необходимую dvс версию на базе уже имеющегося скачаного т.е. загрузив только недостающее.
Логика работы остается та же. Только при изменении dvc манифеста загрузка идет с какого-то базового образа.
Нужно быть аккуратным: настроить dvc так чтобы не менялся atime и mtime при 2 pull у необновляемых файлов, а то файлы будут скопированны в оверлейной fs (изменение атрибута = изменение файла = его копирование). Если он подефолту меняет - можно какой-нибудь костылик сбоку сделать, типо восстановления атрибутов (не уверен что сработает), или загружать 2 раз в новое временное место и потом синхронизировать только изменения и временное удалять в одном слое.
Базовый образ лучше делать от транка, откуда все бренчуется. (но он наверное сам рано или поздно сделается, не уверен).
Можно еще кcтати кешь с хоста заюзать для первоначальной монопольной сборки (например ночью/переодически), доведя количество уровней кеша до 3.
---
Сам не понял, нахуя я это все тут написал. Ебанутый, хуле.
видимо, это было на замену kubernetes до того kubernetes стал популярным.
А что тебя вообще беспокоят эти вопросы?
Как сервис ни назови, лишь бы продавался.
При таком масштабе как в Amazon любая хрень находит своего клиента и продается
Ты бы показал что делаешь
привет. после того как centos разуплотнился, какой смысл этим заниматься?
Даже корпоратив с него начнет убегать.
>SELF-SUPPORT (1 YEAR)
>Total US$349
Ну охуеть теперь.
плюсы Редхата слишком эфемерны. Это, в основном, наебалово.
Нет никакой надежности даже если ты купишь техподдержку.
Ты какими-то не теми категориями мыслишь.
Центос какой-то, поддержка за $349, кого это ебет вообще?
Сертификаты редхата получают не потому что "редхат круто", а потому что так можно влезть в жирную контору на правах "сертифицированного сеньора-помидора".
Тот же опеншифт используется в крупных банках и зарплата у шифтовиков ебанись.
Это ты не теми мыслишь... сертификаты в 2022? Але?
Да предметная область меняется быстрее чем придумывают эти сертификаты.
Сеньеры с сертификатами? Ты таких сам знаешь?
>можно влезть в жирную контору на правах "сертифицированного сеньора-помидора"
С таким подходом можно влезть разве что в гос парашу с зарплатой 100 т.р. потолок.
> Сеньеры с сертификатами? Ты таких сам знаешь?
Да, знаю.
В остальном не стану переубеждать, думай как хочешь. Я написал то, что знаю и вижу.
а зачем отдельный девопс конторе с одним программистом в штате? Я вполне справлюсь с настройкой, заодно новые знания получу. Вот только нужно best practices узнать
Как ты себе представляешь ответ на столь неконкретный вопрос?
Но в целом мысль правильная: для проекта из 1 человека хватит 1 статического dev сервера и простейшей ci на баш работающей на хостовых ранерах.
>>254057
>нужно best practices узнать
Best practices - это весьма маленькие документы можешь погуглить и почитать. А потом приходить с конкретными вопросами.
Читни обязательно: 12 factor app, docker best practice.
Спасибо, направление движения понятно, буду копать дальше
По слухам была много лет назад, админом называлась, когда фирмы в своих же зданиях серверные размещали, туда компьютеры покупали, и там нужно было линуксы настраивать.
Сейчас же либо виртуальная машина ориендуется где всё настроено, либо в облако.
> А что есть такая профессия как установить и настроить сервер ubuntu, сделать проброс портов, ipv6 настроить?
Не, нормально
Если на эти данные не действует какой-то закон, запрещающий это, то вообще пофиг.
>An exception occurred in driver: SQLSTATE[08006] [7] timeout expired
Не коннектится, ссцука!
Нашёл, что для трафика между App Engine && Google Cloud SQL надо добавить Serverless VPC access.
Добавил, и всё равно приложение не видит БД.
Приложение и БД в одном проекте, в одной локации, и типа в одной приватной сети.
Как это отлаживать — я пока не понимаю.
Хэлп! Уже джва дня потратил на это чудо
>Как это отлаживать — я пока не понимаю.
Не знаешь как telnet.exe запускается?
Пиздец.
Девопс менее чем с 10 летним опытом в ИТ - не девопс.
Ну поищи сам. Если не запускается - напиши на питоне аналог.
Говорю же: нихуя нет инженерной смекалки у вкатунов.
Думаю тратит от силы час в день, может и меньше. Наверно можно сразу устраиваться в 3 легасные помойки и делать 300к+
А потом будешь на трех созвонах одновременно сидеть.
Сычев, что ты там мешкаешься? Письма не приходят еще, я проверял... Алло Сычев, алло, меня слышно, почему ты на звонки в скайпе не отвечаешь? Там у клиентов ничего не работает, страница с задачами не открывается? Вася говорит что инстанс упал, посмотри. Сычев, слышь, я поговорил с твоим начальством, они сказали что ты развернешь приложение, времени нет, таски стоят.
Хочу чтобы docker-compose, когда у сервиса валится хелсчек ребутал не только этот сервис, но ещё и парочку соседних. Есть какое-то изкоробочное решение или надо костыли пердолить?
Без костылей NIQUAQ.
В качестве простого костыля можешь написать wrapper вокруг своего валящегося процесса, и заставить его дергать docker api из контейнера (или прокси для докер апи).
Но это говно ебаное, повышается связаность несвязаных кусков, стремно такое поддерживать.
много времени не займу.
Скажите, куда легче вкатиться, в Java или DevOps ?
админил линуксы, эксели с вордом.
знаю чуть сети, чуть ансиболь, чуть докера.
Лучше девопс, не? Джава тошнотная, будешь сидеть биллинги писать.
У меня есть проект, в нём разворачивается два контейнера клиент и сервер, в каждом Убунту.
Вот файл docker-compose:
version: "3.8"
services:
serverbox:
build: serverbox/
command: ls -la
#command: /bin/bash -c ./server.sh
clientbox:
build: clientbox/
Вот Dockerfile:
FROM ubuntu:20.04
COPY to-be-copied .
Моя цель, чтобы при создании контейнера для сервера туда помещался скрипт server.sh, расположенный в той же папке, что и докерфайл конкретно в этом примере он копируется из вложенной папки to-be-copied, который бы потом запускался по команде из docker-compose.
Но я вижу, что этого не происходит. Если делать просто docker image, то нужный скрипт в образ попадает:
leva@debian:~/genesys_test/serverbox$ docker build -t sample-image .
Sending build context to Docker daemon 3.584kB
Step 1/2 : FROM ubuntu:20.04
---> d13c942271d6
Step 2/2 : COPY to-be-copied .
---> Using cache
---> c687aac09195
Successfully built c687aac09195
Successfully tagged sample-image:latest
leva@debian:~/genesys_test/serverbox$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
leva@debian:~/genesys_test/serverbox$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19ad4c90833f run-testsh_clientbox "bash" About a minute ago Exited (0) About a minute ago run-testsh_clientbox_1
a22fbf23d1cf run-testsh_serverbox "ls" About a minute ago Exited (0) About a minute ago run-testsh_serverbox_1
leva@debian:~/genesys_test/serverbox$ docker run sample-image
leva@debian:~/genesys_test/serverbox$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
leva@debian:~/genesys_test/serverbox$ docker run -it sample-image
root@9b16bf0ab321:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin server.sh srv sys tmp usr var
А если я делаю то же самое через docker compose, используя этот же докерфайл, его нет:
leva@debian:~/genesys_test$ bash run-test.sh
Building serverbox
Sending build context to Docker daemon 4.608kB
Step 1/2 : FROM ubuntu:20.04
---> d13c942271d6
Step 2/2 : COPY to-be-copied .
---> Using cache
---> c687aac09195
Successfully built c687aac09195
Successfully tagged compose_test_serverbox:latest
Building clientbox
Sending build context to Docker daemon 2.048kB
Step 1/1 : FROM ubuntu:20.04
---> d13c942271d6
Successfully built d13c942271d6
Successfully tagged compose_test_clientbox:latest
Creating run-testsh_clientbox_1 ... done
Creating run-testsh_serverbox_1 ... done
Attaching to run-testsh_clientbox_1, run-testsh_serverbox_1
serverbox_1 | total 56
serverbox_1 | drwxr-xr-x 1 root root 4096 Jan 20 11:01 .
serverbox_1 | drwxr-xr-x 1 root root 4096 Jan 20 11:01 ..
serverbox_1 | -rwxr-xr-x 1 root root 0 Jan 20 11:01 .dockerenv
serverbox_1 | lrwxrwxrwx 1 root root 7 Jan 5 16:47 bin -> usr/bin
serverbox_1 | drwxr-xr-x 2 root root 4096 Apr 15 2020 boot
serverbox_1 | drwxr-xr-x 5 root root 340 Jan 20 11:01 dev
serverbox_1 | drwxr-xr-x 1 root root 4096 Jan 20 11:01 etc
serverbox_1 | drwxr-xr-x 2 root root 4096 Apr 15 2020 home
serverbox_1 | lrwxrwxrwx 1 root root 7 Jan 5 16:47 lib -> usr/lib
serverbox_1 | lrwxrwxrwx 1 root root 9 Jan 5 16:47 lib32 -> usr/lib32
serverbox_1 | lrwxrwxrwx 1 root root 9 Jan 5 16:47 lib64 -> usr/lib64
serverbox_1 | lrwxrwxrwx 1 root root 10 Jan 5 16:47 libx32 -> usr/libx32
serverbox_1 | drwxr-xr-x 2 root root 4096 Jan 5 16:47 media
serverbox_1 | drwxr-xr-x 2 root root 4096 Jan 5 16:47 mnt
serverbox_1 | drwxr-xr-x 2 root root 4096 Jan 5 16:47 opt
serverbox_1 | dr-xr-xr-x 310 root root 0 Jan 20 11:01 proc
serverbox_1 | drwx------ 2 root root 4096 Jan 5 16:50 root
serverbox_1 | drwxr-xr-x 5 root root 4096 Jan 5 16:50 run
serverbox_1 | lrwxrwxrwx 1 root root 8 Jan 5 16:47 sbin -> usr/sbin
serverbox_1 | drwxr-xr-x 2 root root 4096 Jan 5 16:47 srv
serverbox_1 | dr-xr-xr-x 13 root root 0 Jan 20 11:01 sys
serverbox_1 | drwxrwxrwt 2 root root 4096 Jan 5 16:50 tmp
serverbox_1 | drwxr-xr-x 13 root root 4096 Jan 5 16:47 usr
serverbox_1 | drwxr-xr-x 11 root root 4096 Jan 5 16:50 var
run-testsh_serverbox_1 exited with code 0
run-testsh_clientbox_1 exited with code 0
Весь проект: https://dropmefiles.com/vAMgF
У меня есть проект, в нём разворачивается два контейнера клиент и сервер, в каждом Убунту.
Вот файл docker-compose:
version: "3.8"
services:
serverbox:
build: serverbox/
command: ls -la
#command: /bin/bash -c ./server.sh
clientbox:
build: clientbox/
Вот Dockerfile:
FROM ubuntu:20.04
COPY to-be-copied .
Моя цель, чтобы при создании контейнера для сервера туда помещался скрипт server.sh, расположенный в той же папке, что и докерфайл конкретно в этом примере он копируется из вложенной папки to-be-copied, который бы потом запускался по команде из docker-compose.
Но я вижу, что этого не происходит. Если делать просто docker image, то нужный скрипт в образ попадает:
leva@debian:~/genesys_test/serverbox$ docker build -t sample-image .
Sending build context to Docker daemon 3.584kB
Step 1/2 : FROM ubuntu:20.04
---> d13c942271d6
Step 2/2 : COPY to-be-copied .
---> Using cache
---> c687aac09195
Successfully built c687aac09195
Successfully tagged sample-image:latest
leva@debian:~/genesys_test/serverbox$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
leva@debian:~/genesys_test/serverbox$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19ad4c90833f run-testsh_clientbox "bash" About a minute ago Exited (0) About a minute ago run-testsh_clientbox_1
a22fbf23d1cf run-testsh_serverbox "ls" About a minute ago Exited (0) About a minute ago run-testsh_serverbox_1
leva@debian:~/genesys_test/serverbox$ docker run sample-image
leva@debian:~/genesys_test/serverbox$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
leva@debian:~/genesys_test/serverbox$ docker run -it sample-image
root@9b16bf0ab321:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin server.sh srv sys tmp usr var
А если я делаю то же самое через docker compose, используя этот же докерфайл, его нет:
leva@debian:~/genesys_test$ bash run-test.sh
Building serverbox
Sending build context to Docker daemon 4.608kB
Step 1/2 : FROM ubuntu:20.04
---> d13c942271d6
Step 2/2 : COPY to-be-copied .
---> Using cache
---> c687aac09195
Successfully built c687aac09195
Successfully tagged compose_test_serverbox:latest
Building clientbox
Sending build context to Docker daemon 2.048kB
Step 1/1 : FROM ubuntu:20.04
---> d13c942271d6
Successfully built d13c942271d6
Successfully tagged compose_test_clientbox:latest
Creating run-testsh_clientbox_1 ... done
Creating run-testsh_serverbox_1 ... done
Attaching to run-testsh_clientbox_1, run-testsh_serverbox_1
serverbox_1 | total 56
serverbox_1 | drwxr-xr-x 1 root root 4096 Jan 20 11:01 .
serverbox_1 | drwxr-xr-x 1 root root 4096 Jan 20 11:01 ..
serverbox_1 | -rwxr-xr-x 1 root root 0 Jan 20 11:01 .dockerenv
serverbox_1 | lrwxrwxrwx 1 root root 7 Jan 5 16:47 bin -> usr/bin
serverbox_1 | drwxr-xr-x 2 root root 4096 Apr 15 2020 boot
serverbox_1 | drwxr-xr-x 5 root root 340 Jan 20 11:01 dev
serverbox_1 | drwxr-xr-x 1 root root 4096 Jan 20 11:01 etc
serverbox_1 | drwxr-xr-x 2 root root 4096 Apr 15 2020 home
serverbox_1 | lrwxrwxrwx 1 root root 7 Jan 5 16:47 lib -> usr/lib
serverbox_1 | lrwxrwxrwx 1 root root 9 Jan 5 16:47 lib32 -> usr/lib32
serverbox_1 | lrwxrwxrwx 1 root root 9 Jan 5 16:47 lib64 -> usr/lib64
serverbox_1 | lrwxrwxrwx 1 root root 10 Jan 5 16:47 libx32 -> usr/libx32
serverbox_1 | drwxr-xr-x 2 root root 4096 Jan 5 16:47 media
serverbox_1 | drwxr-xr-x 2 root root 4096 Jan 5 16:47 mnt
serverbox_1 | drwxr-xr-x 2 root root 4096 Jan 5 16:47 opt
serverbox_1 | dr-xr-xr-x 310 root root 0 Jan 20 11:01 proc
serverbox_1 | drwx------ 2 root root 4096 Jan 5 16:50 root
serverbox_1 | drwxr-xr-x 5 root root 4096 Jan 5 16:50 run
serverbox_1 | lrwxrwxrwx 1 root root 8 Jan 5 16:47 sbin -> usr/sbin
serverbox_1 | drwxr-xr-x 2 root root 4096 Jan 5 16:47 srv
serverbox_1 | dr-xr-xr-x 13 root root 0 Jan 20 11:01 sys
serverbox_1 | drwxrwxrwt 2 root root 4096 Jan 5 16:50 tmp
serverbox_1 | drwxr-xr-x 13 root root 4096 Jan 5 16:47 usr
serverbox_1 | drwxr-xr-x 11 root root 4096 Jan 5 16:50 var
run-testsh_serverbox_1 exited with code 0
run-testsh_clientbox_1 exited with code 0
Весь проект: https://dropmefiles.com/vAMgF
сам пердолься и пиши телнеты, не для того я к вам снизошёл с небес!
4 года назад будучи еще зеленым использовал экспортер (на уровне обезьянки: скопировать/отредактировать/вставить на основе чужих правил, поэтому деталей не запомнил) данных получаемых из elasticsearch с помощью lucene query в метрики в формате prometheus. Т.е. например можно было запросить документы удовлетворяющие запросу и сагрегировать их count по нужным полям из elastic и отправить в prom файл, что-то типо (например агригировав по 2 полям/лейблам):
- metrika_nah{label1="hui", label2="sosi"} 10
- metrika_nah{label1="hui", label2="tebe"} 5
- metrika_nah{label1="pizda", label2="tebe"} 1
Помню что синтаксис был на yaml.
Гуглю но в упор не вижу.
Нашел только https://github.com/MaibornWolff/elcep. Вроде похоже, но помоему не совсем то. И какой-то слишком васяновский, непопулярный продукт. Скорее всего не он.
Не хочется изобретать велосипед.
А чем вы экспортируете из эластика в прометей?
>Вот только нужно best practices узнать
https://aws.amazon.com/ru/architecture/well-architected/
https://docs.microsoft.com/en-us/azure/architecture/framework/
>чтобы рассказали что да как должно быть организовано
Если вкратце, то:
1) Всё должно быть автоматизировано, никаких вводов десяток комманд в консоли/тыканий в админке по кнопкам.
2) Создание инфраструктуры должно быть написано кодом, а не тыкать в админке по кнопкам.
3) Бессерверные приложения > Контейнеры > VPS. В первую очередь нужно отдавать предпочтение бессерверным приложениям. Если не получается сделать бессерверным, нужно делать контейнеры.
4) Принцип изоляции - изоливать одно окружения от другого.
5) Принцип минимальных прав - давать только минимально необходимые права сервисами/пользователям.
6) Если сервис упал - он должен автоматически скриптом восстанавливаться.
7) База должна бекапиться - минимум раз в день. И бекапы должны быть зашифрованы, а не лежать открытым текстом.
8) Бекапы должны моментально одним кликом разворачиваться, безо всякого набора длиннющих команд.
9) Предпочтение горизонтальному масштабированию. Вместо одного большого сервера лучше сделать 3 маленьких.
10) Автомасштабирование - сайт должен сам адаптироваться под нагрузку.
11) Сервера нужно тестировать на отказоустойчивость ДО ТОГО как их заддосят.
12) Должен стоять файрволл/настроено VPC/группы безопасности.
13) Шифрование желательно применять везде, где только можно.
14) Принцип постоянных улучшений - собрать данные --> сделать вывод --> улучшить систему.
15) Если что-то бесполезное висит и жрёт деньги, нужно её оптимизировать.
16) Внутренние сервисы не должны выходить наружу. Если есть какой-нибудь абстрактный phpmyadmin, он должен быть доступен только через ssh port forwarding. Если же есть внутренний сервис типа ресайза картинок, он должен общаться с другими сервисами только по внутреннему протоколу типа rabbitmq/aws sqs. А не предоставлять API всему миру.
17) Делай несколько рубежей защиты. Не нужно полагаться что один только cloudflare тебя защитит от дудоса.
>Вот только нужно best practices узнать
https://aws.amazon.com/ru/architecture/well-architected/
https://docs.microsoft.com/en-us/azure/architecture/framework/
>чтобы рассказали что да как должно быть организовано
Если вкратце, то:
1) Всё должно быть автоматизировано, никаких вводов десяток комманд в консоли/тыканий в админке по кнопкам.
2) Создание инфраструктуры должно быть написано кодом, а не тыкать в админке по кнопкам.
3) Бессерверные приложения > Контейнеры > VPS. В первую очередь нужно отдавать предпочтение бессерверным приложениям. Если не получается сделать бессерверным, нужно делать контейнеры.
4) Принцип изоляции - изоливать одно окружения от другого.
5) Принцип минимальных прав - давать только минимально необходимые права сервисами/пользователям.
6) Если сервис упал - он должен автоматически скриптом восстанавливаться.
7) База должна бекапиться - минимум раз в день. И бекапы должны быть зашифрованы, а не лежать открытым текстом.
8) Бекапы должны моментально одним кликом разворачиваться, безо всякого набора длиннющих команд.
9) Предпочтение горизонтальному масштабированию. Вместо одного большого сервера лучше сделать 3 маленьких.
10) Автомасштабирование - сайт должен сам адаптироваться под нагрузку.
11) Сервера нужно тестировать на отказоустойчивость ДО ТОГО как их заддосят.
12) Должен стоять файрволл/настроено VPC/группы безопасности.
13) Шифрование желательно применять везде, где только можно.
14) Принцип постоянных улучшений - собрать данные --> сделать вывод --> улучшить систему.
15) Если что-то бесполезное висит и жрёт деньги, нужно её оптимизировать.
16) Внутренние сервисы не должны выходить наружу. Если есть какой-нибудь абстрактный phpmyadmin, он должен быть доступен только через ssh port forwarding. Если же есть внутренний сервис типа ресайза картинок, он должен общаться с другими сервисами только по внутреннему протоколу типа rabbitmq/aws sqs. А не предоставлять API всему миру.
17) Делай несколько рубежей защиты. Не нужно полагаться что один только cloudflare тебя защитит от дудоса.
Вцелом ок.
Но вот это полный крах.
>6) Если сервис упал - он должен автоматически скриптом восстанавливаться.
Каким блядь скриптом? Сверху IoT, снизу портянки на баше - заебись ты придумал.
>7) База должна бекапиться - минимум раз в день. И бекапы должны быть зашифрованы, а не лежать открытым текстом.
База должна бекапиться всегда архивацией WAL (wal-g/e и т.п.), так же должны периодически делаться полные копии и проверяться восстановление (я каждый день например проверяю).
Реально вероятный кейс проеба данных - обосрались с миграциями. Тут твой ежедневный бекап нафиг не всрался. Что он есть - что его нет.
Лайк, сохранил
>Каким блядь скриптом? Сверху IoT, снизу портянки на баше - заебись ты придумал.
Ой да куча вариантов. Шо ты как маленький ёпт. Самый наипростейший вариант - restart policy в докерфайле. Вариант посложнее - с откаткой на предыдущий стабильный контейнер. Есть варианты с репликацией, когда в случае отказа одного кластера, переключаются на другой.
В инете всё описано:
https://aws.amazon.com/ru/blogs/architecture/disaster-recovery-dr-architecture-on-aws-part-iii-pilot-light-and-warm-standby/
Смысл в том, чтобы восстановление происходило без участия человека. Пример: nginx упал --> система мониторинга засекла --> запустился сценарий восстановления --> nginx снова работает. Люди медлительные, компьютер же наоборот может восстановить за считанные секунды.
>База должна бекапиться всегда архивацией WAL (wal-g/e и т.п.)
Это уже чисто вкусовщина. Я пользуюсь штатным https://aws.amazon.com/ru/backup/ Потому что он бекапит вообще всё, а не только БД.
>>База должна бекапиться всегда архивацией WAL (wal-g/e и т.п.)
>Это уже чисто вкусовщина.
Вкусовщина это использование конкретных инструментов.
Подход бекапить WAL вместо ежедневных/(еже сколько угодных) снепшотов, это практическая необходимость. Иначе восстановление в произвольную точку по времени (ровно когда обосрались с миграциями) не сделать.
Как ручками склонировать инстанс полно мануалов, а вот как это автоматизировать и чтобы перезаписывал старый инстанс - непонятно.
Ты хочешь создать дев сервер в манадже гуглклауда или локально?
Обычно делается дамп, можно даже с ограничением на количество строк и вливается в локальный докер. Автоматизируется в виде трёхстрочного скрипта.
Вроде бы хайпа направление пока не набрало среди петровичей с завода, а перспективы этого направления имеются.
Есть вариант попасть на онлайн стажировку в компанию, нужно только по минимальным требованиям подтянуть администрирование линукса (думаю, на ютабе помогут галопом всё понять).
Из полезных навыков у меня только знания python на уровне джуна. В разрабы в моей миллионной мухосрани не пробиться. А вот devops (или тестирование) есть варианты онлайн для вкатунов, судя по всему.
Ты не вкатишься в девопс, пока не поадминишь боевые линуксы, не поешь говна, и не напишешь дюжину-вторую-третью скриптов.
То есть ты на основе материалов от инфоцыган и сможешь собрать какого-то рабочий хелло ворлд пайплайн, но точно не сможешь решать возникающие проблемы, потому что весь ливер для тебя останется чёрным ящиком.
Лучше обрати внимание на тестирование.
Я хочу ещё один инстанс в клауде. Смысл в том чтобы всегда под рукой была база на которой можно подебажить прод проблемы. Просто дамп прода на локальную машину занимает 6-8 часов не пойму почему так долго, там всего-то 16гб.
А как снимать дамп с ограничением по строкам?
DevOps - штука, напоминающая смену класса в ММО РПГ: ты можешь стать джуном ДевОпсом только в том случае, если раньше был сеньором админом или мидлом девом. В противном случае ты не вывезешь.
Если хочешь зайти в методологию со стороны админства, то не бойся: необязательно набираться опыта в админстве, начиная с позиции эникея у говнопровайдера за 20-30 косарей. Можешь следовать по такому пути:
Саппорт инженер L2-L3 (удаленно) -> Админ серверов -> Девопс
(правда, этот путь займет точно не меньше года. Но всё в твоих руках
> Саппорт инженер L2-L3 (удаленно) -> Админ серверов
Чем занимаются инженеры на L2-L3? В чем их отличия от админов?
Без подъеба спрашиваю, сам не понимаю.
Гипотетическая ситуация:
Инженер на большом проекте разворачивает с нуля, настраивает кластер опеншифта. Использует в своей работе средства автоматизации и мониторинга, отвечает за его работоспособность.
Когда кластер развернут, пиздует на стенд для другого заказчика.
Есть такой же персонаж, который кластера хадупа, кафки и прочей бигдаты разворачивает, настраивает, мониторит, траблшутит, пишет скрипты, плейбуки и пайплайны для развертывания.
Оба доступа к железу не имеют, с заказчиками не общаются. Машины им создают по заранее заготовленному сайзингу для проекта.
Это кто такие? Техпод, админы или девопсы?
Используются все девопс-инструменты, но к разработке отношения почти не имеют.
Вроде админы, но даже к гипервизору доступа не имеют.
Техподдержка? С заказчиком и другой техподдержкой не общаются.
>Это кто такие? Техпод, админы или девопсы?
какая разница? как себя продашь.
Это не MMORPG . Нет никакого запрограммированного дерева навыков и четкой классификации.
Ты пытаешься анализировать рыночек как будто в нем есть законы развития, но там только единственный закон : кто успел - тот и съел.
Тогда тебе надо теребить планировщиком апи гугла. Либо бэкапирование и разворачивание:
https://cloud.google.com/sql/docs/postgres/backup-recovery/backing-up
Либо импорт/экспорт:
https://cloud.google.com/sql/docs/postgres/import-export
> А как снимать дамп с ограничением по строкам?
А это сорян, это я про mysqldump подумал, он умеет заклинание WHERE LIMIT. В пг_дампе только через костыли с созданием временной таблицы.
Спасибо анончег.
> DevOps - штука, напоминающая смену класса в ММО РПГ
> Это не MMORPG
Проиграл.
Ну ладно, давай без словоблудия - чем отличается сисадмин от техподдержки l2-l3, кроме отсутствия общения с заказчиком? В общем случае, без рыночков и прочего.
> В общем случае, без рыночков и прочего.
А без это не получится объяснить. Ты от главного объяснения отказываешься.
Я под рыночком понимаю весь набор необъяснимых и зашумленных явлений, которые вроде пытаются выстроиться в какой-то порядок, но его нихуя не видно. А всякие умники пытаются свое собственное смещение в наблюдениях выдать за истину.
Никто не устанавливал стандарты и классы. Никто не выпускал брошюру "Зарплатная сетка и обязанности в ММОРПГ Жизнь".
Я не знаю чем отличается сисадмин от техподдержки L2-L3 и мне вообще на это насрать. И тебе советую.
Девопс - это знания о работе ПО и шустрый ум. Будь девопсом и не щелкай клювом.
>Девопс - это знания о работе ПО и шустрый ум
Пофиксил тебя.
Это серьезные знания в разработке и эксплуатации ПО. Чтобы мог разработчикам (тоже не херам с горы) пояснить (без негативной коннотации): почему здесь будет так. Где проходит линия разумного компромисса, а где неравновесное/не_с_нулевой_сумой перекладывание своих мелких задач на чужие плечи, где они дороги в решении.
Само ПО - как и любые инструменты вторично.
Вот буквально сегодня пришел ко мне дядька, старше и иерархически выше меня, говорит сделай мне так-то и так-то, у меня таска, и я уже все закодил. Поговорили о том: что ты вообще хочешь сделать? Что это у тебя за абстракции? Дак у тебя же новый класс абстракций, зачем ты их пихаешь в старые сущности и требуешь от меня их подпилить. Посмотрели контекст, как было сделано для прошлых абстракци. После этого он согласился, что вообще не знал о существовании такого класса сущностей (это мапится в инфраструктуру, куда он не ходит) и спокойно пошел переделывать. А можно было просто сделать. наговнякать
> Я не знаю чем отличается сисадмин от техподдержки L2-L3
Да я уже понял, что ты нихуя не знаешь, только про рыночек какую-то чушь несешь.
> Будь девопсом и не щелкай клювом.
Я и так девопс-инженер хоть и джуниор, а ты лучше сам щелкай поменьше, вон анон нормально ответил >>290794 с него пример бери
> Высирает стены бессвязного никому не нужного текста
> Просят пиздеть поменьше и ближе к делу
> Обижается и мелкобуквенно называет собеседника тупеньким
Я все про тебя понял, смысла продолжать диалог не вижу.
Как из Ansible пробросить переменную среды так, чтобы ее могло подхватить запущенное приложение, та же Джанга скажем?
А как ты искал в Гугле и не нашел? Просто интересно
tasks:
- name: Echo my_env_var
shell: "echo $MY_ENV_VARIABLE"
environment:
MY_ENV_VARIABLE: whatever_value
Админил линуксы по хуйне, типа настроить веб сервер томкат, нгинксы и прочее, простые бэкапы (1.2.3), обычный мониторинг древний типа наджиос, qemu-kvm и прочее лоускильное дерьмо
>знаю только по верхам сети, протоколы там, разные линукс, ансибль, докер, гит, дженкинс
>линуксы по хуйне, типа настроить веб сервер томкат, нгинксы и прочее, простые бэкапы (1.2.3), обычный мониторинг древний типа наджиос, qemu-kvm и прочее лоускильное дерьмо
Ну хорошая же база, осталось собрать всё в целое. Подними у себя гитлаб, в него засунь простейших хеллоуворлд на ноде/пхп/бидоне/го/чёмугодно и начинай закапываться:
1) напиши ему докерфайл
2) собери композ с аппой/вебсервером
3) напиши пайплайн по сборке/тестированию
4) напиши пайплайн по выкатыванию в прод
5) напиши скрипт для бэкапирования, всунь его в композ
6) подними прометей с графаной, обмажь агентом мониторинга, добавь метрики в саму апу, агент мониторинга тоже всовывай в композ
7) подними эластик, настрой коллектор логов
8) напиши провиженинг прода
Твоя цель сделать инфраструктуру по которой эта апа будет подниматься на новом сервере с минимальным количеством усилий. Где-то на этом этапе уже можно будет рассылать резюме.
>Куча говна на пикчах.
Да. Куча говна. Но пара-тойка бриллипнтов там затесалась.
Например, git и его производные всё же годнота.
Право на жизнь имеют Sonatype и Sentry.
Zabbix может быть полезен, как ни странно. Внезано годная штука для мониторинга, а не эти ваши вонючие Prrometheus и Grafana.
Kubernetes - хуета. Полная хуета, но при этом единственный способ развернуть кластер за разумное время с минимальными усилииями.
И какого хуя в таблица светится Hashicorp? Это нихуя не продукт, а компания. Terraform это её детище.
>Внезано годная штука для мониторинга
Пришло время добавить хост в мониторинг. Хост сам себя в мониторинг не добавит. Нужно добавить хосты, прописать жиэмикс, выбрать шаблоны, подправить графики. Я живу активной и полноценной жизнью.
Ansible надо всё равно разворачивать, ещё и SDK для Docker, вариант уже смотрел такой
>Ansible надо всё равно разворачивать
Ансибл умеет бутстрапиться через raw команды, ну и докер он же поставит.
А в докер-композе все воедино собрать с depends_on почему не вариант?
Не могу заставить в build-time видеть переменные, или передать туда чото из docker-compose.
Вот мой докер-компот
version: '3'
services:
bullshit:
build: ./gownoue
command: npm run start
environment:
- HOST=https://dockerhub.com
Как увидеть HOST из докер файла?
FROM node:13-alpine
ARG x
RUN echo "$x"
Выводит нихуя.
Добавляю
args:
x:1
- вообще ругается мол "yaml: line 6: mapping values are not allowed in this context"
Переменные окружение билда и переменные окружения запуска - это две большие разницы.
https://stackoverflow.com/questions/52429984/docker-compose-build-environment-variable
Ты занимаешься явной хуйней. Переделывай.
Даже в обычный SPA фронт вхардкоживать переменные уровня BACKEND_HOST=localhost является зашкваром, их нужно прокидывать в runtime редактируя index.html из entrypoint. Так для бекендов этой проблемы вообще нет, бери и читай переменную из env в момент выполнения.
>переменные уровня BACKEND_HOST=localhost является зашкваром
Я согласен, это чисто моча в голову стукнула "а если попросят на собеседовании передать что-то из docker-compose.yml в build-time", ну и пробую ЧОТО заслать.
А хост, ну это просто заметно в терминале(адрес).
Пароли вроде так можно засылать(всё лучше чем в коде, еще запушат в репу а потом случайно отопенсорсят...), не?
>>298422
Я понял суть /b build.
Короче я использовал короткую запись а потом продолжал как для длинной, парсер офигивал(он и так придурошный, табы не хочет(в простом редакторе(не IDE которая табы в пробелы конвертирует) - жопа).
Теперь могу ARGS только в билд-тайм слать и в ENV чото для уже построенного.
Начнем с того, что нужно выяснить, сможет ли такой криворукий долбоеб написать код, выполнение которого в serverless, не превысит по стоимости работу девопса и аренду классических серверов.
Как я узнал, что ты долбоеб? Так это очень просто : ты спрашиваешь на дваче совета по вопросу, надежный ответ на который знаешь только ты.
>а если попросят на собеседовании передать что-то из docker-compose.yml в build-time
Значит надо и им сказать: перестаньте заниматься хуйней.
И объяснить почему, может они сами не знают. Например:
- Со ссылкой на первоисточники 12 factor app: релиз = скомпилированный код + конфигурация, а никак не код с вхардкожеными параметрами конфигурации.
- Расcказать к чему это (build time параметризация) приводит на практике: к дополнительному времени сборки и возможности завезти на прод контейнер который не тестировался (потому что образ с кодом мутабельный).
- Можно просто кинуть ссылку https://immutablewebapps.org/. Всегда кидаю её фронтам и проблем с пониманием еще не было.
То есть прод\дебаг это не 1 контейнер который подтянет что скажешь, а именно ДВА КОНТЕЙНЕРА?
Ой вэй.
Как же я обсрамиться мог.
Ты хочешь книгу "технологии используемые в нашей вебдрисне" ?
Нет, такой не может существовать.
Читай книги по каждой из технологий.
>Читай книги по каждой из технологий.
Едва ли они затронут внутреннее устройство. Для того, чтобы понять как действительно работает тот же докер под капотом, нужно читать код и понимать как он работает на низком уровне. А то, что ты по верхам нахватаешься из книг и документации и выучишь слова "виртуализация" и "контейнеризация", плюс полтора десятка ключевых слов - это не сделает тебя специалистом в технологии.
Ну не все в моей вебдрисне, а вообще все. Хоть галопом по европам это вообще бывает. Типа вот глава про бд. Читаешь 100 страниц про разнве базы. Потом глава про контенеры. Читаешь 100 строниц про них. И так далее.
Крайне наивное ожидание.
Во-первых, просто не уложиться в 100 страниц.
во-вторых, авторы позориться не хотят поверхностным обзором.
Ну а твои хуевые знания тем более никого не волнуют.
> нужно читать код и понимать как он работает на низком уровне.
Совершенно излишне.
Если ты Главный Запускатель Докера в СберТиньВТБанке, тогда это возможно имело бы смысл. Но у них там уже есть главный докерозапускатель.
Есть принципиально 2 разных окружения:
- production like - stage и prod
- не production like - dev, stand, review и т.п., называй как хочешь.
Таким образом незазорно и обычно нужно, потому что во 2 хочется установить dev tools иметь 2 образа контейнера по 1 на каждый пункт.
Если ты собираешься параметризировать в build time, то считай у тебя будет количество образов равное количеству откружений кудо оно выкатывается. Это медленно и затратно по ресурсам. Но хуже всего, что при таком подходе образ окончательно провереный на stage не поедет на прод, а поедет туда совершенно новый образ, нетестированный. С пересборкой мотивированной исключительно параметризацией в build time.
Вот что я хотел сказать.
Да. А почему ты думаешь что это плохо?
Кстати я нашел тебе книгу, которую я сам пометил как "Pro Docker 2016(быстренько_ставим_пачку приложух)".
Наверняка, хуевая, но все как ты хотел. Я ее, конечно же, не читал.
1) девопс
2) разрабинг
3) автокуа
Просто наблюдал за своим другом девопсом посасывая кальян как он дрочит свой дженкинс и автоматизирует кал и ниче так, интересно.
Жизни не хватит, чтобы все это прочитать. Читая плохие книги, ты просто теряешь время зря. Карьера у тебя будет максимум 10-12 лет. Нужно очень тщательно выбирать книги и не ошибаться с выбором, т.к. ты тратишь бесценное время, которое словно песок уходит сквозь пальцы.
вот тебе лайфхак: не обязательно дочитывать книги до конца.
я читаю первые главы и по выбору.
Вполне достаточно и часто это понятнее документации.
Дело не только в этом. Нужно конспектировать, пробовать прочитанное на практике и регулярно перечитывать нужные главы, чтобы ты не забывал прочитанное на следующее утро.
НЕТ. потому что это Девопс!
но эти ты нашел себе место запускателя докера в сбербанка - да, можешь любимую книжку зазубрить.
Цеф мы организационно не тянем, у нас отец один настроил цеф и ушёл в закат, теперь у него клиенты раз в месяц отваливаются.
Я, конечно, сейчас пойду ставить все костыли с гитхаба, но вдруг кто уже в теме.
Спасибо за быстрый ответ, завтра с него и начну.
Рекомендую минио. Ставится легко, с запросами справляется. Поругать особо не за что. Поддержку подписи чанков в хттп режиме они реализовали раньше чем официальный бото клиент. Это максимум за что могу похвалить. Они наверно все одинаковые. Мне сравнивать особо не с чем. Сейчас играюсь с его бенчмарком. Тулза для бенчмарков костыльное говно то что написано на го тут не причём без кастомизации и обсервабилити. Возможно их сервер такой же. Детально не изучал
И тебе спасибо.
> Они наверно все одинаковые.
Ну я тут поглядел диагонали: чтобы уметь в распределённость, не лезть в модули ядра и быть живым в 2022 - это не так уж и много вариантов остаётся.
/poopa/loopa/
/poopa/loopa/1.txt
/poopa/loopa/2.txt
/poopa/loopa/1.mp3
/poopa/doopa/
/poopa/doopa/1.txt
/poopa/doopa/5.txt
/poopa/doopa/4.mp3
/poopa/doopa/7.wav
Директории и дальше за ней все файлы в ней.
Мне надо было grepом отделить все строки с путем к mp3 и wav файлам. Я это сделал через grep ".mp3\|.wav"
Теперь нужно отделить все строки которые не .txt файлы. grep -v '.txt' возвращает еще и строки с директориями, что не подходит. Какой паттерн нужно применить чтобы отфильтровать их? Догадываюсь, что нужно исключить все строки со слэшем на конце, а вот как сделать не понимаю.
cat test | grep -v '.txt' | grep "\\."
но это максимально уебское решение и не будет работать если:
1) Есть скрытые директории
2) Файлы без расширения
Имхо правильным решением будет это сначала проверка есть ли что-либо после последнего /, а потом уже грепать -v .txt
То есть docker-compose pull/up я и по ссш могу сделать, а вот как создать/обновить .env из гитлабовских переменных без костылей я пока не придумал.
ансибл
Многие делают что добавляют ssh ключ в переменные и потом вызывают 'ssh deploy_user@server docker-compose pull/up' удалённо.
Либо как анон выше написал через ансибл, но там аналогичные действия примерно будут происходить
Скину docker-compose и haproxy.cfg, подскажите советом мудрым
https://pastebin.com/6qRPbASS
https://pastebin.com/BVvgmcLD
конфиги хапрокси цепляет, при запущенном композе в консоли прям пишет server01 DOWN
> server server01 localhost:9092 check (тут пробовал и frontend1:9092 check тоже не подхватывает)
> server server02 localhost:9093 check
Глубоко не вникал, но скорее всего ты делаешь обычную ошибку новичка, не знаешь что у каждого контейнера свой отдельный локалхост (это тебе не под).
Надо переписать на использование в качестве хостов либо имен контейнеров, либо сервисов.
command: bin/zkCli.sh create /election
Отдельно сам по себе контейнер запускается и нормально работает и вручную нода добавляется. Но автоматизировать не удается.
Пробовал также запускать из скрипта
volumes:
- ./zooInit.sh:/apache-zookeeper-3.7.0-bin/zooInit.sh
command: ./zooInit.sh
пишет Failed to start
также пробовал внедрить эту команду на этапе билда образа
Dockerfile:
FROM zookeeper
ADD zooInit.sh /
RUN chmod +x /zooInit.sh
CMD ["/zooInit.sh"]
1) Сначала проверь документацию, нода должна добавляться через переменные окружения: https://hub.docker.com/_/zookeeper
2) Команду лучше писать целиком:
/usr/bin/sh /apache-zookeeper-3.7.0-bin/zooInit.sh
ну так найди их! найди опцию verbose, включи где-нибудь еще логи, поставь в контейнер strace, ltrace и запусти их.
Какие же девопсы-смузихлебы беспомощные дегенераты.
в чем может быть проблема?
>в чем может быть проблема?
В том что ты не показал как запускаешь.
Еще:
- COPY . . - в общем случае является зашкваром. Причем 2ды. Переустанавливаются модули при изменении кода. Скорее всего ты тащишь в образ дирикторию .git, которая там не то что всралась, а является огромной дырой при нахождении там, и опятьже заставляет качаться модулям на абсолютно любой коммит.
- npm install скорее всего надо заменить на npm ci.
Почитай бест практис по докеру.
запускаю либо так: docker run -d -p 2000:2000 название образа(без -d тоже пробовал), либо через gui в докер десктоп, указывая порт, еще пробовал кроме порта указывать адрес типа 127.0.0.1:2000:2000, но толку нет
насчет COPY . . у меня есть .dockerignore в котором выписано все что не нужно
коммитов больше не будет, там уже готовая хуйня которую просто нужно выложить
По пикрилу 2 вангую приложение случает локалхост докер контейнера, а должно слушать 0.0.0.0.
В общем случае:
- Повешай на езернет порт контейнера tcpdump, посмотри на каком этапе дропается трафик.
- Посмотри правила iptables.
- Попробуй соединиться на внутрений ip контейнера.
- Попробуй установить в контейнер curl/nc и постучать локально.
да именно в этом проблема была, прописал json-server в команде запуска --host 0.0.0.0 и заработало, большое спасибо
Кто этим пользуется?
Вот докерфайл
FROM golang:1.16-alpine
WORKDIR /go/delivery
RUN go mod init ex123
COPY go.mod go.mod
COPY main.go /go/delivery/
RUN go build
CMD [./ex123]
EXPOSE 8080
ошибка следующая
/bin/sh: [./ex123]: not found
Я уэе весь на говно изошел, понимаю что где то в пути проеб, меня на все возможные варианты. Что не так ?
а ты думал изучишь щас девпос и вкатишься?
изучай теперь GO.
ты что не можешь посмотреть собрался ли ex123 и в каком он каталоге?
А как в композ-файле указать глобальные переменные среды, доступные всем сервисам сразу? Надо указать прямо в файле, потому что я запускаю его через ансибл и передаю там особые переменные
docker-compose имеется ввиду канешн
Как вариант, указать каждому сервису один и тот же env_file
Еще как вариант унаследовать от дефолтного сервиса через extends...
если написать вместо localhost:3001 название сайта в azure, то запрос тоже не проходит (на название сайта у меня отзывается json-server)
так вот к чему обращаться то, когда контейнер запущен в azure?
Вроде как аналогов в РФ не имеет?
сам не местный, мнение узнать хочу
С меня нихуя анон
Я работаю в сбере и наша команда использует сберклауд.
Помнишь ту картинку, где один чел говорит "хохлы" второму и оба начинают дико ржать? Вот у нас так же, только со словом "сберклауд". Ну и начальник еще плакать начинает, ему уже не смешно
А что не так? Поддержка или продукты? Или вообще все?
Анончик, дай хоть чуть-чуть конкретики
Может кто помочь, как запустить nginx с модулем lua через докер?
Заваливаюсь вот на этом шаге.
Достаточно пикрила. См https://packages.debian.org/bullseye/libnginx-mod-http-lua
А конкретно у тебя ошибка в RUN cd nginx-1.9.3/, этот переход будет осуществлён в рамках одной строчки RUN и потом сбрасывается. Используй WORKDIR .
Яндексбот детектед!!1
У вас кстати на главной клики по карточкам под заголовком "Наши продукты:" отломаны, по крайней мере на последней лисе.
Присоединяюсь к вопросам анона выше.
У вас кстати набор голангеров\девопсов на джун-мид позиции уже прикрыли? На сайте до сих пор висит.
openresty же есть во всех вариантах упаковки. Хочешь в deb, хочешь в докере.
К чему эта ебля?
Вот эта хуйня не работает.
nginx установлен там, я проверил.
Просто ты долбоеб.
lua_package_path это не команда. Это нужно прописывать в нжинксе, что бы он знал где искать lua
https://github.com/openresty/lua-nginx-module#lua_package_path
С работой совмещать можно.
Я вообще сейчас не работаю, ремонт делаю, плюс совмещаю.
Дёшево, сердито, люди в чатиках весёлые, постоянно пиздят, все помогут, но вначале хуями обложат, без этого никак.
В принципе, советую.
У меня знакомый сетевик там пару месяцев отпахал и вкатился девопсером джуном.
А теперь вопрос в студию:
Какого хуя этому пидору надо?
Почему он не хочет работать?
Гугление говорит, что нужно прописать строчку в nginx.conf.
Я закинул нужный conf. Чё этой паскуде надо?
Спасибо за ответ. Ещё хотел спросить: если линупсы и сети ща знаю по минимуму, есть смысл туда соваться?
Вообще без понятия.
Сам бросил заебавшее направление, начал изучать линукс и сети с нуля и вкатился по зов сердца.
Говорят, если есть некий уровень сисадминства, то можно вкатиться.
программиста ему надо.
программист посмотрит как что собирается и разберется.
А ты сиди вечно подбирай порядок магических действий .
Какая причина переезда? Нужна бинарная совместимость с шапкой или просто ололо околоэнтерпрайз?
Debian, конечно. Между прочим, ты должен был начать суетиться еще летом прошлого года. Твой Центос уже 3 месяца как скомпрометирован!
А я вообще использую Центос как -детектор молоденьких девопсов, которые почему-то считают себя опытными и бородатыми.
Когда я выставлял сервер голой жопой в инет 20 лет назад, никаких вариантов кроме Debian по сути и не было. FreeBSD ожидаемо загнулся. А Centos возник непонятно как и не имел твердой базы. Потому и загнулся.
> как из контейнерной бд подрубиться к локальной?
В общем случае никак. Ты можешь:
1) Цепануться из локальной бд к контерейнерной по прокинутому порту
2) Запустить контейнер в host networking, тогда обе БД у тебя будут жить на локалхосте, проконтролируй только чтобы порты не конфликтовали
3) Если докер фор декстоп, то там можно долбиться в хост по host.docker.internal, но это не комильфо
> надо делать том, но как в этот том запихнуть существующие данные
Можно вместо тома монтировать директорию:
volumes:
- /location/for/dbdata/:/data/db/
Спасибо. То есть чтобы импортнуть данные, мне надо поднять монго контейнер на другом порту, и в эту контейнерную базу импортнуть с локальной, так? А надо ли так делать? Или можно базу не контейнеризировать, а подрубаться к ней с бекенд-контейнера
Мне не понятно зачем вообще помещать базу данных в контейнер. Это просто пиздец как тупо. Ей же где-то нужно хранить данные, а это лишний геморрой. Значит надо подключать внешний (сетевой) носитель, вдобавок докер сам может грохнуть volume с данными. Проще гораздо взять pulumi и любую халявную базу - mongodb atlas например. И поднимать эту базу через пулуми.
Не то чтобы это было невозможно, просто сейчас каждая собака даёт по бесплатной облачной дб - oracle cloud, neo4j aura, datastax astra db, mongodb atlas. Их бесплатных хоть жопой жуй. Тем более, если у тебя продакшн нагрузки.
>>324158
Я изначально пользовался атласом, потом, но в связи с последними событиями, пользоваться им не могу, они ограничили доступ и сказали что удалят данные россиян). В общем не важно, я решил с контейнера подрубаться к локальному серваку базы, это я уже настроил. Есть другой вопрос. можно ли последовательно описать сборку в докер-композе? У меня есть фронт, написаный на next js (фреймворк, выдающий статику), и он, во время сборки, делает запросы на сервер, для того чтобы наполнить страницы контентом, но во время старта докер-композа, он сначала собирает образы, и только потом стартует. Но во время сборки бекэндская часть недоступна. Придется предварительно отдельно стартовать бекенд, и только потом фронт собирать?
Сбер клауд чуть менее, чем полностью слизан с AWS. Но слизан не полностью, это скорее китайская копия AWS. У сбера в 10 раз меньше сервисов, вся идеология амазона строится на том, что ты платишь за фактическое использование - например было миллион запросов, вот ты за миллион и заплатил. А у сбера в основном оплата по времени. Например, одной из самых ценных фишек AWS была DynamoDB, которой можно пользоваться за копейки и платить только за количество запросов. У сбера есть только "managed"-базы, а значит это МИНИМУМ тысяча рублей в месяц. Другой вопрос - цензура. Нет гарантии, что твой сервис не выпилят, если он будет угоден генеральной линии партии. Серьёзных каких-то фишек сбер клауда я не заметил.
Спасибо анон, канистру чая тебе за отзыв.
А еще какие проблемы заметил? И, возможно подскажешь, что стоит просить у поддержки при переезде. Походу наш шеф выберет Сбер все таки
>А еще какие проблемы заметил?
Ну лично для меня самый большой минус - это базы данных и цены. Всё. Остальное ещё более-менее терпимо, можно пережить. У aws есть база под что угодно. База под временные ряды. База под графы. База под леджеры. Реляционная. Нереляционная. Какая хочешь короче. А здесь... ну просто обычная RDS. Извини меня, когда Postgresql стоит 3 рубля в час, для хобби-проекта выйдет дороговато. Конечно для интернет-магазина это копейки. Я просто сравниваю с тем же (окуклившимся) oracle cloud, там при регистрации давали две базы бесплатно. И вообще, в облаках это нормально, когда тебе часть функционала предоставляют бесплатно. Например, первый миллион запросов бесплатно. В сбере я не заметил, чтобы хоть что-то давали на халяву. Оплата идёт с первого же запроса. Во времена дикой конкуренции среди облаков это странно. Даже у яндекс облака есть халява. В остальном же, инфа 80%, что переезд плотно посадит инфраструктуру на сбер. То есть, сложно потом будет съехать оттуда. Я бы по максимум использовал попенсоурц - terraform и прочие. Чтобы не сажать себя в кабалу к Грефу. В остальном же, все эти бессерверные функции, объектные хранилища они у есть всех. Короче всё то, что чаще всего используется. Не хватает в основном тонких фишек/деталей под конкретные use case'ы.
>тонких фишек/деталей под конкретные use case'ы
Можешь примеры дать? Ну или куда копать, что гуглить?
Опять же, спасибо за ответ
>Во времена дикой конкуренции среди облаков это странно
чувак, БАРНАУЛ, алтайский край!
Не будет и не планировалось никакой конкуренции.
Ой, да ну разные в принципе. Я не хочу сейчас сильно лезть в детали. Берём любое финансовое/страховое/логистическое/медицинское приложение. Где нужно вести журнал всех изменений и криптографически подтверждать подлинность записей. Как это сделать на сбере? Да никак, если только на опенсоурс/сторонние сервисы. Или если у тебя сложная логика вызовов микросервисов, цепочка из 4-5 микросервисов например. На aws есть step functions, где можно прямо мышкой лепить логику. На сбере ты будешь как бичара кодом это всё делать. И таких мелочей куча.
Про докер по-моему разжевали раз 500, не меньше. Очевидно же, всё сводится к автоматизации. Вы судите со своей колокольни (т.е. зачем мне нужен), вам он может и не нужен. Он нужен другим разработчикам, если ты не пишешь код в одну харю. Вот я приду в твой проект, мне придётся с нуля ставить бд и прочие зависимости. Ты не подумал обо мне? Ты просто не застал времена, когда чтобы поднять веб-морду для svn, приходилось конпелять всё - от mail-сервера до днс. А щас одну команду набрал и всё поднялось.
Или допустим у меня серьёзное приложение, команда разработчиков сидит, любой сбой в работе и клиент теряет сотни нефти. Как быть? Организуем тестовое окружение с помощью докера, при каждом деплое пропускаем через тесты --> если тесты проходит --> публикуем изменения в паблик.
Или допустим твоя тудуха стала жутко популярной. Посещаемость валит, нужно размножить твоё приложение на 500 серверов. Что будешь делать? Вручную копировать? Опять же, докером можно хоть на миллион серверов размножить.
Естественно, ты можешь вообще ничего не ставить. Сидеть на голом сервере, но тогда тебя ожидает такая замечательная штука как "configuration drift" (загугли). Одна из самых частых причин, почему сервера косячат. Можно наглядно видеть этот эффект на примере винды. Свежая винда не тормозит. Но чем дольше ты ей пользуешься, тем больше косяков и тем больше она тормозит. В конце концов она заёбывает и ты её переставляешь. Тот же configuration drift по сути, только здесь в роли винды сервер.
буду краток: воспроизводимость.
программисты очень любят заявлять "а у меня все работает!".
если программиста поставить в четкое воспроизводимое окружение и заставить его настраивать самому, у него просто отмазок не остается.
Ну и кроме того, неплохо бы кодифицировать результаты работы админа. Это нужно чтобы отнять у админов средства производства, по Марксу.
>Зачем мне упаковывать всё это в контейнер?
Шоб запихнуть все это в кубернетес
>Есть ли ещё какие-то профиты?
Иммутабельность @ фунциональное программирование на уровне инфраструктуры\операций
Продолжу диалог сам с собой, решил проблему сборки, появилась проблема с сервером. На рабочем пк установлена шиндовс, и подключение к Монго происходит без проблем. Однако на серваке - убунту, и там, почему то, возникает ошибка (пик 1). БД работает, и я могу к ней подрубиться (пик 2). Запускаю через докер композ (пик 3). Прошу помощи местных анонов.
Гугли "функциональное программирование", "иммутабельность", "декларативность", "referential transparancy", "haskell monad tutorial"
Rocky Linux, куда еще.
>Мне не понятно зачем вообще помещать базу данных в контейнер.
И что здесь непонятного?
Для унификации жизненного цикла ПО: доставки образа, деплоя, обновления, удаления.
Пик 1, настраивай своё приложение лучше. Оно коннектится на локалхост, а должно конектиться в монго.
Я уже честно заебался писать в этом ИТТ треде про локалхост и докер. Надо обязательно при перекате добавить это в шапку поста.
Да не поможет. Это концептуциальное недопонимание.
Нынче зумеры нагугливают куски yaml-ов и пытаются собрать из них что-то рабочее, вместо того чтобы изучать администрирование и программирование.
Есть некоторая база по пинанию виртуалок на своём сервере, питоныча вроде не плохо знаю. Сети более менее, но глубоко не копал, докапаю, если надо.
Короче нужен петпроект с максимальным учебным эффектом.
Сейчас пишу себе телеграмбота, чтоб анализировал/реагировал на данные из стрима данных(форексхрень, если кому интересно.)
Как это всё обмазать с максимальным эфектом и чтобы как можно ближе было к тому, чем девопсы занимаются?
Т.е пишу код, он заливается в локальный гит на какой-нить виртуалке. Оттуда автоматом тестируется(тут я пока ноль, что копнуть?), собирается в докер, запускается локально + удалённо AWS, репликация там + бекапы базы, +мониторинг, что ещё сюда накидать?
Опытные помогите пожалуйста!
Может кто-нибудь помочь?
Пытаюсь поднять проект на джанго в докер компоуз и не могу понять, где же я проебался?
Выдаёт пикрил 2.
В settings.py password нету.
Как не прискорбно, но похоже ты прав.
Вероятно в общем случае не стоит им и помогать. А стоит всячески их гнобить и троллить, чтобы не флудили, понимая что на такие вопросы - тут посылают нахуй.
Они правда не понимают, что приводят на своих скриншетах. Вот этот кадр >>331407 например, он английский наверное не знает, а в гугл транслейт его забанили? "no password supplied" не может перевести? И понять что он должен проверить следующим?
Еще что приколько, что они сразу лезут в какие-то дремучие абстракции - джанго, например. Сам последние лет 5 постоянно пишу на питоне (как девопс/сре), и никогда не было необходимости погрузиться в джанго, всегда хватало aiohttp для микросервисов и тулзов любой сложности, обрабатывающих порой 500rps на ядро.
Лень подробно разбирать твою писанину. Ты какой-то жуткий оверкилл описываешь. Для телеграмм бота не нужны виртуалки, докер, не нужна репликация, бекапы бд. Твоя хрень выйдет платиновой по стоимости. Там нужна aws lambda/dynamodb/cdk. Ну мож ещё максимум прикрутить kinesis/timestream базу. Сборка через github actions/aws codebuild, не принципиально.
Ну я как бы учусь и мне сказали собрать из этого говна приложуху
Сука, мне тут на курсах сказали, что надо так сделать для обучения.
Ты думаешь, я бы полез сюда, если бы хоть одно решение со stackoverflow сработало?
Ну а почему мы должны знать как именно твое приложение работает? (пусть даже на популярном фреймворке)
Работа девопса в том чтобы разбираться. Разбирайся.
Отредактируй приложение. Ебани туда print-отладки во все места.
Позапускай вручную приложения в этом контейнере.
Вопрос совершенно не стоящий обсуждения. Он вызван твоим подходом к работе - пытаешься нагуглить и комбинировать куски ямлов.
Айти - это не магия, а инженерия.
Короче, вопрос такой: есть зоопарк в несколько сотен серверов и надо на них как-то контролить версии системы и прикладных приложений, желательно с записью в удобненькую табличку. Есть ли для этого какое-то фриварное решение?
Мне пока в голову пришло только завести скрипты, которые будут раз в неделю писать версии приложений в файлы, и мониторить изменения этих файлов какой-нибудь призмой, или зябликсом. Очевидно это геморройный метод с минимумом автоматизации.
Нужно это всё как водится для своевременных апдейтов.
Нагуглил за тебя. Потом расскажешь, что получилось.
https://serverfault.com/questions/366970/how-to-monitor-package-versions-across-multiple-linux-servers
Ну так ты, джун, спроси у выделенного тебе нОрмала, как в этой организации эксплутировали 100 серверов раньше и сделай с помощью той системы, которую там уже используют.
Хуетень какую-то придумал. Есть десятки готовых решений:
https://www.chef.io/
https://puppet.com/
https://www.ansible.com/
https://saltproject.io/
Вот, это прям то, что надо, спасибо, мудрый анон.
Раскатал в локальном тестовом окружении, заебался, но уже вижу, что именно то, что надо было.
Ну а дальше уже не моя забота пока – про нагрузку думать.
>>333861
Нормал мне и задал эту задачу. Раньше всё ручками было.
>>334902
Посмотрю попозже, как с вышерекомендованной разберусь, но из того что сходу: мой нормал сразу сказал, что ансибл не то и что надо чтобы все эти данные о серваках в красивеньком представлении были в табличках (цитата :"ансибл про развертывание, он скорее всего так не умеет").
Есть всё-таки ещё мысль от соседнего нормала, что всё-таки заббикс это умеет, но опять же хуй знает, как ето делать.
В любом случае спасибо за советы, пойду дальше курить маны.
>Нормал мне и задал эту задачу. Раньше всё ручками было.
Хаха.
Эта задача называется "инвентаризация". Все эти Ocsinventory и Ralph хорошо выглядят, да всё упирается в развёртывание их клиентов на сотне этих самых серверов, то есть один хер в орекстровку см >>334902
Тут она у вас либо есть, и ты берёшь её какую есть. Либо её нет и ты берёшь ансибл, максимум сольстак с косытлями, потому что всем остальным так же надо ставить клиенты. Дальше остаётся написать скрип трёхстрочный который в зависимости от ОС составляет список версий нужных пакетов, деплоить и дёргать его через ансибл.
> в красивеньком представлении были в табличках (цитата :"ансибл про развертывание, он скорее всего так не умеет")
csv построчно можно и самим скриптом генерить, и ансибл переменные в табличку свести в состоянии https://www.reddit.com/r/ansible/comments/mw8sz8/using_ansible_to_create_csv_files/
> заббикс это умеет
У заббикса есть рудиментарная инвентаризация: https://www.zabbix.com/documentation/current/ru/manual/config/hosts/inventory . Всё что больше её - надо настраивать, при том настраивать со стороны клиента, через костыли и раздачу прав, то есть снова приходим к ансиблу. Нагиос к этому больше расположен, но если его у вас нет, то нечего про этого монстра и задумываться.
Тут маленькое политическое резюме. Я бы всё равно свёл всю задачу до пердолинга в скрипты и оркестровку потому что:
а) это в принципе полезный навык, на него не жалко потратить время
б) это один из самых дешёвых способов решить эту задачу
в) это сохраняет свободу действий, если вдруг ваш мутный нормал переобуется и немного скорректирует задачу
г) это не оставляет за тобой технического долга в виде админинга сервера/клиентов инвентаризации и латания соответствующих дыр безопасности
В зависимости от среды (dev/prod) нужно в докерфайле выполнять разные entrypoint, очевидно что тип среды передается через env-переменные но блин как в докере написать if-else clause?
Надо сделать один entrypoint скрипт, который будет вести себя по разному в зависимости от переменных окружения.
Можно, конечно в .env целиком команды записать и добывать их как переменные, но имхо это хуёвая идея, потому что может повести себя непредсказуемо.
>В зависимости от среды (dev/prod) нужно в докерфайле выполнять разные entrypoint
Ненужно! Подумой!
entrypoint это запуск сервера
И в разных средах не то что с разными параметрами сервак запускают, а в принципе разные команды используют
дайте какой-нибудь годный курс по docker
а нету.
реально ни одной современной книги уровня БРИЛЛИАНТ нет.
все какой-то устаревший тухляк.
но вообще, набор концепций в docker не настолько сложен. можешь хоть по хаутушкам от microsoft изучать.
>Все "годные" курсы - это www.cbtnuggets.com По девопсу там 1100 часов обучения.
туда понапихали всякой шняги типа js, salesforce, project management и прочего oracle. пока ты платишь (неизвестно как?) за эту буйню, другой челик подрочит на ютубе видяшки, покрутит дома стандартный девупс-стек, да и вкатится себе
>другой челик подрочит на ютубе видяшки, покрутит дома стандартный девупс-стек, да и вкатится себе
Ну накидай подобных материалов.
rutracker.org -> udemy
Сейчас после закрытия Епама появилось много резюме от не желающих релоцироваться.
Сбер сейчас активно пылесосит рынок и пытается набрать себе сеньоров-помидоров, архитекторов и прочую элиту IT-мира.
Что по зарплате предлагают - хз. Но насколько я понял, пытаются собрать сливки, заплатив поменьше. Ну или просто свою сберовскую зп "согласно грейда" предлагают, а там кто согласится.
Как после Епама в Сбере работать, я вообще не представляю. Мне кажется, любой девопс-помидор пулей отсюда вылетит через месяц (из них 3 недели он будет проходить буткемп)
>>339149
Глазами вкатуна - отличная вакансия, без шуток. Вместо курсов и стажировок идёшь туда работать по вечерам. Через несколько месяцев съебываешь с коммерческим опытом™ и навыками.
Серьезно, я бы с удовольствием пошел на такое что-то год назад.
Подводных камня только два:
1. Не указан стек. Возможна винда
2. Это скорее всего техподдержка. Чему-то нормальному там не научишься. Но опять же, для вката норм
Девопс-вкатун-из-сбера
>пулей отсюда вылетит через месяц
Что у сбера такой невероятно сложны проект? Что невозможно справиться?
Ну очевидно, позиция джуна.
Так-то классический стек, я с таким же вкатился. Если добавишь сюда еще Дженкинс, maven и Postgres, то прям банковский. ЖМУ/Пинус хорошо знаешь?
> из проганья только писал ботов
Пиши в резюме, что фриланс, чтоб совсем пустое не было. Скажешь, ботов на заказ писал.
Есть некий объект с полем, в которое обычно пихается json (строка), и потом шлется по http. Этот дебил в какой-то момент стал считать, что это поле long, и начал кидать эксепшоны. А потом все снова заработало.. При этом в момент сбоя все логи проебались.
Я вообще не в теме, как понял это что-то связанное с индексацией. Типа когда-то в этом поле пришел long, он посчитал что это long и начал ругаться на строки в виде json'ов или как? Потом индексы обновились и все стало нормально.
Проблема в том, что пока не удается найти того, кто шлёт long'и. Можно как-то проконтролировать/зафиксировать чтобы всегда была строка, например?
Писал на ноде и шарпе(да, я говноед)
Почитал https://forums.docker.com/t/docker-compose-not-seeing-environment-variables-on-the-host/11837 предлагают либо через костыли запускать, либо env файл писать.
256x256, 0:26
Вопрос:
Как у себя в резюме указать работу эникейщиком?
Умудрился в одном месте поработать и верстальщиком, и с сервом покапаться, и сео, и реклама, короче, всё, что с кампухтером и сетями связано в маленькой организации.
Как это указать достойно?
> верстальщиком
Это dev
> и с сервом покапаться
> сетями
Это Ops
> и сео, и реклама
Это bizness
Все понятно, ты работал bizdevops'ом
А если серьезно - пиши "системный администратор linux". Если хрюха понимает, что перед ней резюме эникейщика, техподдержки или виндузятника, то сразу его отбраковывает
В резюме укажи только то, что относится к вакансии. Если устраиваешься администратором - указывай только опыт администратора. Остальное не указывай.
Зачем тебе говно и палки, когда есть балансировщики нагрузки и реверс-прокси, которые для этого и придуманы?
Я пользовался traefik, для твоей задачи он подойдет отлично, тк проксирует не только http трафик, но и tcp/udp
Один раз с ним разберешься, потом постоянно будешь использовать, тк шаблон один и тот же.
Кроме бесшовного переключения он еще может помочь реализовать 10% тесты - там можно выбрать соотношение weight для реплицированного сервиса.
Ты не туда воюешь.
Он спрашивает как сделать rolling update и не изобретать велосипед (не поддерживаемые говнопортянки на шелле).
Как ему в этом поможет конкретный веб сервер? Не понимаю.
Понятно что веб сервер/балансировщих вероятно нужен, но что такого нужного в траефике? Не было необходимости юзать это хипстерское говно, когда есть православный штабильный nginx.
>проксирует udp
Это конечно полный пиздешь. udp нельзя проксировать. Либо это аппликатион левел прокси, которые понимает конкретный протокол. Или это прокси не работает: постоянно просерает данные. Попробуй своим траефиком попроксировать протокол типа gelf с периодически падающим коллектором, а я поржу.
>>346367
Как бы банально не звучало - кубер.
Тебе нужно всего 3 очень простых манифеста: deployment, service и ingress. Можешь запустить все на 1 нодовом "кластере".
На локалхосте можешь поиграться через kind (кубер в докере).
Спасибо, анончик.
> Как ему в этом поможет конкретный веб сервер? Не понимаю.
> Понятно что веб сервер/балансировщих вероятно нужен, но что такого нужного в траефике?
Можно деплоить контейнеры и траефик их будет подхватывать автоматически. Потом переводить трафик с одного контейнера на другой.
При деплое достаточно развернуть контейнер и подкинуть траефику связанный с этим конфиг файл.
Точно так же можно реализовать откат на предыдущую версию.
А вообще - ты прав, лучше сразу развернуть кубер. Я просто анона решил пощадить, тк проще поставить траефик с боку.
> Это конечно полный пиздешь. udp нельзя проксировать.
Я его с udp не использовал. Но его поддержка заявлена. Есть плагин для грейлога. Если ты в себе уверен, можешь им написать на почту, что они пиздоболы, может ответят, потом покажешь.
> Не было необходимости юзать это хипстерское говно
Рекомендую присмотреться. Отличный инструмент, сейчас много где используется.
Обоссу двух комментаторов выше. >>346612 >>347048
Ебанаты, зачем все эти танцы с бубном с куберами/traefik. Есть уже миллионы готовых хостингов под докер-контейнеры. Возьмите готовое и не выёбывайтесь. AWS ECS, AWS EKS, Jelastic cloud, Google run, Alibaba ECS, есть у российских облаков готовые решения типа Yandex serverless containers и другие. Там автоматом версии проставляются и обновляются с нулевым даунтаймом.
Мышкой из админки контейнер на любую версию можно откатить. Ну сделали вы zero downtime deployments... И чё блять дальше. Откатов на предыдущую версию у вас не будет. Автомасштабирования у вас не будет. И многого другого, это всё сделано, зачем эти кривые-косые велосипеды снова переизобретать?
>ты прав, лучше сразу развернуть кубер
Дооооо дооооо, лучше сразу развернуть кубер. Конечно, ради одного монолита, обязательно нужно разворачивать ебанный кубер. Там ему всего-то максимум что нужно - автомасштабирование. Типичный пример оверинжиниринга. Гораздо проще можно сделать, без десятка сраных балансеров/проксей и ещё непонятно чего.
Дебич, да я давно уже пользуюсь. Тем же Jelastic cloud. Там уже все трафики, куберы, уже настроены. И AWS ECS пользуюсь. По деньгам выходит так же, как и твой задрипанный второсортный деревенский vps-хостер. Но только там есть уже няшные админки, где настраивается всё в два клика. А вы сидите дальше, как бичары, консольные конфиги пердольте.
На словах ты Лев Толстой, а на деле хуй простой - не знаешь как в кубере на прошлую версию откатиться
1) certificate_ca.crt . Публичный серт УЦ с двумя блоками `---BEGIN CERTIFICATE---`
2) certificate.crt . Публичный серт сайта с одним блоком `---BEGIN CERTIFICATE---`
3) certificate.csr . Запрос серта с одним блоком `---BEGIN CERTIFICATE REQUEST---`
Мне нужно из них сгенерить пару cert.pem / key.pem для nginx, открытый сертификат и закрытый ключ. И я не вижу в этом архиве ни одного приватного ключа. Как-то можно проинспектировать содержимое .crt? Может мне что-то недоложили?
Да, действительно не доложили, запросил повторно - всё встало на места. Спасибо.
>чёт как-то не особо легко показалось
Куда уж проще? Срёшь готовой либой https://docs.influxdata.com/influxdb/v1.8/tools/api_client_libraries/ @ кверишь однострочником в графане @ охуеваешь от внезапных лагов.
>раз в секунду примерно сотню интов сохранять и графана должна визуализировать.
Не должна. Переосмысли задачу, поговори с заказчиком (даже если это ты).
Ты понимаешь, что это никто не будет смотреть напрямую?
Какой тип графика ты хочешь использовать в графане?
Попробовал инфлюкс и в первый же день выстрелил в ногу. Сделал норм сервис, который пишет данные и бд из нескольких реплик. И инфлюкс подэфолту нерезаписывает старые данные новыми если 2 реплики решили одновременно разные данные сохранить. А мне надо чтобы как только первый сохранил данные, то второй не может их поменять. У редиса была фича set only if not exists и у sql есть оптимистик локи. А у influxdb что?
Там одна дашборда с селектором на сотню опций каждый из которых только один график истории изменения одного инта показывает. Батчем оно генерируется для оптимизации, но потом может быть что-то поменяется
Не нашёл способа делать это хорошо. Буду писать данные в редис и сделаю отдельный сервис для переброса их в инфлюкс. Но это пиздец, ребятки. Лучше бы сразу норм бд выбрал.
Это немного странно что у тебя разные реплики считают одну точку во времени и ещё при этом получают разные результаты.
Выставляй данным с разных реплик разные таги. Тогда конфликтов не будет, и самой БД с сериализацией полегче. Графане пофиг потом как строить.
Вот есть ещё более маргинальные варианты: https://awesome-time-series-database.netlify.app/
>Но это пиздец, ребятки.
Солгы, пиздец. Тогда уж лучше брать prometheus+pushgateway, та же схема выйдет но инструменты покрепче.
Aws timestream, не? Она бессерверная, платишь только за количество запросов. 100 запросов в секунду = 2,5 миллиона секунд в месяце x 100 запросов = 250 миллионов запросов x $0.5 = $125/месяц. Хотя выходит конечно дороговато.
https://docs.aws.amazon.com/timestream/latest/developerguide/Grafana.html
Особенности задачи. Каждай реплика немного мутирует предыдущие данные. Работает в паралель и под капотом сервиса мутации есть рандом. От того реплики и дают разный результат. Но мне не важно какой принять. Главное чтобы графана показывала только один и после того как она этот результат показала он не должен меняться. Думал тэг реплики добавить или просто рандомный тэг и в графане отображать только данные с максимальным значением этого тэга. Так можно выбрать один правильный вар ант даже если несколько реплик в одну секунду несколько результатов напишут. Но преблема в том, что если одна реплика запишет одно значение, но отобра9ится в графане или пойдёт дальше в пайплайн, а потом другая запишет другое значение в эту секунду с большим тэгом, то значение в графане поменяется. Кстати вероятность такого 50 процентов при двух запися0 в одно время. Так что не вариант. Можно внедрить задержку с графану чтобы показывать когда реплики точно больше не станут писать новые данные в эту секунду, но эта задача чувствительеа ко времени и 9адержка не позволительна
Нет aws. Это вмки в приватном облаке на опенстэке. Сервисы потом в кубер унесу, а для бд ha кластер сделаю
Не разбираюсь как это сделать, но погуглю. Спасибо. Но прометеус всё таки инструмент для метрик. Боюсь нарвусь на подводные камни когда начну свои данные туда писать. Плюс скорее всего придётся поменять прометеусу внешний сторадж на какую-нибудь ха бд и сам прометеус закинуть в кубер для больше надёжности, но пока не знаю как и можно ли вообще. Плюс пушгейтвей не видел ни разу. Думаю долго и сложно буду всё это затачивать
>пойдёт дальше в пайплайн
Тэк, у тебя получается две реплики считают разные результаты, какой-то один из них случным образом уходит в БД. Затем на основе этого значения из БД реплики должны начать считать новую калькуляцию?
Какое время между событиями "реплика посчитала х['12:56:34.904']=0.0024", "реплика добыла из ДБ значение х['12:56:34.904']=0.9864 чтобы начать считать дальше"?
Так понимаю, что ты пытаешься скинуть с себя логику принятия решения и отдать её костылям в ТСДБ.
Не совсем понял в чём проблема. Можешь подробней? Если реплика для нужной секунды записала какое-то значение в дб, то прочитать она или любая другая реплика может только это значение. При этом для одного ключа только один раз и только одна реплика может установить значение. Все остальные попытки от любых реплик должны фейлится. Это же просто свойство дб. В редисе оно есть и сейчас пытаюсь заюзать его. Не понимаю какую логику я пытаюсь переложить на дб
>Какое время между событиями "реплика посчитала х['12:56:34.904']=0.0024", "реплика добыла из ДБ значение х['12:56:34.904']=0.9864 чтобы начать считать дальше"?
Одна секунда. Ключи всегда целое количество секунд. Данные генерируются в реалтайме. Сначала реплика проверяет текущее время, сверяется со временем последней записи в дб (значение кэшируется в памяти реплики и запрос к дб делается только1 раз) и если данных за эту секунду нет, то отправляет последние данные из последней известно (не предыдущей) секунды в сервис мутации и пытается записать результат в дб. Между действиями слип на 200 милисекунд минус время выполнение раунда (должно быть 5 раундов в секунду примерно). Проблемы должны быть только если дб недоступна больше секунды и в эту секунду реплика не записало значение в дб. Пока у меня нет инструкции как такое хэндлить и нужно ли генерить данные задним числом, но чуть что придётся делать
Всё ломается как только ты делаешь среду распределённой. Когда у тебя появляется несколько инстансов бд - лаг репликации может легко перевалить за несколько секунд, и то что в бд значения не найдётся не будет гарантировать ничего. Может в редисе есть заклинания для форсированной проверки записи на остальных нодах, но в классических сикулях - это очень распространённая трабла.
Логика не основана на отсутствии значения в бд. Если в бд нет значения, то реплика просто пишет туда своё. Если 2 пишут одновременно, то только одно должно сохраниться. Рэдис такое точно позволяет даже распределённы. Я же не дурачок полагаться на значение прочитаное из бд. Ведь может быть ошибка разных time of check и time of use
классический бардак на галере.
господи, когда уже вас в ядерный пепел как наиболее стабильную субстанцию превратят.
Это не галера, а иностраный инвестфонд, который создаёт пол процента мирового интердей оборота среди всех hft торгов на nyse. И это софт для тестов. Симуляция неадекватного поведения моделей в реалтайме и анализ поведения бэкенда на подобные данные. Тестирование умной защиты на дурака.
ну так вот и занимайся своей админской работенкой.
Ученые за тебя решат какую архитектуру построить и как именно.
Но это задачу на меня свалили... Это я должен решить...
пойду в тимлиду с портотипом на рэдисе на следующей неделе, но у него миллион делов и похуй как внутри работает главное тасочку загрыть и интрумент команде дать
решить блять, что? Это практические нерешаемая проблема.
HFT - по сути это борьба с рыночком, с суммированной в одну цифру информацией о мыслях и действиях миллиардов людей. Эти модели не могут вести себя "адекватно" в принципе.
Сваливай все на ученых. Это их модель и их ответственность.
А у тебя просто виртуалки должны работать как часты.
Так они и делают модели. Инженеры строят быстрый бэкенд. Тестировщики тестируют. А таперь тэстировщикам нужен стенд для реалтайм симуляций. Тестовые модели они сделают. Мне мок модель уже дали. Надо теперь каждую секунду ей в базе мутировать значения. Потом в девами придумаем как прикрутить что получится к их бэку. Дальше тестеры добавляют функционал, который им нужен, а я просто поддерживаю этот стэнд чтобы там непрерывно паралельно гонялось много тестов. Мне не надо перестраивать процессы в нашей команде. Мне задачу решить надо
nnmclub -> docker udemy
>понапихали всякой шняги типа js, salesforce, project management и прочего oracle
Ты так говоришь, как будто это плохое. Мне нравится, я изучаю.
/wrk
Чё читать? Что смотреть?
Хочу вкатиться в девопс
Мимо сисдрочун у оператора
Бааааамп
Тебе же выше нарисовали колесо сансары. Иди ходи по кругу и изучай все мокрые письки.
---
Каг же у меня горит от картинки выше. Все SaaS писечки бесплатно без СМС но с кредиткой собрали.
Какого фига там zabbix есть, но нет prometheus + grafana и opensearch?
Поехавшие блядь.
Ну и толку учить инструментарий без знаний принципа связывания этого барахла?
Что вообще должен знать начинающий DevOps?
Ты уже работаешь?
Да. Что хотел-то?
Дайте плс советов мудрых и накидайте контента для совсем дерева типа меня, что б было понимание что я, блядь, вообще продавать буду. В общих чертах вроде подразобрался, но каждая крупица инфы дается с неебическим боем, минут 20 убил на то, что бы нагуглить таки что такое в девопсе пайплайны и всё в таком духе. Короче буду благодарен за любой совет.
Братюня, это не ракетная наука. Гидродинамику и сопромат учить по книжке с дифурами необязательно. И на начальном этапе совершенно точно что вредно. Лучше получить 80% быстро доступных знаний на практике, а вот на оставшиеся 20% уже можно почитать и книжку. И ты уже сам разберешься какую.
Это ремесло знания в котором в основном получаются и передаются практически в процессе работы. Ты близко не получишь такого же скила в лепке глиняных горшков, пусть даже прочитаешь все книги ей посвященные, в сравнении с полуграмотным работягой который слепил свои 1000 горшков.
Поэтому если обладаешь знаниями на уровне системного администратора (Linux + сети + простейший скриптинг) устраивайся работать ops'ом и в процессе научишься.
5 лет работаю в сфере разработки ПО (80% что называется "devops" / 20% кодинг). Хочу свичнуться в 80/20 кодинг/devops.
В воркаче есть ит-тред, попробуй там спросить.
Но вообще проще всего из линуксовых админов вкатиться, наверно
Хз. Я бы на твоём месте гуглил всякие промо статейки по ключевым словам "CI/CD для бизнесса" и потом поверхностно разбирал бы все непонятные слова из этих статей. Продавать ты будешь автоматизацию именно этих процессов.
Атдушы, бро.
Канальчиков на ютюбе мб закинешь каких? Скилбокс понравился своей водянистостью, что мне наоборот в плюс, ибо разжевано совсем в труху.
Посаны, может кто-нибудь помочь собрать образ в канико?
С какого-то хера эта сука отказывается собираться и пишет:
/busybox/sh: can't open 'sh': No such file or directory
А по сути должна работать как надо, образ подходящий.
https://pastebin.com/pKNbsiLW
>канико
NENUJNO
В werf добавили (помимо всех прочих фишек) сборку через buildah (т.е. без докера)
Поддержи отечественного производителя, те чо жалко, да?
Да мне похуй, мне бы заставить эту залупу рабоать.
ни разу не devOps и вообще мимокрок, но тут же прямо написано, что по пути /busybox/sh такого файла нет
>это должность такая чтоли?
Да. Нечто среднее между сисадмином и программистом.
>И в чем заключается его работа?
В автоматизации задач и в поддержании нормальной, устойчивой работы сайта/сервиса. С развитием технологий появилась такая штука как IaS ("инфраструктура как код"). Кодом можно за 2 секунды развернуть хоть целый датацентр. Задача девопсера - написать код, который поднимет 100500 сервисов, и потом следить чтобы эти сервисы нормально работали. Чтобы условную базу данных не могли задудосить. Чтобы обновления накатывались и многое другое. Различие с админом в том, что админ больше с железом работает. А девопсер больше с кодом работает.
Аноны, нужна помощь win сервер админов.
Возникла проблема с админом-макакой, который ночью чего-то поменял на RDP сервере с десятками пользователей и одного зацепило так, что сбросились настройки (подключение к базе 1c), сменился язык системы и пропали все документы этого пользователя.
Через Shadow Explorer прошерстил теневые копии за последнюю неделю, но у этого пользователя вообще не отображаются никакие личные файлы. Возможно ли, причина в том,что файлы были созданы ранее, а vss создавая инкрементальные копии, не захватила изменений?
Попытки восстановить через Recuva, R.saver помогли восстановить пару файлов из нескольких десятков.
Как можно было так всё поломать?
ПРИШЛО ВРЕМЯ ПЕРЕУСТАНАВЛИВАТЬ ШИНДОШС... ШИНДОШС САМ НЕ ПЕРЕУСТАНОВИТСЯ.
Ты тредом не ошибся? Спермопитушек?
Слетание профиля в винде распространенная проблема (покрайней мере в XP) ищи в гугле как фиксить (переключиться на старый профиль).
Анончик, я спросил совета в /s и меня послали к вам. Шинда сервер 2019.
А админ-еблан, который его админит, не понимает что и как произошло.
Спроси в wrk, в IT-треде
дык, всё что нахожу это то, что куб перестал присылать статус и всё. хотя кубелет на обоих нодах активный
Как заставить разные контейнеры в разных docker-compose работать с одной и той же базой?
На одной машине запущено 2 докер-компоуза, в каждом из них из сервис database, который работает с базой Postgres, вместе их запускать не получается, т.к. "port laready in use", как это фиксить?
Не непонятно что ты хочешь в конечном итоге: 2 базы или 1. Такое чувство что ты не разобрался, но уже пришел с решением.
1) Чтобы 2 базы - используй разные порты на хосте или не используй их вовсе, если не нужны.
2) Чтобы 1 базу - используй 1 сеть в обоих docker-compose.
Вот есть разработчик, которому приспичило поадминить. Не подевопсить, а именно поадминить, ну там свитер, шредер, ололо. Посоветуйте какой-нибудь максимально полный чеклист навыков, которыми нужно обладать. Чтобы можно было посмотреть и оценить, насколько имеющийся опыт соответствует и где белые пятна.
Какой ИМЕННО администратор? Администраторов несколько. Есть сетевой администратор, системный администратор, администратор баз данных, текоммуникационный администратор. Если системный администратор, то тут опять же какой? Есть системный администратор linux, есть системный администратор windows. Если сисадмин линукса, то там нужно знать его устройство, скрипты, виртуализацию, безопасность и окрестрацию процессов.
>там нужно знать его устройство, скрипты, виртуализацию, безопасность и окрестрацию процессов.
Вот конкретнее списком это где-то есть? Чтоб прям по пунктам, по типу: уметь делать то-то, для этого нужно знать то-то, ртфм к таким-то командам, например.
>Вот конкретнее списком это где-то есть?
https://www.cbtnuggets.com/it-training/it-paths
Кликаешь по systems admin/linux, там всё будет. На торрентах можно найти.
Win10-11 не нужны.
И посоветуйте какое-нибудь чтиво по Docker, помимо документации.
Спасибо.
Как вкатиться в девопсинг? какие курсы?
О, у меня по немного похожей теме вопрос. На одной машине запускаем 2 разных джанго-сервиса, надо обеспечить внешний доступ в админку каждого из них. Оба работают через нгинкс.
Ну допустим мы можем поменять урл для входа в админки, в первой будет /admin-alpha а во второй /admin-beta, но все равно конфликт, ведь оба приложения будут сервиться по 80 порту
Это через субдомены лучше наверно как-то сделать или что? С нгинкс раньше особо не работал
Не нужно на разных портах. Конфигурации должны быть максимально одинаковыми. Запомни это раз и навсегда юный падаван.
Если ты ходишь в сервисы через nginx, то нет смысла делать их доступными с хоста (настраивать порт форвардинг). Поэтому:
- засуть все 3 сервиса: беки + nginx в одну сеть (не дефолтную в которой не работает резолвинг)
- выставь на хост только порт nginx
- настрой в nginx роутинг в апстримы беков, где адрес апстрима - имя контейнера или сервиса. server_name можешь использовать 1 или 2, это не имеет значения. Лучше конечно когда одно, чтобы потом еще с корсами не ебстись.
А потом у него контейнеры не запустятся, потому что будут одинаковый порт иметь и подниматься на одной тачке
Так он не пробрасывает их порты на хост, але.
Тебе бинарная совместимость с шапкой так нужна или просто ололомамсмотриэнтерпрайз?
Для совместимости шапка разрешает юзать сколько-то там установок. Для энтерпрайза какой-то роки ну ты серьёзно?
Что это значит?
>ололомамсмотриэнтерпрайз
Это
>Для энтерпрайза какой-то роки ну ты серьёзно?
То есть центос - это норма, а когда та же команда переименовалась в роки - это уже другое?
про сколько-то установок не знал кстати, спасибо
Запили свой systemd сервис с запуском нужных тебе команд. В гугле тысячи инструкций.
https://www.suse.com/support/kb/doc/?id=000019672
Я юзаю подман с запуском системд от нужного пользюка + лингеринг.
А еще он из коробки в поды может.
Посмотри, может и тебе зайдет:
https://www.youtube.com/watch?v=RqqKF0ubtYE
640x360, 4:54
Спасибо за анонимную валидацию.
Запустить с нужной политикой рестарта --restart unless-stopped. Демон докера сам запомнит кого когда стартовать.
https://docs.docker.com/config/containers/start-containers-automatically/
Ну и лучше всё конфигурирование в docker-compose сводить.
Просто всегда кайфовал от Линуксов/ковыряния с автоматизацией/етц.
конечно
Сейчас все руками, из автоматизации только батники для сборки пакетов, у программистов у всех разные версии студии, в общем все печально
>там девопс шиза в полный рост
>отдельный чувак ставит виртуалку
>отдельный туда сеть докидывает
>отдельный ансиблом проходится
>отдельный пердолит сервис который там будет работать в итоге.
Ты понимаешь что то что ты написал полностью противоречит понятию devops?
Devops это про уменьшение границ, а не про их создание.
Если бы в организации были devops процессы, то не было бы 4 выделенных на 1 задачу человек. как их блядь заменять если они уйдут в отпуск, уволятся, собьются автобусом и т.д.? А было бы 2 и то только из соображений заменяемости.
Но тут надо понимать что devops процессы не обязательно отменяют инженеров которые несравнимо больше про инфраструктуру чем про разработку (куда возможно ты бы и мог/хотел вписаться). Которые например могут подготовит 2 чувакам выше готовые шаблоны раскатывания и в которые последние лишь подставят свои данные и/или минимально их допилят. Такое разделение на уровни происходит чисто организационно, ибо кто-то должен пилить обще проектные сервисы, которые обычно в чистом виде про инфраструктуру, типо: мониторинг, логирование и т.д.
Еще из написаного понятно что такие вещи как IaC и CI/CD там не используются. Первые 2 задачи полностью заменяются на terraform. Отдельный запускатор ansible - это так же просто шаг в pipeline. Если кто-то что-то запускает/делает самостоятельно - читай руками, как вообще такое ревьювить? Как понять что он делает это правильно? А когда он уйдет, где останутся знания как правильно запускать?, в .bash_history его собственного ноутбука? Писать на каждый чих инструкции и ебаться с их актуализацией? Нафиг они нужны когда есть "инструкция" из воспроизводимых шагов в CI, названий шагов в ansible, которые принципиально всегда актуальны.
Я бы не пошел в компанию с такой организацией процессов.
Терраформ у нас тоже юзается. Я в принципе про мелкое нарезание. В провайдере ~все делали ~всё. Воипщик сам себе vm делает и вланы тащит, вендоадмин хостинг с линуксом пердолит и тд.
И я про то, в крупных конторах вообще такой санаторий это норма?
В крупных не работал. максимум 200 ИТшников (включая манагеров/аналитиков/дизайнеров и т.д.)
С точки зрения теории (devops) совсем все делать в одно лицо неправильно, нужна слишком широкая компетенция, такие люди дороги и их замучаешься заменять. А вот делать минимально необходимые вещи из смежных областей это хорошо и правильно. Поэтому, чистое ИМХО, виндузятники и воипщики спавнящие себе виртуалки и настраивающие вланы/нетворкинги - это хорошо, это необходимо для их работы чтобы делать её быстро, это просто и в рамках общей компетенции. Виндузятники лезущие в линукс (мы о крупной компании) - это лишнее, это отдельный объемный мир, разные подходы и инструменты, этим должны заниматься разные люди.
> И я про то, в крупных конторах вообще такой санаторий это норма?
В сбертехе, конкретно в нашем департаменте, все так же, как ты описал.
Ну и да, с феласафией девопс это не сходится никак.
>>394326
Нормальная, только большинство девопсов с админским прошлым, они тебя попускать на собеседованиях будут за незнание сетей и админских инструментов.
Но я знаю сети: у меня бакалаврская степень по профилю, связанному с сетями и инфраструктурной залупой...
(Нас, помнится, даже препод ебал материалами, которые обычно юзают для подготовки к сертификации ЦИСКО; а вообще, неудивительно: он-то был начальником сисадмином в одном крупном банке).
Короче, да, ладно, пройду роадмапу по девопсу и вкачусь. Спс
> Нормальная, только большинство девопсов с админским прошлым, они тебя попускать на собеседованиях будут за незнание сетей и админских инструментов.
Насколько глубоко нужно знать сети? Я дальше поверхностного понимания протоколов TCP, IP и Ethernet фреймов не погружался. Про IPv6 вообще ничего не знаю, кроме того, что там хер запомнишь адрес. Со всякми цисками тоже дела не имел.
И что подразумевается под админскими инструментами? Можешь привести примеры? Слишком обтекаемо звучит.
>Ну и да, с феласафией девопс это не сходится никак.
Давай по пунктам, что конкретно не сходится?
Помоему все совершенно сходится.
Девопс это про быструю доставку фитчи до маркета и получение обратной связи по каналам мониторинга. Стало быть чтобы это работало на полную этим должны заниматься сами разработчики, т.к. у них значительно большая экспертиза в разрабатываемом продукте (в то время как ci pipeline или мониторинг - это всеголишь простой шаблон, который довольно просто поправить поаналогии с тем как есть без каких-либо глубоких компетенций). Поэтому разработчики нацеленые на результат должны максимально делать все сами, не ждать пол дня когда отдельный "devops" пропишет им 1.5 строчки в prometheus rules например. Отдельный "девопс" может разгребать глобальные легаси говна и тушить прочие пожары, и это не повод для того чтобы фитча задерживалась от выпуска на маркет упираясь в 1.5 тривиальные строчи.
$ git remote add ipfs http://ipgit.herokuapp.com/
$ git push ipfs
$ git clone https://ipgit.herokuapp.com/QmZUnAU4Vn7DvDHEnJ1dz2uV2dimf79HNXdffgY9MbQGWP
держу в курсе, извените за неровный почерк оффтоп
Какая ирония, девопс эволюционировал из программиста что аки эфириал спустился помочь менее развитым существам
> Насколько глубоко нужно знать сети?
Чем глубже, тем лучше. Книжку Олиферов точно лучше прочитать.
> И что подразумевается под админскими инструментами? Можешь привести примеры?
Жму/Пинус, как само-собой разумеющееся.
Bind, LDAP, реверс-прокси, прокси-сервера, веб-сервера, средства диагностики сети (tcpdump, wireshark, nmap, netstat, dig) - очень важно.
KVM, Ceph тоже желательно
Kerberos, FreeIPA могут понадобиться.
>>395333
Девопс это не про пайплайны, а про взаимодействие между членами команды. Подход "сюда ходи, сюда не ходи" это не девопс, еще раз повторяю. Девопс это two pizza team, CALMS и agile.
Мне навесить network на все сервисы для нгинкса? Сделал так, оно реально работает, но БД почему-то - нет (говорит что нет коннекшна по указанном урлу). Втф? Как работает network вообще?
ну так и вытащи установку зависимостей повыше.
что там у тебя? nodejs ?
Нет никакого секрета там. Разберись что от чего зависит в твоем конкретном случае.
А тебе повезло, потому что твой вопрос слишком простой.
Создаешь четвертый проект с nginx с еще одной network.
Но в остальных трех, объявляешь network external.
например, так:
services:
# ...
networks:
default:
name: my-pre-existing-network
external: true
Хм, работает даже если не объявлять ее как external
В каждом из 3 проектов запулил "локальную" сетку которой связал все сервисы. И помимо нее в каждой еще присутствует общая core_backend_network, ей связаны сервисы которым нужен nginx и сам nginx разумеется. Не совсем только ясно как работают эти network - по идее сеть нужна только чтобы связывать сервисы из разных docker-compose, но вот когда я решил убрать одну из локальных сетей, коннекшн к БД начал падать
Призываю на помощь опытнейших тупому стьюденту.
В чем цымес
1. в виртуал боксе создаю обычную линюкс машину
2. успешно завершил установку
3. запускаю свежую ось, намертво зависает
Вот в чем может быть проблема а?
В настройках ковырялся я ебу, всё перепробовал, так же намертво зависает.
Грешу на то что виртуал бокс установлен на диске С а я хочу установить ВМ на другой логический диск Е, который находится физически на другом ссд-шнике
Памагити!!!
Чё за дистр? На каком моменте зависает? Что пишет сериал консоль? Причин может быть куча.
да хоть какой, все перепробовал, от дебиана с федорой до арча с опен сузе. такая же шляпа((
а так сейчас убунту
что там в консоли пишется не проверял
В железе. У меня были похожие проблемы когда пытался поставить на ssd который через usb подключал. Как контрить? Не делать так. Работать с одним диском.
А с чем такая йоба ситуация связана? Неужели в виртуал боксе не предусмотрена возможность установки ВМ на другом устройстве. Чо за фуйня
Предлагаю насрать под дверь разрабам виртуал бокса
Если хочешь перестать быть мальчиком и стать Мужиком, то осваивай UNIX.
Да какое чсв, я просто заебался с таких вечно логи выпрашивать и рофлю
> Ты то сам в дебиане и красношапке разберешься одновременно?
А в чем проблема?
Смогу в что угодно, если нужно будет. Но фряха не нужна.
Отличный вопрос для технического интервью
Пик2 - залетный зумерок
choose your side
Да не доминировала она никогда.
Ну, возможно, где-то до 2000 года "доминировала", но я сомневаюсь что тут можно встретить двачера старше меня, чтобы об этом уверенно подискутировать.
>>403702-кун слева
Все объединяй в один проект.
Но добавь depends_on и healthcheck.
тогда compose запускает в нужном задуманном порядке
RedHat 1.0 вышел в 1995 году.
В чем проблема была его использовать? Нет обнов - читаешь рассылку и ставишь пакеты вручную.
Единственное применение - почему-то такой софт как mpd работал на фре лучше (наверное потому его не было на линуксе).
В остальных местах хваленую производительность фри еще в нулевые обосывали.
Это 4 разных репы. Не в моих силах их слепить вместе
> Фряха всегда доминировала в постсовке
Пересобирали порты? Обновляли систему в сингл юзер моуд?
>фряха была дефолтом года до 2010
Она была плюс-минус популярной, но точно не дефолтом. У провов где я чалил практикантом были дебиан и соляра.
мимо_вкатился_в_линуксы_в_2005
> 3
Похоже я шутки не понял. А что такое девопс? Без "хипстерских" штук? Для меня всегда девопс = CI/CD (и возможно +инфраструктура, хотя этим админы должны по хорошему заниматся)
> А что такое девопс?
Метод организации рабочего процесса. Один из его аспектов - максимальная автоматизацич процессов. В частности - CI/CD
> Для меня всегда девопс = CI/CD
Так и есть, но не только. Это изначальное определение, термину уже 10 лет в обед. Грубо говоря, они интегрируют средства разработки, доставки, тестирования и обслуживания, чтобы все разрозненные инструменты стали единой нервной системой. Это интеграция сложных программных решений с целью максимальной оптимизации процесса разработки программного обеспечения.
Изначально это была ниша для недоразработчиков и недоадминов в одном флаконе.
> хотя этим админы должны по хорошему заниматся
Сегодня это ниша для хороших разработчиков и отличных админов. Ну, если ты хочешь, чтобы твой процесс меньше походил на гору костылей, склеенных изолентой.
Костик, ты?
Соляру я удалил достаточно быстро.
Все должно быть однородно, покрашено и посыпано песком.
1) включить персистентное хранилище: https://redis.io/docs/manual/persistence/
2) вынести это хранилище на вольюм
Но надо помнить, что редис всегда сидит в памяти, он может дампиться в файл, но в памяти всегда всё.
Это для админов, какой блять разработчик.
Ты умел то лл или лс -ла и апт адпейт и апт инсталл, а теперь в псы хочешь, да?
Пришел к вам за советом.
Я накодил типичную рест хуйню, у неё есть БД в виде постгреса.
Хочу реализовать по возможности приближенную к реальности инфраструктуру. И из сказанного у меня вытекают следующие проблемы.
1. В каком виде должен работать постгрес? Мне кажется не правильным если засунуть его в контейнер. Если даже так не делать, то лучше его в соседней ВМ запустить или рядом с докером?
2. Как развернуть прометей? Его экспортеры должны работать в контейнерах а само хранилище в самом ВМ?
3. И что лучше использовать? Compose или Swarm? Что посоветуете? Кубер сразу отбросил так как это уже оверхед получается.
Буду рад если поможете студенту:)
>1. В каком виде должен работать постгрес?
Максимально так же как доставляется все остальное приложение. systemd например запускает заметную часть процессов в неймспейсах (читай как докер)... тебя же это не парит?
>2. Как развернуть прометей?
А какие у тебя есть варианты кроме ВМ? Хранилище на волюме.
Мне больше нравится вариация на тему прометея - Thanos. Им можно в s3 хранить. И еще всякие плюшки.
>3. И что лучше использовать?
Сварм не нужен практически ни для чего. Compose пока приложение как-то адекватно вмещается на 1 (может 2) хоста или кубер.
Смотри, я правильно понимаю что мне будет правильнее поступить следующим образом.
У меня будет три контейнера:
1. Само приложение
2. БД в качестве постгреса
3. Прометей
И для всего это использовать compose.
Кстати такой вопрос. Могу использовать Ansible для выполнения развертки в пару движений, как я понимаю он нужен для автоматизации развертывания инфраструктуры. То есть я пропишу все что нужно и мне останется просто запускать Ansible который сам мне все настроит. Норм будет так сделать?
Бекинг сервисы отдельно, само придожение отдельно. Т.е. 3 докер композа.
Скорее всего на данном этапе тебе не нужен ансибл. Пока твоя инфраструктура проста, ты не выкатываешь часто новые сервера, или review окружения из этого же кода (IaC) - он ненужен. Достаточно шелл гитлаб ранера на хостах и вменяемого шелл кода в jobs. (внемяемого - это который просто запускает, а не занимается какой-то ебалой с манипуляцией стейтом на хосте и прочей неидемпотентной хуергой)
Тааак, ща пойдут тупые вопросы.
Я начал путаться в определениях. Докерфайлы нужны для создания образов, а докер компоузы для запуска много-контейнеров из образов с помощью одного yml файла. А ты предлагаешь три докер компоуз файла (надеюсь не жопой читал твой ответ)
И по поводу прометея, насколько я понимаю. Он состоит из хранилища и экспортеров, И как я понимаю мне нужно при описании образа приложения и БД в докерфайле, ещё и прописать экспортеры, пральна? Ну к примеру node экспортер, postgres exporter.
>В каком виде должен работать постгрес? Мне кажется не правильным если засунуть его в контейнер
Я лично против "засовывания" баз данных в контейнеры. Потому что докер был спроектирован для stateless-приложений в основном, а БД по своей сути противоположная докеру субстанция. Ты конечно можешь подключить сетевой диск, но что если какой-нибудь еблан нечаянно сотрёт этот диск? Даже допустим ок, ты сделал масштабирование, размножил PostgreSQL на 10 машин. Ок. Вопрос: а как ты тогда сделаешь репликацию? Как один инстанс узнает о существовании других 9 инстансов?
Короче моё личное ИМХО - БД + Докер = беспонтовая идея. Базы данных не созданы для того, чтобы их запихивали в докеры.
>Можешь пожалуйста рассказать про stateless и statefull сервисы.
Да ну а что про них рассказывать? Моё личное мнение, что ты стреляешь по мухам из гаубицы. Один только постгрес отожрёт гиг памяти, плюс прометей. Зачем эта мозгодрочка ради каких-то апи. Я бы взял https://cloud.yandex.ru/services/ydb Где уже будет няшная админка. Зачем эти прометеи, если ты можешь платить яндексу 20 рублей за миллион запросов. И там у тебя уже всё будет на блюдечке. Бекапы. Админка. Само масштабируется. Также снёс бы прометей. Остальное, ноду (или что там у тебя), залил бы в контейнеры, и там дохуищи памяти и ресурсов освободилось бы после сноса ненужной постгри и ненужного прометея.
Какой сетевой диск? Чем докер отличается от запуска той же субд в chroot окружении?
Вот контейнеры - https://cloud.yandex.ru/services/serverless-containers 16 рублей за миллион вызовов. Для большинства задач этого хватит за глаза. Прикинь, это считай 30 тысяч запросов апи в день. Там есть уже и мониторинг, и автомасштабирование, не нужно никаких swarm, кубернетисов и прочего. Просто берёшь и используешь.
Про chroot я ничего не говорил, читай выше, я писал о том, чтобы выкинуть нахуй бд. И заменить на облачную/managed-решение. Где уже есть бекапы, мониторинг, няшная админка. Вместо того чтобы делать костыли с прометеями и самому костылить бекапы.
Давай тогда постараюсь вообще объяснить зачем я так заморачиваюсь. Если вкратце:
1. Хочу понять про то как вообще работает инфраструктура, как её готовить, в перспективе хочу перекатиться в девопс (сейчас сам занимаюсь перформанс тестированием)
2. У меня на работе новички после стажировки нихрена не умеют и не понимают. А в банке(где я работаю), стек следующий, мониторинг в виде Prometheus + Grafana, для оркестрации Openshift, БД Postgres.
3. Из-за чего я решил что разработаю простой сервис с БД, со стеком из 2 пункта. Что-бы маслята научились работать с мониторингом, поняли какие компоненты нужно мониторить в БД, генерить данные в БД, научиться разворачивать тестовую среду на линухе, я там ещё сваггер добавил (ахуенно получилось).
Вооот, для этого я и ебу вам мозги, да, многим покажется оверхедом, но в перспективе стажеры придя на проект будут мозги поменьше ебать и адаптироваться быстрее.
По мне так, это дрочка ради самой дрочки. Не знаю что сказать. Здесь нет рационального зерна. Я лично когда делаю проект, руководствуюсь той логикой, что мне нужно экономить деньги. Мне какбе не похуй, переплачу ли я лишние 500-1000 рублей в месяц или не переплачу. Если у меня контейнер с БД/прометеусом, это одна цена. А если нет БД/прометеуса, это другая цена. Соответственно, под БД нужно и машинку помощнее заказывать, докупать отдельный инстанс. Если тебе похуй на деньги... ну блять можно хоть суперкомпьютер грей заказать. А я вот скряга, у меня чем больше инстансов крутится, тем больше денег капиталисты высасут из моего кармана. Если у тебя миллион всяких балансировщиков, мониторингов, значит ты и будешь платить миллион!
Смысла повторять за банком я не вижу. Где ты, а где банк. У банка немерянное количество денег, они могут нанять администратора бд, сисадмина, девопсера и всё сделать на опенсоурсе. Если я делаю хобби-проект, то беру как правило всё готовое. Если тебе предлагают ГОТОВУЮ базу данных, настроенную, с админкой за 20 рублей в месяц, то и хуй с ними, с этими двадцатью рублями! Тоже самое с кафкой, опеншифтом, и т.д. Я дал ссылку выше на бессерверные контейнеры, они берут всего 16 рублей за миллион вызовов. Опять, няшная админка! Хуй с ними, с этими шестнадцатью рублями!
Две ссылки выше дал - ВСЁ ГОТОВОЕ! Я этими двумя линками убрал неоходимость в Prometheus, Grafana, Openshift, Postgres. К тому же, банк может быть связан юридическими обязательствами. Например, они возможно обязаны держать данные на российских серверах. У меня же обязательств ни перед кем нет. Я хочу - хостюсь у пиндосов. Моя основная цель:
1) Запустить сайт/стартап как можно раньше.
2) Сэкономить деньги.
На опенсоурсе делать МОЖНО, но выйдет дольше и дороже. Если хочешь, можешь сравнить мой вариант и свой. И потом сравнишь платёжки. Если ты учишься, то учись ради бога. Твой подход имеет право на жизнь, но там много подводных камней. Нужно думать как твою красоту огораживать в VPC, файрволлом, потом костылить бекапы бд, и т.д.
Лично я это вижу так, что ты жил себе не тужил, и вдруг тебе захотелось геморроя на жопу. И теперь костылишь никому не нужные велосипеды.
У меня всё.
По мне так, это дрочка ради самой дрочки. Не знаю что сказать. Здесь нет рационального зерна. Я лично когда делаю проект, руководствуюсь той логикой, что мне нужно экономить деньги. Мне какбе не похуй, переплачу ли я лишние 500-1000 рублей в месяц или не переплачу. Если у меня контейнер с БД/прометеусом, это одна цена. А если нет БД/прометеуса, это другая цена. Соответственно, под БД нужно и машинку помощнее заказывать, докупать отдельный инстанс. Если тебе похуй на деньги... ну блять можно хоть суперкомпьютер грей заказать. А я вот скряга, у меня чем больше инстансов крутится, тем больше денег капиталисты высасут из моего кармана. Если у тебя миллион всяких балансировщиков, мониторингов, значит ты и будешь платить миллион!
Смысла повторять за банком я не вижу. Где ты, а где банк. У банка немерянное количество денег, они могут нанять администратора бд, сисадмина, девопсера и всё сделать на опенсоурсе. Если я делаю хобби-проект, то беру как правило всё готовое. Если тебе предлагают ГОТОВУЮ базу данных, настроенную, с админкой за 20 рублей в месяц, то и хуй с ними, с этими двадцатью рублями! Тоже самое с кафкой, опеншифтом, и т.д. Я дал ссылку выше на бессерверные контейнеры, они берут всего 16 рублей за миллион вызовов. Опять, няшная админка! Хуй с ними, с этими шестнадцатью рублями!
Две ссылки выше дал - ВСЁ ГОТОВОЕ! Я этими двумя линками убрал неоходимость в Prometheus, Grafana, Openshift, Postgres. К тому же, банк может быть связан юридическими обязательствами. Например, они возможно обязаны держать данные на российских серверах. У меня же обязательств ни перед кем нет. Я хочу - хостюсь у пиндосов. Моя основная цель:
1) Запустить сайт/стартап как можно раньше.
2) Сэкономить деньги.
На опенсоурсе делать МОЖНО, но выйдет дольше и дороже. Если хочешь, можешь сравнить мой вариант и свой. И потом сравнишь платёжки. Если ты учишься, то учись ради бога. Твой подход имеет право на жизнь, но там много подводных камней. Нужно думать как твою красоту огораживать в VPC, файрволлом, потом костылить бекапы бд, и т.д.
Лично я это вижу так, что ты жил себе не тужил, и вдруг тебе захотелось геморроя на жопу. И теперь костылишь никому не нужные велосипеды.
У меня всё.
Да, это обычная дрочка, просто хочу сделать так чтобы все работала на локал хосте. Понимаешь? Именно благодаря этой дрочке я смогу разобраться наконец как работает прометей, в кишках постгреса поковыряюсь. Мне это нужно, я героически сам себе проблем создал и сам же хочу их решить пойми.
У меня к вам такой вопрос. Есть полтора годичный опыт работы qa макакой, очень хочу вкатиться в вашу секту. Продумываю самый эффективный способ.
1. Взять программу какого-нибудь курса по девопсу и начать учится по ней самостоятельно. Бесплатно, сердито и больно (и долго скорее всего). Нравится программа курса от яндекс практикума https://practicum.yandex.ru/promo/devops-course
2. Просто не ебать мозги и купить курсы, скрины с понравившимися курсами прикрепил.
3. ????
4. После того отучусь, опытом указать что год (ну или полгода) работал девоПсом и вкатиться без мыла.
5. PROFIT
Как на такое смотрят опытнейшие? Сам заебался от омежной работы клепания тестиков, хочу блять инженером гигачедом стать, который инфрой рулит йобана
Что умею сейчас:
1. Линух на уровне продвинутого юзверя
2. Умение говнокодинга на джабе, питона, баш и го
3. Сети, куда же без них
4. Чуточку в автоматизации на дженкинсе
5. И за докер шарю на уровне compose
Я тебя опередил анон и уже взял один курс. Склоняюсь к тому плану действия что буду самостоятельно ебашить.
Ну и ещё один вопрос появился. Обязательно ли знать AWS, Google Cloud, Yandex Cloud? И что там нужно знать такого чтобы они указывались в вакансиях.
Разве это уже не минимальный набор скилов?
1. Есть команда для удаления всех созданных через docker-compose вольюмов: docker-compose down -v
2. С помощью нее удалить конкретный volume нельзя
3. Для удаления конкретного volume используется: docker volume rm <CONTAINER_ID>
4. Но с помощью нее удалить volume созданный через docker-compose невозможно
А теперь, уважаемые знатоки, вопрос: КАКОГО ХУЯ БЛЯТЬ ЭТИ ЖИВОТНЫЕ ДО СИХ ПОР НЕ СУМЕЛИ НАМУТИТЬ НОРМАЛЬНОГО УДАЛЕНИЯ ВОЛЬЮМОВ? ВЫ ЧЕ СУКА СОВСЕМ ТАМ ЕБАНУЛИСЬ? МНЕ СТИРАТЬ ВСЕ ВОЛЬЮМЫ ПРОСТО ПОТМОУ ЧТО ХОЧУ ДРОПНУТЬ 1??
Когда юзаешь docker volume rm он серит что "volume is in use", потому что был создан через docker-compose. В docker-compose средств для удаления конкретного вольюма нет. Гениально нахуй.
>1) Запустить сайт/стартап как можно раньше.
А зачем тебе в пынявой федерации стартап? Его же отожмут.
Гораздо успешнее устроиться в ГазМясПромСпбБанк
docker-compose работает на уровне ПРОЕКТОВ.
Причем, по-прежнему ты можешь с помощью команд docker продолжать управлять ресурсами по-отдельности.
docker-compose down -v означает что нужно удалить все volume в проекте.
что тебе кажется нелогичным?
Ты слышал что я сказал? Я не могу удалить volume через docker если он был создан через docker-compose
aws - да, google cloud - опционально, яндекс - если остаешься в рф и будешь работать на рф конторы, то задроть его
Да, я это видел.
Назвался девопсом - разбирайся.
Это не обусловлено фактом использования docker-composer.
Выход есть в окно
Удалаем шкварной контейнер к которому эта ебола привязана. Затем епты удаляем сам вольюм. Желательно это делать не через консоль по-дедовски а как модный современный чувак, через portainer например
да это вкатуншика бомбанул.
дело в том, что выдаче гугла вот эта ссылка https://stackoverflow.com/questions/34658836/docker-is-in-volume-in-use-but-there-arent-any-docker-containers
второй короткий и понятный ответ - неправильный.
>Обязательно ли знать AWS, Google Cloud, Yandex Cloud?
Ну смотри короче... Обязательно ли знать два топовых сервиса, которые в совокупности покрывают половину рынка облачных технологий? Обязательно ли знать компании-лидеры отрасли, у которых по 16 лет опыта, миллионы обучалок, готовых решений и куча преданных фанатов? Обязательно ли знать уникальные фичи, которые предлагаются иногда в десятки или сотни раз дешевле, чем у конкурентов? Ты как думаешь?
Я это к чему писал пчел, просто я в силу своего малого опыта не знаю как такие продукты работают. К примеру говорят "переезд в облака", а что это фуйня означает? Типа у меня есть магаз, я решаю арендовать сервера у (AWS, Google, Yandex, Mail) и туда перевести бизнес. Это чтоль означает "переезд в облака"? Нууу как бэ и в чем соль? И какое тогда к нему отношение имеет кубер? Они предоставляют уже настроеный кубер?
Понимаю что я кашу написал, но я был бы рад обсудить эту тему и впитать опыт у мудрейших повелителей инфры
> Это для админов, какой блять разработчик.
Разработчик сможет сделать больше. Автоматизация решает.
>Это чтоль означает "переезд в облака"?
>Нууу как бэ и в чем соль?
Соль в готовых сервисах! Тебе не нужно думать какую операционную систему выбрать, организовывать обновления. Нужна база данных? Бери! Вот URL, вот пароль. Никаких apt-get install и прочего. Нужны очереди сообщений? Одну кнопку нажал - создалось! Оно само собой масштабируется. Не нужно гадать, какие инстансы выбрать. Сколько памяти выбрать. Какой проц подобрать. Нагрузка возросла, дудосят? Он сам добавил мощностей. Облака снимают лишний геморрой с жопы. Я меньше думаю о самом железе, и больше о коде. Я думаю больше в стиле "отправить 100 скраперов в параллели на 100 разных сайтов", а облака сами поднимают 100 серверов и делают то что нужно. Ну и плюс, это надёжно и штабильно. Я спокоен, что мой сервис переживёт хоть ядерную зиму. Чем ты сделаешь DIY, и первый зашедший школьник задудосит твой сайт. Ну и плюс, относительно низкие цены. Отправить 100 тысяч писем стоит 2 доллара! Или например сравни цены у AppFlow и у Zapier. У Zapier за 5,000 тасков в месяц цена $89, у AppFlow тоже самое в 17 раз дешевле - $5. Вот сам и думай.
Ага, вот теперь допираю аноний. То есть все продукты от Amazon, Google, Yandex и т.д. предоставляют готовые платформы которые настраиваются в пару кликов, имеют такие качества как отказоустойчивость, автомасштабирование и т.д. И тебе как владельцу магазина не нужно париться по поводу кубера и другой экзотической ебанины. Все это идет готовым от облачных решений. Так?
Да какой нахуй пгадмин. Вообще ни в чем шарит не надо, коллегу напряжешь, если что.
>Все это идет готовым от облачных решений. Так?
Да, так.
>как владельцу магазина не нужно париться по поводу кубера и другой экзотической ебанины
Дело совсем не в куберах. Допустим, у тебя есть популярный детский сайт, где пользователи могут загружать рисунки. Теперь представь, что на этот сайт набегают двачеры и загружают тонны порнухи и расчленёнки, с подписями АЗАЗА, САСАЙТЕ ЛОЛКИ!)) У тебя есть несколько вариантов:
1) Нанять модератора, который будет сидеть и проверять фотографии.
2) Убить кучу времени чтобы сделать микросервис. Обучить нейросеть, которая проверит текст на мат и картинки на наличие порнухи и расчленёнки. При том, она будет ошибаться в 50% случаев и тебе придётся ещё кучу времени доводить нейросеть до ума.
Либо
Заплатить писят рублей облакам за 1,000 картинок, чтобы ты одной строчкой проверил является ли картинка порнухой или не является. Или есть в тексте мат или нету.
Есть такие вещи, которые просто не решаются опенсоурс решениями. Ну например, запили мне сервис который переводит текст в аудио! Или сервис, который распознаёт звук и генерирует субтитры. Вот например, я хочу сделать клон твича. Стриминговый сервис. Как мне сделать так, чтобы видео декодировалось в реальном времени и потоком с буфферизацией раздавалось на тысячу зрителей? Вот для этого и нужны облака.
Собственно, фишка того же амазона и гугл клауда в том, что у них огромный опыт. Являясь data-driven компаниями, через них за 14-16 лет прошли миллионы клиентов. В итоге, они запилили сервисы под каждый чих. Любой сейчас, даже фермер придёт, скажет, мне нужно мониторить комбайны. Амазон скажет - не вопрос, чувак. Вот тебе рецепт - сделай так, так и так.
Настроить кубернетисы и автомасштабирование может любой дурак. Гораздо сложнее именно разбираться в отраслях. Они настолько заморочились, что расписали решение под каждый пук. Под гостиничный бизнес. Под умные дома. Под заводы. Например, как контроллировать качество деталей с помощью компьютерного зрения? А они расписали всё до мелочей.
Яндекс облако более молодая компания. Там больше того, что ты описал. А амазон он всё же технологический гигант. Там есть такие вещи, от которых мозг взрывается. Типа автоматической системы нахождения неполадок. Есть такая хуйня которая следит за логами, и в зависимости от того что происходит в логах, реагирует соотственно. Типа того, что если какой-то пидор пытается хакнуть веб-сайт, она может тебе послать смску/уведомление в слак/телеграм ПИДОРЫ НАС ХАКАЮТ!!!! А потом блокнуть пидора через файрвол или ещё что-то сделать.
Сорри за стену текста. Надеюсь понятно описал.
>Все это идет готовым от облачных решений. Так?
Да, так.
>как владельцу магазина не нужно париться по поводу кубера и другой экзотической ебанины
Дело совсем не в куберах. Допустим, у тебя есть популярный детский сайт, где пользователи могут загружать рисунки. Теперь представь, что на этот сайт набегают двачеры и загружают тонны порнухи и расчленёнки, с подписями АЗАЗА, САСАЙТЕ ЛОЛКИ!)) У тебя есть несколько вариантов:
1) Нанять модератора, который будет сидеть и проверять фотографии.
2) Убить кучу времени чтобы сделать микросервис. Обучить нейросеть, которая проверит текст на мат и картинки на наличие порнухи и расчленёнки. При том, она будет ошибаться в 50% случаев и тебе придётся ещё кучу времени доводить нейросеть до ума.
Либо
Заплатить писят рублей облакам за 1,000 картинок, чтобы ты одной строчкой проверил является ли картинка порнухой или не является. Или есть в тексте мат или нету.
Есть такие вещи, которые просто не решаются опенсоурс решениями. Ну например, запили мне сервис который переводит текст в аудио! Или сервис, который распознаёт звук и генерирует субтитры. Вот например, я хочу сделать клон твича. Стриминговый сервис. Как мне сделать так, чтобы видео декодировалось в реальном времени и потоком с буфферизацией раздавалось на тысячу зрителей? Вот для этого и нужны облака.
Собственно, фишка того же амазона и гугл клауда в том, что у них огромный опыт. Являясь data-driven компаниями, через них за 14-16 лет прошли миллионы клиентов. В итоге, они запилили сервисы под каждый чих. Любой сейчас, даже фермер придёт, скажет, мне нужно мониторить комбайны. Амазон скажет - не вопрос, чувак. Вот тебе рецепт - сделай так, так и так.
Настроить кубернетисы и автомасштабирование может любой дурак. Гораздо сложнее именно разбираться в отраслях. Они настолько заморочились, что расписали решение под каждый пук. Под гостиничный бизнес. Под умные дома. Под заводы. Например, как контроллировать качество деталей с помощью компьютерного зрения? А они расписали всё до мелочей.
Яндекс облако более молодая компания. Там больше того, что ты описал. А амазон он всё же технологический гигант. Там есть такие вещи, от которых мозг взрывается. Типа автоматической системы нахождения неполадок. Есть такая хуйня которая следит за логами, и в зависимости от того что происходит в логах, реагирует соотственно. Типа того, что если какой-то пидор пытается хакнуть веб-сайт, она может тебе послать смску/уведомление в слак/телеграм ПИДОРЫ НАС ХАКАЮТ!!!! А потом блокнуть пидора через файрвол или ещё что-то сделать.
Сорри за стену текста. Надеюсь понятно описал.
Девопсы никуда не делись, масштаб мышления изменился. Больше о самом коде/архитектуре думаешь, чем о железе/ос и прочем.
Есть один проектик (веб-сервер + sql + почтовик), который хочу задеплоить в облако.
В Докере и пайплайнах не особо шарю, всегда был хардкорным девом без суффикса -опс. Проект пилил на локалке. Поднимаю через docker compose up в папке проекта.
Теперь хочу залить код проекта на Битбакет дабы оттуда пушить изменения на сервак под хостингом AWS, DigitalOcean или Vultr.
У каких сервисов есть поддержка таких задач без лишнего пердолинга? Я так понимаю что пайплайн будет стопарить серваки на машине, переписывать папку докеровского проекта и делать compose up? В 2022-м скрипты для всего этого руками пишутся или уже придумали сервисы для решения таких задачек, где достаточно только конфиги прописать?
Ты охуенно все расписал анон. Крайне благодарен тебе!
Вытекают следующие вопросы, у меня сложилось впечатление что облачные вычисления это голденхаммер и серебряная пуля. Но я уверен у нее есть и свои недостатки. Можешь рассказать про них?
К примеру мне кажется продукты типа AWS, Google Cloud, Yandex Cloud не применимы к отраслям где данные жестко контролируются, те же банки, сами сервисы от государства и т.п.
Цена.
Вообще-то, отправить 1000 писем стоит 0 рублей, если ты так или иначе арендуешь сервер и знаешь как эта почта работает.
Все тут классно расписано, но это об услугах, которым нет альтернативы или о таких штуках как ALB (automatic load balancer), но вообще-то основная масса услуг - обычные виртуалки да дисковые тома. И они не дешевле.
>у меня сложилось впечатление что облачные вычисления это голденхаммер и серебряная пуля
Да, примерно так и есть.
>у нее есть и свои недостатки. Можешь рассказать про них?
Ну первый минус как челик выше уже ответил, это цена. Некоторые сервисы стоят просто космос. Особенно RDS, на EC2 цены тоже маленько кусаются (но это только некоторые, большинство сервисов очень дешёвые). Второй минус, vendor lock-in. Облака между собой не совместимы, то есть если ты запилил сайт на aws, но тебя бортанули из-за санкций, то перенести потом на azure/google cloud/alibaba cloud будет затруднительно. С опенсоурсами такой херни не случается. И третий минус, неочевидные затраты. Я вот недавно поднимаю сервис и мне прилетает счёт на $25, открываю страницу затрат, оказывается за то что я поднял vpc с nat gateway, за который $30/месяц дерут. Я такой, ачёвсмысле? Оно было платное? То есть там есть такие хитрожопые сервисы. Ну и в бесконечные циклы лучше не уходить, опять же, по той же самой причине.
А из плюсов - богатейший функционал. Всякие программы, типа поддержки стартапов, тебе дают от $1,000 до $100,000 (я подавал, но меня правда побородили потому что у меня не было сайта компании). Студентам, преподам ВУЗов тоже халявные кредиты дают. Если ты например аспирант и занимаешься научной деятельностью, тебе дают $5,000. Или если ты некоммерческая организация, занимаешься волонтёрством, то там тоже $1,000 дают.
>не применимы к отраслям где данные жестко контролируются, те же банки, сами сервисы от государства и т.п.
Не, с сохранностью данных там всё отлично. У них есть программы и для банков и для государственных органов. Там и топовое шифрование есть и мильёны разных сервисов. Robinhood например на AWS хостится.
>>409994
Ебать крутая инфа
То есть это по своей сути реально киллер фича. А что делать компаниям у которых нет средств держать свои сервисы в клауде?
Нанимать девопсов которые будут пилить "ультра" отказоустойчивую инфру?
А те компании у которых денег до жопы, пилять свои клауды по типу SberCloud?
>А что делать компаниям у которых нет средств держать свои сервисы в клауде?
Ну вот я и объясняю, что для этого нужно изучать облака. Они могут стоить как охеренно дорого, так и охеренно дешево. Мне например мой мини-блог обходится рублей в 10/месяц, в среднем у меня выходит около $5-10/месяц. Когда у тебя грамотная архитектура, то у тебя и маленькие счета. Но с другой стороны, когда я одному клиенту бота на ec2 делал, у него счёт приходил по $600-$1,000/месяц. Даже вспоминать больно. Хотя там по идее, можно было несколько изменений сделать и счёт с $600 уменьшился бы до $50-60/месяц. Но я тогда был неопытный, с облаками особо дел не имел и вляпался в такую хуйню. Короче говоря, это надо просто чувствовать. Амазон сам подсказывает как сделать лучше и дешевле. Достаточно просто документацию читать и тебе не будут приходить огромные счета.
> К примеру мне кажется продукты типа AWS, Google Cloud, Yandex Cloud не применимы к отраслям где данные жестко контролируются, те же банки, сами сервисы от государства и т.п.
Я когда в Oracle работал, там у их клауда было заказчиком государство, для него специально выполняли особые требования, связанные с безопасностью, шифрованием, вот этим всем.
Ну смотри месяц назад я зарегался на амазоне и взял себе на год бесплатный инстанс на котором запустил свое веб какашку. До сих пор работает. Только там нет днс, ssl и прочих ништяков. Если я со всем этим разберусь могу в резюмешку впихнуть что я знаю клауд технолоджис
>взял себе на год бесплатный инстанс
Нет, это ошибка. Смотри well-architected framework, они черным по белому говорят, что архитектуру нужно рассматривать так:
Бессерверные функции --> Контейнеры --> Инстансы.
То есть вначале нужно пробовать размещать веб-какаху в lambda. Если лямбда не подходит, тогда fargate/ecs/eks. Если и контейнеры не подходят, тогда в последнюю очередь инстансы. А ты всё наоборот начинаешь с инстансов, потом контейнеры, и т.д. Вот тебе как раз и прилетят счета по сотне баксов, потому что как я уже говорил, ec2 очень дорогие.
>Только там нет днс, ssl и прочих ништяков
Я лично route 53 юзаю, полёт нормальный. Единственный минус aws - нужно платить каждый месяц, нельзя заплатить на год вперёд например или сделать предоплату. Только по факту использования.
Спасибо тебе анон большое за такую развернутую дискуссию, крайне признателен!
У меня были и другие вопросы, разреши написать о них, в частности по докеру, а именно:
1. Докер про stateless окружение, правильно? То есть его состояние после завершения работы никак не сохраняется. Но частичку stateful можно принести с помощью docker volume, когда у тебя есть тома и ты в них хранишь данные, которые в свою очередь после завершения работы контейнера не стираются.
2. Compose это про централизованное управление более чем одним контейнером. Но при увеличении их количества разумнее будет ими управлять с помощью инструментов оркестрации Swarm, K8s, Mesos Marathon.
3. Если вкратце описать устройство оркестрации то ты объединяешь несколько компьютеров. И в свою очередь оркестратор решает то как распределять нагрузку между компьютерами (правильнее нодами), так же при нехватке мощности оркестратор может добавить подов. Только вот не понятно про сущности в виде подов, что они из себя представляют?
Но все же я правильно понимаю то как вся эта шняга работает?
1. Да. Тома можно подключать, либо сохранять в S3, сетевом диске или ещё где. Сам контейнер ничего внутри не сохраняет.
2. Compose - это просто синтаксический сахар. Обёртка, чтобы удобнее было пользоваться докером. Docker swarm не нужен. Не слышал, чтобы им кто-то пользовался. Mesos тоже самое. Я больше люблю продукты от hashicorp - nomad/terraform. Либо rancher.
3. В доках об этом есть. Возьми любой курс от acloudguru, там всё увидишь.
Спасибо тебе большое за твое внимание и время!
Ты мне очень помог. Успехов и прочих таких благ анон!
Спасибо
Для крутого девопса достаточно лишь 1 вещи - большого хуя. Остальное приложится.
У меня есть два контейнера которые запускаются с помощью compose
Первый контейнер это nginx, который нужен для проксирования запросов.
Второй контейнер сам сервис который и работает с запросами
Так вот, подскажите пожалуйста, как сделать так чтобы можно было при запуске compose определять ip второго контейнера и записывать его в default conf.
На первом пикрил ipшники контейнеров и выделенный желтым цветом сам сервис ipшник которого нужно записать в default.conf
На втором пикрил default.conf с устаревшим ipшником
Прошу помогите, с меня как всегда нихуя
Тебе просто надо использовать доменное имя типа http://lib-serv:8080
Но энджинкс в этой ситуации не оче силён и его лучше по возможности заменять на траефик.
Он не будет стартовать если lib-serv по какой-то причине прилёг или не успел стартануть, а докерский днс не резолвит имя, приходится городить костыли.
Да бля я просто оставил использовать дефолтную сеть. Не стал мозги ебать
>Но энджинкс в этой ситуации не оче силён и его лучше по возможности заменять на траефик.
Ты уже заебал своей пропагандой если честна. Ты случаем не кахол?
Пруфы будут? Производительность? Стабильность? Гарантии что оно не кончится вместе со смузями/взрослением нетаких как все?
Зачем надо менять эталонную реализацию http... чтобы получить в замен что? В 95% случаев nginx подходит лучше всего. Начинать нужно 100% с него. Переходить на ваши смузи нужно в единичных случаях, когда понимаешь для чего это делаешь: типо например http3 или service mesh.
>имплаин nginx пять лет назад не был смузи
Я бля чесслово тут первый раз про него написал. Это ж просто балансировщик с роутами, тут кто угодно справится. Перескочил на него именно из-за такого случая когда энджинкс ушёл в бесконечный луп из-за того что не мог отрезолвить proxy_pass http://appname.
Пытаюсь прогнать обычную команду docker-compose exec <SERVICE_NAME> <COMMAND> на запущщеном композе. Но бля он каждый раз не дает мне никакого output и просто завершается (судя по логам контейнера так и не начавшись).
Если выполнять docker exec <CONTAINER_ID> <COMMAND> то все работает. Чзнх? Я как-то неправильно название сервиса указываю (хотя как бля?)? Почему он не выводит ошибок никаких и просто сдыхает?
Ну как бы тебе пояснить, маленыш...
Композ это в принципе ссученая среда. Не для правильных пацанов. Пацан всегда отвечает за базар и говорит как есть. Композ просто тихонько, пряча глаза, подыхает и даже не говорит почему. В твоем кейсе может быть вообще что угодно но ты об этом так и не узнаешь.
Еще композ в последних версиях любит крысить и тайком создавать тебе вольюмы даже если ты об этом его не просил. Кароч подумай еще раз, стоит ли оно того, потом перед честными пацанами отвечать придется.
Пчел, compose это для централизованного управления более чем одного контейнера. Если тебе нужно запустить команду для одного контейнера, согласись идеологически compose не подходит для этого.
>compose это для централизованного управления
Ага, централизованного управления на 1 блядь хосте. swarm не считается - он сдох Централизатор 1 хоста - это чтото из разряда абменистраторов локалхоста.
>идеологически compose не подходит для этого
Конечно подходит.
Более того если на проекте уже используется докер композ, то добавлять сбоку отдельную новую сущность в виде запуска обычным докером и следственно копировании всей конфигурации уже указаной в docker compose в докер - это является обрыганством.
У меня такая хуйня ревью не пройдет. Сам будешь потом конфигурацию поддерживать в 2 местах. Я за это отвечать не собираюсь.
В докер композ (покрайне мери тот что на петоне) есть куча опций для такого запуска: для возврата кода заверщения конкретного сервиса из кучи сервисов запущеных пачкой, для удаления контейнеров после выполнения и т.д.
>>416764
Меньше надо слушать кукоретиков на дваче. А больше читать маны.
Ты ебан или как? Речь за оркестраторы шла чтоль? Compose это сахар чтобы запускать одной командой более чем один контейнер и так же останавливать более чем один контейнер.
Ответь на вопрос конча. Речь про оркестратор шла?
>У меня такая хуйня ревью не пройдет. Сам будешь потом конфигурацию поддерживать в 2 местах. Я за это отвечать не собираюсь.
Да кому ты нужен, не дай мог к такому идиоту попасть в команду...
Прикрепляю пруфы ебень
Какие-то ничего незначащие детали обсасываешь.
Какое централизованое управление? Если ты говоришь о нем, то ты подефолту подразумеваешь какую-то присутствующую распределенность чегото нуждающегося в управлении. Предметом управления, по твоему же тексту, являются контейнеры. Складываем 2+2, получаем оркистрацию то что получаем.
А посуществу коммент о том что ты - молодая неопытная лалка, которая еще не сформировала в своей голове от зубов отскакивающее понимание того, что нельзя лезти в проект с устоявшимся стеком со своими охуительными технологиями. Технологиями не дающими ничего в замен, только пораждающими новые сущности: новые качества и новые конфигурации, увеличивающие необходимый для работы скоуп. В то время как в рамках используемого стека уже существуют необходимые решения. И ты не понимая этого имеешь наглость давать советы космического масштаба и космической же глупости а еще и пиздеть.
>Да кому ты нужен, не дай мог к такому идиоту попасть в команду...
Тебе же похуй на проект, на его будующее, ты кэннот инту колективное владение кодом. Ты нахуй ненужен.
Видел дофига проектов от подобных тебе обрыганов, которым просто насрать. В рамках 1 физического сервера и проекта: тут нахуячим через докер композ, тут запускаем через докер, а вот тут нам пришлось, сам понимаешь, бизопасность, собирать контейнеры на самом сервере, тут у нас сервис на хосте, тут запускаем скрипты в контейнерах, а вот тут неполучилось попростому пришлось на самом хосте, вот эту часть мы деплоит через makefile, а это через 20 sh скриптов вызывающих друг друга мам смари я запили переиспользуемый фреймворк на шеле, вот тут через ансибл, а еще охуеть, прикинь какая годнота!, мы тут недавно узнали что существует тераформ и сбоку насрали еще и на нем... славо богу такие уёбки не могут с наскоку осилить кубер. И вишенкой на торте всегда выступает параметризация всего этого дерьма в кейсе, когда заметная часть конфигураций не ведется в гите, а лежит на хостах. Единый источник правды? Хуй там, радуйся что всего в 20 местах захаркожено и всего на 3 из 20 хостов. Вооружайся grep -r и вперед, пилить фитчи!
капец я токсик, даже немного стыдно за себя стало ничего личного рили
Какие-то ничего незначащие детали обсасываешь.
Какое централизованое управление? Если ты говоришь о нем, то ты подефолту подразумеваешь какую-то присутствующую распределенность чегото нуждающегося в управлении. Предметом управления, по твоему же тексту, являются контейнеры. Складываем 2+2, получаем оркистрацию то что получаем.
А посуществу коммент о том что ты - молодая неопытная лалка, которая еще не сформировала в своей голове от зубов отскакивающее понимание того, что нельзя лезти в проект с устоявшимся стеком со своими охуительными технологиями. Технологиями не дающими ничего в замен, только пораждающими новые сущности: новые качества и новые конфигурации, увеличивающие необходимый для работы скоуп. В то время как в рамках используемого стека уже существуют необходимые решения. И ты не понимая этого имеешь наглость давать советы космического масштаба и космической же глупости а еще и пиздеть.
>Да кому ты нужен, не дай мог к такому идиоту попасть в команду...
Тебе же похуй на проект, на его будующее, ты кэннот инту колективное владение кодом. Ты нахуй ненужен.
Видел дофига проектов от подобных тебе обрыганов, которым просто насрать. В рамках 1 физического сервера и проекта: тут нахуячим через докер композ, тут запускаем через докер, а вот тут нам пришлось, сам понимаешь, бизопасность, собирать контейнеры на самом сервере, тут у нас сервис на хосте, тут запускаем скрипты в контейнерах, а вот тут неполучилось попростому пришлось на самом хосте, вот эту часть мы деплоит через makefile, а это через 20 sh скриптов вызывающих друг друга мам смари я запили переиспользуемый фреймворк на шеле, вот тут через ансибл, а еще охуеть, прикинь какая годнота!, мы тут недавно узнали что существует тераформ и сбоку насрали еще и на нем... славо богу такие уёбки не могут с наскоку осилить кубер. И вишенкой на торте всегда выступает параметризация всего этого дерьма в кейсе, когда заметная часть конфигураций не ведется в гите, а лежит на хостах. Единый источник правды? Хуй там, радуйся что всего в 20 местах захаркожено и всего на 3 из 20 хостов. Вооружайся grep -r и вперед, пилить фитчи!
капец я токсик, даже немного стыдно за себя стало ничего личного рили
>контейнер в выключенном состоянии так и будет лежать на диске, пока его в ручную не сотру?
this
Только собрал ты не контейнер, а образ. Разберись в разнице между образом и контейнером.
открываешь линкедин/хх и чекаешь, что требуется в вакансиях в твоем городе (или в городе, в который хочешь)
@
учишь
@
практикуешь
@
вы великолепны
Окей, но как мне понять, когда я уже что-то знаю? Невозможно ведь знать все на сто процентов (наверное). Поэтому я не понимаю, в какой момент нужно останавливаться с изучением. С тем же линуксом например.
>Хочу вкатиться в эти ваши девопсы, но не знаю, с чего начать
Начни блять с того, что возьми сраный ноутбук и книги. И езжай в глухую сибирскую деревню, без интернета, без людей, где рядом пасутся только медведи и глухари. Чтобы не заходить на двач каждые 3 ебанных секунды и не задавать тупорылых вопросов в стиле "а правильно ли я делаю"?
И дальше читай книгу за книгой. Курс за курсом. Нехуй спрашивать "правильно ли я делаю", а потом садится за двач, за сериалы, листать соцсети и прочую хуйню.
>Только собрал ты не контейнер, а образ
Вот контейнеры в portainer. Помечены как "stopped", но тем не менее они тут
Ты ещё не понял? Ты не должен останавливаться с изучением, ты должен учиться постоянно! Каждый день, минимум 2 часа после работы. Если не работаешь, то часов 10 в день на обучение надо тратить железно.
Нахуй надо. Я хочу жить по кайфу и прилагать к этому минимум усилий, получая за это максимум профитов. Ну, как у вас в айти заведено — тыкаешь кнопочки, а потом получаешь тыщи доллеров, удалёночку и открытый весь мир.
Учить что-то, вы ебанулись что ли?
А что делать с волюмом для базы? Меняется нода, а волюм с данными на предыдущей
Как такую ситуацию разруливать?
Универсальное простое рабочее решение в духе современных технологий с дешевыми и простыми нодами:
- Прибивать гвоздями к конкретной ноде.
- Использовать патрони/столон для переключения упавшего мастера.
Если нечем заняться и есть отдельная san подключеная к hba каждой ноды:
- Можешь попердолиться на тему ремаунта луна с данными на другую ноду. Понастраивать самодельные кворумы, насичет - правдо ли эта нода сдохла, заюзать аппаратный фенсинг через ipmi, обмазать это самодельной логикой... и с результате ты получишь такой же столон/патронни только реализованый на железе которое в 10 раз дороже, но так же теряет данные при переключении мастера/волюма и так же подвисает при тормозах сети.
Я прошу вас о помощи, я нуждаюсь в ней, вы мой последний выход, прошу вас не оставляйте меня одного с этой проблемой а то я от безысходности из окна выкинусь.
В чем цымес:
1. Есть 3 контейнера, в 1 nginx, во 2 nginx-exporter, в 3 prometheus
2. Блять подскажите как их вместе свзять. АААААААААААА
Прикрепляю конфиг файлы.
1 пик фотка compose файла
2 пик фотка конфига nginx
3 пик фотка конфига prometheus
Почему у меня ситуация из 4 пикрила? Остальные экспортеры работают
Спасибо! Пока всё идёт нормально.
У нас нет полной конфигурации. Заходи в контейнер и проверяй резолвинг, доступность порта, формат ответа курлом... Вы заебали, хули вы как маленькие?
И еще бай зе вей. stub_status не нужен ровным счетом ни для чего (он выводит штук 5 недетализованых метрик). Попробуй prometheus vts exporter, если он еще жив. Или vector для получения метрик из логов. Им же логи можешь сохранять в opensearch и/или s3.
Я просто настраивал мониторинг и решил для полной картины ещё и nginx смотреть. Но как то это оказалось слишком геморным. Если нет конкретной цели то не вижу смысла мониторить. Как думаешь?
Если у тебя нет реальных пользователей - можешь разумеется не делать. Как сделать нормально - выше написал.
Благодарен тебе за совет анончик
ну прибей гвоздями. там в документации есть метки всякие.
есть еще несколько странноватых plugins.
например glusterfs plugin и lizardfs plugin.
все это, как водится, тормозит
Я тут часто мозги ебал другим анонам своими вопросами.
Делал я проект для души и набраться знаний. REST хуета, у него есть БД в виде Postgres, все запросы идут через NGINX, мониторинг Prometheus + Grafana, все работает в Docker compose.
Наконец я закончил его (но не факт, как всегда проект кажется каким-то огрызком). Боже, счастья полные штаны. Пока пилил проект сто раз думал выкинуть нахуй все и не вспоминать его. Счастья полные штаны, чувствую себя интеллектом нахуй, мегамозгом и гением мира сего.
У меня проект разворачивает буквально за одну команду, не важно, Ubuntu Server, Fedora Server, RHEL. Сидел, пыхтел над bash скриптами, над compose файлом, над конфигом prometheus. Мониторинг работает, все четко отображается. Все метрики прилетают. Вы просто на виртуалке запускаете скрипт а он все сам выстраивает. Бля я просто гений нахуй.
Крайне благодарен всем ананасам которые мне помогали.
Такой вопрос, вот я разобрался с основными инструментами docker, prometheus, bash.
1. Могу считать себя джуном и куда дальше двигаться? Может сесть за дрочку Jenkins | Gitlab CI/CD | Github Action.
2. Планирую перекатится в западную контору и лутать баксы. Но сука так впадлу учить AWS | Google Cloud. Неужели их нужно учить и в их услугах шарить. Если да, то наберусь сил и пересилю себя.
>Счастья полные штаны
Грац. Действительно самое главное чтобы тебе самому доставляло.
>Могу считать себя джуном
Врятли. Но чуваков которые радеют за дело грех не взять на борт даже если они слегка не дотягивают.
>Gitlab CI/CD
Обязательно.
>Клоуды хуяуды
Это тебе самому решать.
Если есть сомнения, я бы начал учить terraform - около клоуд тулзу (чаще всего юзается для провизионинга в облаках) которая в отдельных кейсах сильно удобнее Ansible для управления конфигурацией на обычных хостах.
100%
В линухтреде обсуждают иконки, спрашивать бестолку.
Спасибо.
1. Готовый аплаенс с заббиксом на t2.medium - 25 центов в час "за софт", 4.6 цента за ресурсы
2. Просто аплаенс с убунтой на t2.medium на которую я поставлю заббикс сам - 4.6 цента в час
Вопрос, зачем кому-то платить дополнительные 25 центов за заббикс в час если можно не платить?
>2022
>забих
>/@
Он стал окончательно ненужен когда у прометея появилась возможность работать без записи в db, а только форвардить в remote write.
>зачем кому-то платить
За мокрые писечки.
Ты проектик-то принеси, посмотреть же интересно на нормально сделанное.
мимо думал перекатываться в девопс из погромистов
Нихера не понял вопроса.
Да.
Ваще изи, совсем ничего не надо делать, просто нажимаешь кнопочки на клавиатуре и на карточку перечисляют 300нс.
> Нагрузка возросла, дудосят? Он сам добавил мощностей.
А потом тебя выебал финопс. Только гибрид.
Докер, докер-компоуз, сети, ансибл знаю.
Развернуть кластер не составило труда. Но дальше встает вопрос: а как какать? Как туда что-то деплоить, где научиться все эти конфиги писать, как разобраться во всех компонентах?
>а как какать? Как туда что-то деплоить, где научиться все эти конфиги писать, как разобраться во всех компонентах?
Расслабляешь булки и оно само падает.
Правила простые как и во всем востальном вайти: чтобы научиться деплоть в кубер - нужно начать деплоить в кубер. Начни с окубернечивания простых изолированных/отдельностоящих/слабосвязаных сервисов. Какие-нибудь асинхронные сервисы, кроны и т.п. самые хорошие кандидаты для того чтобы на них тренироваться.
Из тулзов конретно для деплоя в кубы лично мне доставляет werf. Своим подходом к gitops без дополнительного репозитория с закрепленными версиями, а работой на основе content based tagging, полной иммутабельности сборки: отсутствия тупорылых пересборок и пересоздания контейнеров когда не надо.
https://pastecode.io/s/ceiu1r0u
Но постоянно получаю ошибку:
The command '/bin/sh -c cd yggdrasil-go && go build -o ../yggstack cmd/yggstack/main.go && go clean -cache' returned a non-zero code: 1
Неправильная команда или што?
Dockerfile максимум рука-лицо. Нехватает только в конце сделать chown.
Почему ты у нас спрашиваешь?
Заходи в последний собраный слои и запускай свои команды по 1.
Ух... Просмотрел. В конце есть chmod, с таким же эффектом тупого копирования файлов.
Теперь я спокоен. Dockerfile действительно канонический.
Ну хер с ним с чмодом. Почему ты пытаешься засунуть в один контейнер 4 сервиса сразу?
Возьми отдельно yggdrasilnetwork/yggdrasil-go, meeh/i2pd, monokal/tinyproxy да собери в композе.
Гуглил, там всякий мусор
В общем случае никак. Азуровские пайплайны завязаны на азуровской инфраструктуре и в рамках локального компа он может тупо не выполниться. Так что максимум что можно: парсить ямл @ дёргать команды по очереди.
Ну или более правильный сценарий: выносить все атомарные действия в отдельные .ps1 файлы и дёргать их хоть из пайплайна, хоть из скриптов, хоть из земли.
Кагбэ должно быть возможно через WebAPI, только нихуя не работает. Все туториалы просто повторяют оффициальную доку, которая вместо создания нового запуска просто выдает список предыдущих запусков.
https://learn.microsoft.com/en-us/rest/api/azure/devops/pipelines/runs/run-pipeline?view=azure-devops-rest-7.1
Блять, я тупой. Он выдаёт список через GET, а чтобы запустить билд надо вызвать POST.
https://dev.azure.com/[КОМПАНИЯ]/[ПРОЕКТ]/_apis/build/builds?definitionId=[АйДи Пайплайна, например 10]&api-version=7.1-preview.7
https://www.youtube.com/watch?v=zcoGTd6I1PM
Просто использовать keepalived+haproxy как вариант. Делаешь три контроллера, на каждом свой адрес и плюс на одном каком-то висит vip адрес. Если один контроллер отъезжает, то keepalived поднимает vip адрес на другом живом и запросы как шли к одному адресу, так и идут
Это копия, сохраненная 13 октября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.