Size: a a a

Пятничный деплой

2019 December 19
Пятничный деплой
В продолжении темы, IBM раздает бесплатно небольшую книжку «Istio Explained. Getting Started with Service Mesh» http://amp.gs/iJu5
Ссылка на PDF: http://amp.gs/iJu6

И в эту же тему статья «The Service Mesh: What Every Software Engineer Needs to Know about the World's Most Over-Hyped Technology» http://amp.gs/iJJI и ее перевод http://amp.gs/iJuQ
#servicemesh #books
источник
Пятничный деплой
Новый SonarQube 8.1 поддерживает красивую интеграцию с Merge request в GitLab 🎉🎉🎉

http://amp.gs/iJ37
#news #sonarqube
источник
Пятничный деплой
count0_digest
Продолжаем следить за циклом статей о chaos engineering - вышла третья часть https://medium.com/@adhorn/chaos-engineering-part-3-61579e41edd8 #chaos #sre #netflix
Флант сделали перевод https://habr.com/ru/company/flant/blog/477994/
источник
Пятничный деплой
Вчера (по США) был AMA с инфраструктурной командой Reddit

Все комментарии можно почитать по ссылке.
Из субъективно интересного:

 don't actually upgrade [Kubernetes] clusters in place -- we spin up new clusters and migrate the workloads over.

Since we treat our clusters as throaway, we don't really have any hard dependencies on etcd persistence, so we have tended to not really need to do alot of etcd-specific management as a result.
источник
2019 December 20
Пятничный деплой
Injecting Vault Secrets into Kubernetes Pods via a Sidecar

Hashicorp запилили долгожданную фичу - инжект секретов из Vault в поды Kubernetes.

https://www.hashicorp.com/blog/injecting-vault-secrets-into-kubernetes-pods-via-a-sidecar
источник
Пятничный деплой
Первый эпизод по новостному поводу, про nginx! 90% эпизода — про технологии: что такое Nginx, почему и где он используется, что в нем нравится, а что — бесит. 10% — эмоции, получилось жарко и даже немного стыдно.

А ещё это первый эпизод, в котором два гостя, с которыми до записи я не был знаком даже шапочно.

Гости: Данила Штань, технический директор Яндекс.Вертикалей (Авто.ру, Яндекс.Недвижимость и Яндекс.Работа) и Дима Столяров — технический директор крупного русского devops аутсорсера Фланта.

Го слушать, мы создали: Apple, Google, Castbox, Spotify, Яндекс, Overcast, веб-версия.
источник
Пятничный деплой
🔥23 декабря в 20-00 (мск) День открытых дверей курса «Безопасность Linux».

Зарегистрируйтесь на трансляцию: https://otus.pw/Rjpd/

🎁А пока есть время до встречи - знакомьтесь с программой и проходите вступительный тест, чтобы поступить в группу со скидкой -30%: https://otus.pw/qXDQ/

❗️Вас ждет знакомство с преподавателями курса Алексеем Цыкуновым - системным архитектором, Oracle DBA, разработчиком perl/python и Иваном Пискуновым – практикующим специалистом в области защиты информации, автором и преподавателем курсов по информационной безопасности со стажем преподавания более 5 лет и опытом работы в отраслях ИТ и ИБ более 9 лет.
❗️Рассказ в деталях о курсе и формате обучения, программе трудоустройства и карьерных перспективах выпускников.

👥Ждем специалистов по информационной безопасности, системных архитекторов, администраторов, сетевых инженеров, ИТ/ИБ-аудиторов.
источник
Пятничный деплой
Запись прошедшего недавно в Киеве Kubernetes MeetUp

Доклады:

- Pavel Dmytrenko (DevOps Engineer at Pango) - Cluster API: bootstrap Kubernetes clusters using Kubernetes

- Vadym Surzhyk Kubernetes Engineer at Mirantis
Tekton and Argo - Kubernetes-native CI/CD pipelines

