Ответы пользователя по тегу DevOps
  • Чем вести логи ООМ контейнеров docker?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Можно генерить лог OOM-ов простой systemd-службой (честно взято из issue к moby про логирование docker events) и выгружать из journald по имени, которым её назовёте.
    [Unit]
    Description=Docker OOM Monitor Service
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/docker events --filter type=oom
    
    [Install]
    WantedBy=multi-user.target
    Ответ написан
    Комментировать
  • Как оценить количество ресурсов, необходимых для работы микросервиса?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Нагрузочным тестированием.
    Для примера, предположим, что есть (сферический в вакууме) CRUD сервис ... Предположим, что точная оценка не требуется. Даже погрешность в несколько раз будет приемлемой.
    Сервисов в вакууме не бывает, разный код и внешние зависимости будут влиять по-разному на использование ресурсов с разбегом в несколько порядков.
    Например, для оценки latency существуют подобные таблицы
    Путаете физику с лирикой. В приведённой вами таблице значения вырастают из физических и технических ограничений.
    Ответ написан
    Комментировать
  • Как передавать файлы конфигурации с переменными если не через ConfigMap который только для чтения?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    В официальных образах nginx достаточно создавать их в /etc/nginx/templates/ с суффиксом .template.
    Файл с переменными на замену монтируется как /etc/nginx/templates/config.conf.template
    Шелл скрипт, дёргаемый энтрипоинтом, копирует с подменой и получается /etc/nginx/conf.d/config.conf
    Ответ написан
    7 комментариев
  • Стенд для изучения DevOps на базе Linux-серверов. С чего начать изучение?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Поддержу Sand : берём Devops Roadmap и подтягиваем скиллы сверху вниз. Если хочется продолжать работать дальше в сетевом администрировании (вакансии Network Engineer с требованием знания Ansible/Salt были и 7 лет назад, только не у нас), то должны научиться раскатывать конфиги из гита и мониторить всё описанное хозяйство со сбором логов.
    Ответ написан
    Комментировать
  • Как "православно" настроить Blue/Green deployment через terraform на aws?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Фишка из 2015 года от сотрудника Hashicorp. Нужно создавать ASG c lifecycle-ом на каждую LC и разруливать переключение трафика на балансировщике.
    В Terraform можно делать вот так:
    resource "aws_launch_configuration" "myapp" {
      name_prefix = "myapp_"
    ...
    resource "aws_autoscaling_group" "myapp" {
      name = "myapp - ${aws_launch_configuration.myapp.name}"
      min_elb_capacity =  = "${var.myapp_asg_min_size}"
    ...
      lifecycle { create_before_destroy = true }

    Пока количество инстансов в статусе InService не достигнет min_elb_capacity, они не будут прицеплены к балансировщику. Затем уже сам балансировщик по хелсчекам у себя должен поменять статус новым инстансам как InService и начнёт пускать на них трафик, в этот же момент TF начнёт удалять старую ASG.
    Ответ написан
    Комментировать
  • Где можно отучиться на DevOps'а?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Сначала надо дорасти до бородатого сисадмина (цикл статей для начинающих, Яндекс выпилил вроде у себя записи лекций с КИТа, поэтому добро пожаловать на торренты), параллельно изучая цикл разработки ПО с инструментарием на всех шагах, тоже естественно на практике (тут помогут как open source проекты, так и зарабатываемые деньги, которые сгорят на лабы в облаках дабы покрутить игрушки), а в идеале ещё и поработать весломразработчиком от года и более.
    Ответ написан
    Комментировать
  • Какие лучшие практики для создания динамического инвентаря ansible виртуальных машин в облаке, созданные terraform?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Инстансы тегировать надо, чтобы не морщить мозг.
    Ответ написан
  • Какие можно рассмотреть замены для VisualBuild?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Teamcity же. Windows и Linux для сборок .Net поддерживает, пишет логи stdout/stderr шагов на сервер, все конфигурации билдов — декларативные на Kotlin и могут храниться вместе с кодом. У бесплатной версии ограничения в виде максимум 3 сборочных агентов и 100 конфигураций билдов, в платной снимается ограничение на количество конфигов и оплата только за агентов (первый год - в зависимости от количества делаются скидки, на второй по $150 за агента), все остальные фичи одинаковые.
    Ответ написан
    Комментировать
  • Смена деятельности в сторону devops, что приоритетно?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    хочу закрепить его с lpic-1
    Всем как всегда. LPIC-1 слишком поверхностный и покрывает совсем базовые навыки, которые безусловно необходимы, но не достаточны для полноценной работы админом.
    Опыт в сфере ИБ
    Слабо релевантно
    Опыт в ит менеджменте, есть itil
    Совсем не релевантно.
    Не имея опыта в разработке/QA, даже на должность директора Дженкинса никто не возьмёт.
    жуниером найти работу на удаленку
    Невозможно
    можно даже на пол ставки чтобы набраться опыта?
    Невозможно [2]
    Либо ищите работу админом в компании среднего размера, которая даст вам возможности подтягивать знания по части процесса разработки, либо пет-проекты - ваше всё. За год по вечерам может быть освоите половину от недостающего отсюда.
    Ответ написан
    1 комментарий
  • Как протестировать Docker container? Существуют ли готовые юнит тесты для GitLab?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Healthcheck
    Запускать для теста можно не занимая портов.
    Ответ написан
    8 комментариев
  • Как наиболее простым образом собирать докер-контейнеры для разных env?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Условий в compose-файле задавать нельзя, соответственно если вы хотите задавать логику, то она должна работать до вызова docker-compose. Соответственно либо разные compose-файлы писать, либо из шаблонов собирать нужный.
    При этом хотелось бы избежать велосипедов с шелл-скриптами и прочим подобным. Докер же должен предоставлять что-то из коробки - вроде бы стандартная хотелка, не так уж и много, а как сделать - не нашел, и судя по всему, будет лютый костыль.
    Велосипед - это когда что-то готовое уже есть. Докер никому ничего не должен, кроме обратной совместимости и фикса багов. Про "не так уж и много" - напишите и сделайте pull request, ссылку только сюда приложить не забудьте. Костыль будет ровно таким, каким вы его напишите.
    Ответ написан
    Комментировать
  • Как сейчас выглядит нормальная система сборки / мониторинга?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Много вопросов, много ответов.
    1. Health checking - метрики на проверку выводить по отдельному URL и мониторить. Если есть возможность сделать бинарную метрику, отдающую HTTP 200/500, то в докер/cri-o/прочие рантаймы сами умеют отслеживать статус.
    2. Docker-образ состоит из манифеста, в котором описываются экспортированные порты, анонимные тома и метаданные, а самое главное - список слоёв с данными. При обновлении с использованием Docker Registry вместо копирования блоба уже присутствующие слои скачиваться не будут.
    3. IaaC же. Dockerfile + билдскрипты если надо в коде + сборочная система. Образы хранить в Registry крайне удобно, можно задавать теги по id коммита если надо прям прибивать к VCS.
    4. Есть 2 путя: внешний мониторинг + система управления конфигурациями (первая пушит по алерту во вторую, которая создаёт сбоку новый сервер и глушит сбойный) или оркестратор, который сам разруливает подобные проблемы.
    5. Про введение новых серверов: env ни разу не динамический, для этой цели используют динамические DNS-сервера (оборачивая красивым названием Service Discovery), балансировщики и очереди сообщений.
    6. Примеры решений из личной практики. Без оркестратора: в AWS можно реализовать на SNS + Autoscaling, универсально - на Prometheus/Alertmanager или Zabbix или Nagios, которые будут запускать алертами джобы в Ansible Tower (его опенсурс версия AWX идёт со всеми фишками Enterprise-версии), но лучше всё же иметь что-то между для большего контроля над происходящим. С k8s всё проще: под Prometheus уже всё есть, сама система отслеживает потребление ресурсов и можно задавать лимиты по процу/оперативной памяти, только настроить масштабируемость рабочих узлов, но есть маленький ньюанс - у вас всё уже должно быть контейнеризовано; в DO кстати весьма адекватный managed кластер.
    Ответ написан
    3 комментария
  • Как и для чего используется Nuget server?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    • Локальный Nuget используют, чтобы приватный код не уходил в зрительный зал (перевожу на общепонятный русский - на публичные репозитории).
    • К уже скомпилированному коду никаких пакетов вы не добавите, их необходимо подтягивать перед сборкой проекта.
    • К продакшену Nuget сервера не имеют никакого отношения.
    Ответ написан
    Комментировать
  • Как правильно сделать hot-warm кластер?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Магия bash + jq, можно крутить кроном/AWX/любимым таск менеджером.
    ES_URL='http://elasticsearch_address:port' #URL эластика
    ATTR_NAME="storage_type" #аттрибут ноды, устанавливается в elasticsearch.yml
    ATTR_WARM="hdd" #значение аттрибута, соответствующий "тёплой" ноде
    N=3 #количество календарных дней до передвижения индекса
    
    END_DATE=$(date --date="$N days ago" -I)
    for INDEX in $(curl -s "$ES_URL"'/_cat/indices?h=index,creation.date.string&format=json' |
      jq -rc '.[] | select(."creation.date.string" < "3*") | .index')
    do
      curl -s -XPUT "${ES_URL}/${INDEX}/_settings" -d "{\"index.routing.allocation.require.${ATTR_NAME}\":\"{ATTR_WARM}\"}"
      if [ $& -eq]
      then
        echo "$INDEX has been set up"
      else
        echo "Error while setting up $INDEX"
        ERRORS=
      fi
    done
    if [[ -v $ERRORS ]]
    then
      exit 1
    fi
    Ответ написан
    Комментировать
  • Какая лучшая практика для мультиплатформенного/Linux-based решения для мониторинга с открытым исходным кодом?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Но до сих пор не имею представления, какой инструментарий используют профессиональные DevOps на своих Kubernetis-кластерах для этих целей.
    Архитектура метрик и их обработки в k8s. Как правило для унификации используют Prometheus т.к. под него уже многое заточено в самом кубере.
    Сами сервера, на которых крутятся узлы кубернетеса, мониторятся выбранным решением для всей инфраструктуры, будь-то Zabbix или какой-нибудь Ionix.
    Ответ написан
    Комментировать
  • Где можно пройти хорошие онлайн курсы по DevOps?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    DevOps - это движение и/или методология. Ни тем, ни другим стать у вас не получится.
    Ответ написан
  • Как в jenkins настроить отправку сообщений после билда в slack в директ сообщение именно автору комита?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    @user_id вполне работает. Табличку соответствия "автор коммита - юзер в слаке" придётся прикручивать, да.
    Ответ написан
  • Как создать версионность docker контейнеров в jenkins?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Не нравятся bash-скрипты - переходите на Teamcity и/или ищите плагины, заменяющие bash-скрипты.
    Инструменты - id билда в Jenkins, Docker, Nexus, мозг, устройство ввода (достаточно каждого по одной штуке).
    docker tag image_id $registry_addr/$image_name:"$BUILD_NUMBER"
    docker push $registry_addr/$image_name:"$BUILD_NUMBER"

    В случае использования отдельных тегов для разных стейджей (например dev, preprod, prod) надо скачивать из репозитория манифест образа и заливать обратно с другим тегом (SO).
    Ответ написан
    1 комментарий
  • Установка задания через Powershell. Как сделать?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    WinRM - выключен по условиям безопастности
    Остаётся только вдоль, SSH-сервер Microsoft так и не завезли.
    Ответ написан
    Комментировать
  • Как подключить внешний Volume для контейнера ECS Fargate?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Никак. Только выданные 4GB на тома.
    Ответ написан
    Комментировать