#slides
источник
Пятничный деплой
Полезное видео для тех кто начинает изучать apache kafka

+ выписал советы и рекомендации из самого видео. до знака # указан default, после - то что выставил автор видео

https://www.youtube.com/watch?v=m5CDfrQLzrs&list=PLH-XmS0lSi_x0OrxrC4GKInFRK8zG_tfZ&index=3

# частота опроса репликой лидера
replica.fetch.wait.max.ms = 500 # 200

# подтверждение записи
acks = -1 # дожидаемся пока все реплики записали сообщение

# лидер ожидает пока реплика запишет данные
replica.max.lag.ms = 10000 # 1000

# минимальное число реплик необходимое для успешной записи
min.insync.replicas = 2

--
# Рекомендуемое количество реплик при числе нод = 5
rf=3 min.isr=2

---
# Утилиты для управления

dimas/kafka-reassign-tool - генерировать карту
kafa-reassign.sh - запуск перераспределения
kafa-reassign.sh - мониторинг процесса

# не забыть указать парваметр
--throttle

---
# если процесс реасайна сломался
zookeeper: rm /kafka/admin/reassign_partitions
запускаем заново
---
# в случае если хотим отреплицировать хоть какие-то данные со слейва на умерший лидер.
unclean.leader.election.enable

---
# удаление топика - 2 варианта
delete.topic.enable = true - kafka-topics.sh
или
1. никто не пишет в топик
2. перенести партиции топика на 1 брокер
3. удалять на брокере все партиции топика
4. удалить топик в зукипере (rm /brokers/topics/mytopic)
5. ребут брокера
источник
Пятничный деплой
Сборник лучших практик по написанию высокопроизводительного кода на Go

https://github.com/dgryski/go-perfbook
источник
2019 December 21
Пятничный деплой
PRODUCTION CHECKLIST FOR WEB APPS ON KUBERNETES

Отличный чеклист от Henning Jacobs (Zalando SE).

https://srcco.de/posts/web-service-on-kubernetes-production-checklist-2019.html
источник
2019 December 22
Пятничный деплой
The Architecture of a Large-Scale Web Search Engine, circa 2019

Какой стек технологий использует и как устроена инфраструктура поисковика Cliqz.

https://0x65.dev/blog/2019-12-14/the-architecture-of-a-large-scale-web-search-engine-circa-2019.html
источник
Пятничный деплой
Простота и мощь io.Reader 😍

https://www.yellowduck.be/posts/the-beauty-of-io-reader-in-go/
источник
2019 December 23
Пятничный деплой
Отличная новость 🎉🎉🎉
Теперь можно автоматически генерировать документацию для Ansible ролей с помощью утилиты «ansible-readme» http://amp.gs/iXQN

Заодно напомню про похожие проекты для Terraform и Chef
* «terraform-docs» http://amp.gs/iXQq
* «knife-cookbook-doc» http://amp.gs/iXQA
#ansible #docs #terraform #chef
источник
Пятничный деплой
Сегодня про LD PRELOAD

В статье на примерах разобрано что это такое и зачем нужно, а так же про детектирование и борьбу.

В большей степени это относиться к борьбе с кул хацкерами, однако домохозяйкам LD PRELOAD тоже может пригодиться.

Статья: http://bit.ly/36RMDsp

Мне вот пригодилось в такой ситуации (я не буду сильно вдаваться в подробности):
Представьте вам нужно запустить приложение на сервере, сервер ни как не разделен на виртуалки/контейнеры, и вам обязательно нужно внести изменения в /etc/hosts и/или /etc/passwd Но сделать вы этого не можете не помешав работе другим приложениям, или еще лучше у вас прав нет.

Кейс прямо скажем узкий, но зато из реальной жизни. Лечил его через nss wrapper: http://bit.ly/2S7WoyJ

Вот тут больше практических примеров: http://bit.ly/35HzzpB
источник
Пятничный деплой
6 Effective CLI Tools to Debug Distributed Systems

Советы базового уровня по траблшутингу распределенных систем.

https://blog.mimacom.com/6-effective-cli-tools-debug-distributed-systems
источник
Пятничный деплой
Site Reliability Engineer (SRE) - Shadow

Небольшой пост про то, как устроена работа SRE в GitLab.

https://about.gitlab.com/blog/2019/12/16/sre-shadow
источник
Пятничный деплой
​​Practical Monitoring. Effective Strategies for the Real World (2018)
Автор: Mike Julian
Количество страниц: 170

#advanced #book #english

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

В книге раскрыты следующие темы:
✔️Мониторинг антипаттернов;
✔️Принципы мониторинга;
✔️Получение метрик и логов из вашего приложения.

Достоинства:
➕Небольшой объём;
➕Большое количество актуальных примеров;
➕Множество полезных ссылок на другие книги и статьи.

Недостатки:
➖Некоторые темы не разобраны полностью.
источник
Пятничный деплой
источник
2019 December 24
Пятничный деплой
Рабочая заметка по Jinja2

В последнее время все больше приходится запускать в «kubernetes like» системах всякую всячину, которая не поддерживает/частично поддерживает конфигурирование через переменные окружения (RabbitMQ, Elasticsearch, Redis, haproxy, etc). И так уж вышло что helm’ов туда не завезли и настраивается практически все через переменные окружения. В общем приходится писать entrypoint скрипты для рендеренга конфигов из переменных окружения. Так как дружим мы с питоном, то на нем и пишем (внезапно).

Довольно долго мне хватало подобной конструкции:
ipython

In [1]: from string import Template

In [2]: t = Template('Where is my fucking $x')

In [3]: print (t.substitute({'x' : 'beer!'}))
Where is my fucking beer!


Ну понятно, что шаблоны отдельными tpl файлами, вычитываются, рендерятся и сохраняются в нужном виде в нужное место.

Но через какое-то время этой простой конструкции стало не хватать, появилась необходимость пробежаться с for по списку и записать в конфиг к примеру вот такое:

server host-1 host-1:1488 check maxconn "${HOST_MAXCONN}"
server host-2 host-2:1488 check maxconn "${HOST_MAXCONN}"
server host-3 host-3:1488 check maxconn "${HOST_MAXCONN}"


Тут уже вспоминаешь, как круто это все было за 2 минуты написать в плейбуках для ansible и раскатить за столько же времени. В общем не сложно догадаться, что я расчехлил jinja2 и выглядеть это теперь может так:
In [1]: from jinja2 import Template

In [2]: hosts = ['host-1', 'host-2', 'host-3']

In [3]: tpl = '''{% for host in hosts %}
  ...: server {{ host }}  {{ host }}:1488 check maxconn "${HOST_MAXCONN}"
  ...: {% endfor %}'''

In [4]: template = Template(tpl)

In [6]: print(template.render(hosts=hosts))

server host-1  host-1:1488 check maxconn "${HOST_MAXCONN}"
server host-2  host-2:1488 check maxconn "${HOST_MAXCONN}"
server host-3  host-3:1488 check maxconn "${HOST_MAXCONN}"


Или с мощным if’ом:
In [1]: from jinja2 import Template

In [2]: variable = 1

In [3]: tpl = '''{% if variable == 1 %}Переменная равна одному!{% else %}Переменная = {{ variable }}{% endif %}'''

In [4]: template = Template(tpl)

In [5]: template.render(variable=variable)
Out[5]: 'Переменная равна одному!'

In [6]: variable = 4

In [7]: template.render(variable=variable)
Out[7]: 'Переменная = 4’


Дока jinja2: http://bit.ly/38X38pf

Примеры использования: http://bit.ly/2SfsgkQ

Чуть не забыл, переменные окружения нужно еще вычитать, распарсить …

Многие используют для этого ConfigArgParse: http://bit.ly/2EELKYh
Но есть еще Click: http://bit.ly/34LUQNm
источник