Нативный Docker Compose on Kubernetes
Как-то пролетела новость, и никто не заметил. Раньше делали как: генерили кубер манифесты из компоуз файлов, с помощью, например, Kompose.
Наконец Docker расчехлились, и уже практически официально этим решением депрекейтнули Docker Swarm. Они напилили нативный контроллер, который позволяет применять compose манифесты в кубер.
Вот, смотрите:
https://blog.docker.com/2018/12/simplifying-kubernetes-with-docker-compose-and-friends/
Репа на гитхабе:
https://github.com/docker/compose-on-kubernetes
В общем, у кого compose (омг) или Swarm в проде - можно безболезненно пересесть в k8s как первый шаг в процессе миграции.
Это будет очень полезно ребятам, у которых мало инженерных ресурсов, но есть огромное желание в k8s.
Как новость?)
Как-то пролетела новость, и никто не заметил. Раньше делали как: генерили кубер манифесты из компоуз файлов, с помощью, например, Kompose.
Наконец Docker расчехлились, и уже практически официально этим решением депрекейтнули Docker Swarm. Они напилили нативный контроллер, который позволяет применять compose манифесты в кубер.
Вот, смотрите:
https://blog.docker.com/2018/12/simplifying-kubernetes-with-docker-compose-and-friends/
Репа на гитхабе:
https://github.com/docker/compose-on-kubernetes
В общем, у кого compose (омг) или Swarm в проде - можно безболезненно пересесть в k8s как первый шаг в процессе миграции.
Это будет очень полезно ребятам, у которых мало инженерных ресурсов, но есть огромное желание в k8s.
Как новость?)
Docker
Docker Blog | Docker
This year at Microsoft Build, Docker will blend developer experience, security, and AI innovation with our latest product announcements. Whether you attend in person at the Seattle Convention Center or tune in online, you’ll see how Docker is redefining the…
👍2
ДевОпс Інженер 🇺🇦 pinned «Нативный Docker Compose on Kubernetes Как-то пролетела новость, и никто не заметил. Раньше делали как: генерили кубер манифесты из компоуз файлов, с помощью, например, Kompose. Наконец Docker расчехлились, и уже практически официально этим решением депрекейтнули…»
Consul Connect: TLS + сайдкар прокси из коробки
Ребята, смотрите какая крутая тема для service-to-service коннектов:
- забирает инфу из Consul
- делает sidecar proxy
- умеет TLS из коробки
Что это значит: можно ходить внутри сети, или через интернет, секурно (mTLS). Из коробки.
Выпиливайте мануальные туннели на haproxy/nginx 🔥
https://www.consul.io/docs/connect/index.html
Ребята, смотрите какая крутая тема для service-to-service коннектов:
- забирает инфу из Consul
- делает sidecar proxy
- умеет TLS из коробки
Что это значит: можно ходить внутри сети, или через интернет, секурно (mTLS). Из коробки.
Выпиливайте мануальные туннели на haproxy/nginx 🔥
https://www.consul.io/docs/connect/index.html
Consul by HashiCorp
Service Mesh | Consul by HashiCorp
Consul Connect provides service-to-service connection authorization and
encryption using mutual TLS.
encryption using mutual TLS.
Envoy proxy: отличная тема, даже без кубера 🔥
Envoy - это L4/L7 proxy, раньше был в Lyft, а теперь - CNCF.
https://github.com/envoyproxy/envoy
Он позволяет легко и быстро построить service-to-service, front proxy или double proxy (или даже все в месте). Вот, например, так:
https://www.envoyproxy.io/docs/envoy/latest/intro/deployment_types/double_proxy
Конфигурация кажется немного запутанной, но через пару часов все ясно и понятно - намного проще и быстрее чем HAproxy/nginx, etc.
Пример double proxy конфигурации:
https://github.com/envoyproxy/envoy/blob/master/configs/envoy_double_proxy_v2.template.yaml
Он очень классно интегрируется с Consul (в том числе как communication bus для Consul Connect), и может динамически слушать порты, строить роуты, делать всякую магию, которую в случае с HAproxy/nginx нужно было решать всякими ужасными темплейтами и генерацией конфигурации.
Все вы знаете реализацию Envoy внутри Istio, но кто хочет попроще или не в k8s - можно брать просто Envoy.
Из сомнительных моментов могу упомянуть:
▶️ Если хотите запустить несколько Envoy контейнеров на одной ноде, нужно передавать дополнительный параметр - иначе не будет работать:
https://www.envoyproxy.io/docs/envoy/latest/operations/cli#cmdoption-base-id
▶️ Prometheus exporter встроен прямо в Envoy, но с оговорками. Путь - /stats/prometheus (what?, почему не /metrics, или почему даже редиректа нету?), и второй момент - метрики отдаются через админский интерфейс, а он не защищен. Вот issue:
https://github.com/envoyproxy/envoy/issues/2763 - должны сделать.
Мы сейчас как раз в процессе внедрения, пока что впечатления крайне положительные, могу рекомендовать 🙂
И еще расшарю для вас gist с relabel_configs для prometheus, который берет таргеты из Consul:
https://gist.github.com/Mykolaichenko/9ab505876237999466a6e3b506ef598a
Envoy - это L4/L7 proxy, раньше был в Lyft, а теперь - CNCF.
https://github.com/envoyproxy/envoy
Он позволяет легко и быстро построить service-to-service, front proxy или double proxy (или даже все в месте). Вот, например, так:
https://www.envoyproxy.io/docs/envoy/latest/intro/deployment_types/double_proxy
Конфигурация кажется немного запутанной, но через пару часов все ясно и понятно - намного проще и быстрее чем HAproxy/nginx, etc.
Пример double proxy конфигурации:
https://github.com/envoyproxy/envoy/blob/master/configs/envoy_double_proxy_v2.template.yaml
Он очень классно интегрируется с Consul (в том числе как communication bus для Consul Connect), и может динамически слушать порты, строить роуты, делать всякую магию, которую в случае с HAproxy/nginx нужно было решать всякими ужасными темплейтами и генерацией конфигурации.
Все вы знаете реализацию Envoy внутри Istio, но кто хочет попроще или не в k8s - можно брать просто Envoy.
Из сомнительных моментов могу упомянуть:
▶️ Если хотите запустить несколько Envoy контейнеров на одной ноде, нужно передавать дополнительный параметр - иначе не будет работать:
https://www.envoyproxy.io/docs/envoy/latest/operations/cli#cmdoption-base-id
▶️ Prometheus exporter встроен прямо в Envoy, но с оговорками. Путь - /stats/prometheus (what?, почему не /metrics, или почему даже редиректа нету?), и второй момент - метрики отдаются через админский интерфейс, а он не защищен. Вот issue:
https://github.com/envoyproxy/envoy/issues/2763 - должны сделать.
Мы сейчас как раз в процессе внедрения, пока что впечатления крайне положительные, могу рекомендовать 🙂
И еще расшарю для вас gist с relabel_configs для prometheus, который берет таргеты из Consul:
https://gist.github.com/Mykolaichenko/9ab505876237999466a6e3b506ef598a
GitHub
GitHub - envoyproxy/envoy: Cloud-native high-performance edge/middle/service proxy
Cloud-native high-performance edge/middle/service proxy - envoyproxy/envoy
👍1
Ребят, и еще тема: скоро выходит девопс дайджест на DOU, а у меня еще ничего не готово 😱
Подкиньте-ка , ̶м̶е̶л̶о̶ч̶и̶ классных новостей или статей за последний месяц в личку: @mukolaich ⬅️
Подкиньте-ка , ̶м̶е̶л̶о̶ч̶и̶ классных новостей или статей за последний месяц в личку: @mukolaich ⬅️
GitHub: Announcing unlimited free private repos
До 3 коллабораторов, но все равно - очень классно!
https://blog.github.com/2019-01-07-new-year-new-github/
До 3 коллабораторов, но все равно - очень классно!
https://blog.github.com/2019-01-07-new-year-new-github/
The GitHub Blog
New year, new GitHub: Announcing unlimited free private repos and unified Enterprise offering
Today we’re announcing two major updates to make GitHub more accessible to developers.
Ребят, кто хочет в Вену на релокейт 🔽
https://jobs.lever.co/tourradar/963f1e14-a4af-4fcc-91fb-26932ea6577d
Пишите сразу @denys_popov - работали вместе 🔥
https://jobs.lever.co/tourradar/963f1e14-a4af-4fcc-91fb-26932ea6577d
Пишите сразу @denys_popov - работали вместе 🔥
AWS Lambda: 15 minutes of execution
Новость старая, но я не знал. Оказывается, теперь таймаут на выполнение не 5 минут, как было раньше, а целых 15.
Теперь это чуть более useful, спасибо, AWS! 👍
https://aws.amazon.com/ru/about-aws/whats-new/2018/10/aws-lambda-supports-functions-that-can-run-up-to-15-minutes/
Новость старая, но я не знал. Оказывается, теперь таймаут на выполнение не 5 минут, как было раньше, а целых 15.
Теперь это чуть более useful, спасибо, AWS! 👍
https://aws.amazon.com/ru/about-aws/whats-new/2018/10/aws-lambda-supports-functions-that-can-run-up-to-15-minutes/
Amazon
AWS Lambda enables functions that can run up to 15 minutes
Envoy hot restart: обидно
В доке у Envoy описано кучу классных юзабельных техник, к примеру hot restart. Это значит, что можно релоадить Envoy без оборванных соединений, применять новую конфигурацию на лету, и быть счастливым.
Вот тут описано, как должно работать: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/hot_restart.html
Давайте проверим, как оно бывает в реальном мире 😱
Как читаю я, и что понимаю: docker kill --signal=SIGHUP envoy - и применилась новая конфигурация
Как пишут доку, и что в нее вкладывают: сделаем скрипт на Python, который будет запускать Envoy, ловить сигналы и делать магию
Обидно! CNCF, Lyft, кто там еще замешан 🙁
Вот, прям в доке описано:
https://www.envoyproxy.io/docs/envoy/latest/operations/hot_restarter
В доке у Envoy описано кучу классных юзабельных техник, к примеру hot restart. Это значит, что можно релоадить Envoy без оборванных соединений, применять новую конфигурацию на лету, и быть счастливым.
Вот тут описано, как должно работать: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/hot_restart.html
Давайте проверим, как оно бывает в реальном мире 😱
Как читаю я, и что понимаю: docker kill --signal=SIGHUP envoy - и применилась новая конфигурация
Как пишут доку, и что в нее вкладывают: сделаем скрипт на Python, который будет запускать Envoy, ловить сигналы и делать магию
Обидно! CNCF, Lyft, кто там еще замешан 🙁
Вот, прям в доке описано:
https://www.envoyproxy.io/docs/envoy/latest/operations/hot_restarter
Hashicorp Vault pricing: OMG
Периодически всплывают вопросы: сколько стоит Hashicorp Vault? Тот который с HA, MFA, auto unseal, Disaster recovery, Replication, etc.
Пару лет назад (средина 2017) я у них спрашивал: ответ был краток - меньше $10 000/per year не подходи, и это еще самый базовый план.
Где-то пол года назад подобную инфу риквестил Игорь Бородин: ценник был чуть поболее, но плюс-минус такой же.
А теперь посмотрите, что ответили Ярославу Молочко 😂
https://i68.tinypic.com/10qw9y1.png
P.S. Проверьте бекапы вашего, надеюсь не стенделон Vault, попробуйте отресториться с бекапа, и на вскидку прикиньте что будет, если тупо дропнуть все секреты.
Периодически всплывают вопросы: сколько стоит Hashicorp Vault? Тот который с HA, MFA, auto unseal, Disaster recovery, Replication, etc.
Пару лет назад (средина 2017) я у них спрашивал: ответ был краток - меньше $10 000/per year не подходи, и это еще самый базовый план.
Где-то пол года назад подобную инфу риквестил Игорь Бородин: ценник был чуть поболее, но плюс-минус такой же.
А теперь посмотрите, что ответили Ярославу Молочко 😂
https://i68.tinypic.com/10qw9y1.png
P.S. Проверьте бекапы вашего, надеюсь не стенделон Vault, попробуйте отресториться с бекапа, и на вскидку прикиньте что будет, если тупо дропнуть все секреты.
Terraform MySQL provider
Хотел поделиться с вами методикой работы с
Вот, например, самая банальная штука - это динамически вытягивать последнюю AMI из AWS для создания EC2. И сразу же получаем: при обновлении AMI (почти каждый день)- (forced new resource) - потому что AMI изменился, и нужно (нет) пересоздать.
Что делать:
Тут как бы все понятно - если меняется переменная ami - все ок, ничего делать не нужно. Подобная штука будет прокатывать с большинством ресурсов.
Недавно обновился MySQL Terraform provider - и появились нужные нам штуки. Но вот, проблема - при апгрейде Terraform маркает большинство ресурсов на пересоздание.
Я пробовал сюда вставить пример кода - но Telegram ломает форматирование.
Опишу словами: tls_option - была пустая строка, а теперь - будет NONE. Это произошло потому, что раньше эта опция не была реализована в модуле, а сейчас появилась. Окей, как сохранить обратную совместимость?
Втулить ему то, что было раньше:
Более подробно с кусками кода я описал тут:
https://github.com/terraform-providers/terraform-provider-mysql/issues/55#issuecomment-461610419
Вроде банальные вещи, но часто вижу, что много кто не знает.
Good luck!
Хотел поделиться с вами методикой работы с
(forced new resource), (new resource required) и прочего. Вот, например, самая банальная штука - это динамически вытягивать последнюю AMI из AWS для создания EC2. И сразу же получаем: при обновлении AMI (почти каждый день)- (forced new resource) - потому что AMI изменился, и нужно (нет) пересоздать.
Что делать:
lifecycle {
ignore_changes = ["ami"]
}Тут как бы все понятно - если меняется переменная ami - все ок, ничего делать не нужно. Подобная штука будет прокатывать с большинством ресурсов.
Недавно обновился MySQL Terraform provider - и появились нужные нам штуки. Но вот, проблема - при апгрейде Terraform маркает большинство ресурсов на пересоздание.
Я пробовал сюда вставить пример кода - но Telegram ломает форматирование.
Опишу словами: tls_option - была пустая строка, а теперь - будет NONE. Это произошло потому, что раньше эта опция не была реализована в модуле, а сейчас появилась. Окей, как сохранить обратную совместимость?
Втулить ему то, что было раньше:
tls_option = ""
Более подробно с кусками кода я описал тут:
https://github.com/terraform-providers/terraform-provider-mysql/issues/55#issuecomment-461610419
Вроде банальные вещи, но часто вижу, что много кто не знает.
Good luck!
GitHub
User Grant on Existing User Causing Errors - Version 1.5.0 · Issue #55 · terraform-providers/terraform-provider-mysql
Terraform Version 0.10.8 Affected Resource(s) mysql_grant Expected Behavior -/+ module.mod_aurora.mysql_grant.mig_user_grants (new resource required) id: "usermig@%:dev_user" =&am...
DevOps learning roadmap
Для тех, кто только присоединился или еще в начале пути:
https://raw.githubusercontent.com/kamranahmedse/developer-roadmap/master/images/devops.png
Схема поможет эффективно построить ваше обучение 🙂
Для тех, кто только присоединился или еще в начале пути:
https://raw.githubusercontent.com/kamranahmedse/developer-roadmap/master/images/devops.png
Схема поможет эффективно построить ваше обучение 🙂
DevOps Fest 2019
6 апреля, Киев, и еще есть Smart Bird, так что можно начинать пушить менеджмент оплатить конфу 😁
Промо на 10% -
Программа ниже 🔽
https://devopsfest.com.ua
6 апреля, Киев, и еще есть Smart Bird, так что можно начинать пушить менеджмент оплатить конфу 😁
Промо на 10% -
DEVOPSENGINEERПрограмма ниже 🔽
https://devopsfest.com.ua
www.devopsfest.com.ua
DevOps Fest Online 2021 | Українська професійна DevOps конференція
Українська професійна DevOps конференція для розробників та DevOps спеціалістів
CNCF Cloud Native Interactive Landscape
Если у кого-то devops-депрессия или кризис продуктивности, зайдите сюда:
https://landscape.cncf.io/
Если у кого-то devops-депрессия или кризис продуктивности, зайдите сюда:
https://landscape.cncf.io/
CNCF Landscape
The CNCF Cloud Native Landscape is intended as a map through the previously uncharted terrain of Cloud Native technologies. It attempts to categorize projects and products in the Cloud Native space.
Teleport
Если у вас в компании принято раздавать всем доступы на все сервера - у меня есть плохие новости. А если это делается мануально, то очень плохие.
Смотрите, есть вот такая тема:
https://gravitational.com/teleport
Teleport позволяет контролить доступ, логгировать выполненные команды и прочее. Очень удобно, например, для долгих Ansible деплоев: когда ноут не тянет кучу хостов, а на сервере с Teleport есть для этого достаточно ресурсов.
Teleport отлично миксуется с паттерном bastion host и отлично его дополняет. Мы используем, мы довольны, рекомендую.
Если у вас в компании принято раздавать всем доступы на все сервера - у меня есть плохие новости. А если это делается мануально, то очень плохие.
Смотрите, есть вот такая тема:
https://gravitational.com/teleport
Teleport позволяет контролить доступ, логгировать выполненные команды и прочее. Очень удобно, например, для долгих Ansible деплоев: когда ноут не тянет кучу хостов, а на сервере с Teleport есть для этого достаточно ресурсов.
Teleport отлично миксуется с паттерном bastion host и отлично его дополняет. Мы используем, мы довольны, рекомендую.
Goteleport
Teleport: Access & Protect AI and Classic Infrastructure
Teleport delivers least privileged access on a foundation of cryptographic identity and zero trust, making infrastructure resilient to identity-based attacks, improving engineer productivity, and streamlining compliance.
Developer Survey Results 2019 by StackOverflow
В двух словах: мы в топах!
Короткая выжимка по DevOps и SRE:
- больше всех довольны своей работой
- сами почти никогда не ищем новую компанию
- у нас самые высокие зарплаты
https://insights.stackoverflow.com/survey/2019
Смотрите зарплаты остальных специализаций (на графике):
https://cdn.sstatic.net/insights/Img/Survey/2019/salary_devtype-1.svg
В двух словах: мы в топах!
Короткая выжимка по DevOps и SRE:
- больше всех довольны своей работой
- сами почти никогда не ищем новую компанию
- у нас самые высокие зарплаты
https://insights.stackoverflow.com/survey/2019
Смотрите зарплаты остальных специализаций (на графике):
https://cdn.sstatic.net/insights/Img/Survey/2019/salary_devtype-1.svg
Stack Overflow
Stack Overflow Developer Survey 2019
Nearly 90,000 took this comprehensive, annual survey of people who code. Demographics. Most loved, dreaded and wanted technologies. Salary and careers.
Docker Hub Hacked
В соседнем чате проскочила печальная информация. В Docker Hub обнаружили утечку данных 190 000 пользователей 🙁 Это касается не только связки логин/пароль, а и токенов (github, bitbucket).
Как минимум стоит переслать в SecOps team, а в идеальном кейсе - поменять эти данные.
Тут можно почитать, что делать более детально:
https://news.ycombinator.com/item?id=19763413
Вот так выглядит письмо:
https://cdn.changelog.com/uploads/news_items/AJOA/large.png?v=63723566056
Стоит сказать, что пароли были в виде
Кстати, если у вас в Docker images были захардожены пароли к каким-то базам данных, или любая сенситив дата - тоже нужно менять.
В соседнем чате проскочила печальная информация. В Docker Hub обнаружили утечку данных 190 000 пользователей 🙁 Это касается не только связки логин/пароль, а и токенов (github, bitbucket).
Как минимум стоит переслать в SecOps team, а в идеальном кейсе - поменять эти данные.
Тут можно почитать, что делать более детально:
https://news.ycombinator.com/item?id=19763413
Вот так выглядит письмо:
https://cdn.changelog.com/uploads/news_items/AJOA/large.png?v=63723566056
Стоит сказать, что пароли были в виде
hashed passwords, а не как у Facebook - в plain text 😄Кстати, если у вас в Docker images были захардожены пароли к каким-то базам данных, или любая сенситив дата - тоже нужно менять.
Об IT без галстуков
Дмитрий Меньшиков - мой хороший друг и наш подписчик, СТО в Aurora Technologies, знает о топ-10 фейлах на highload проекте и умеет менеджерить людей.
А еще у Димы есть свой личный телеграм канал, в котором он пишет о:
- технической составляющей (всегда полезно для девопсов)
- культуре и взаимодействии
- личностном развитии (надеюсь будет цикл "Как стать СТО" 😁)
Рекомендую подписаться, читать и использовать: @notieinIT 👍
Дмитрий Меньшиков - мой хороший друг и наш подписчик, СТО в Aurora Technologies, знает о топ-10 фейлах на highload проекте и умеет менеджерить людей.
А еще у Димы есть свой личный телеграм канал, в котором он пишет о:
- технической составляющей (всегда полезно для девопсов)
- культуре и взаимодействии
- личностном развитии (надеюсь будет цикл "Как стать СТО" 😁)
Рекомендую подписаться, читать и использовать: @notieinIT 👍
HCL2
Очевидно, Hashicorp никогда не откажется от своего HCL.
Пока этот репозиторий - эксперимент, но смотрите что интересного может быть:
Рекомендую прочитать раздел Why? и подготовиться к холиварам 😄 на эту тему:
https://github.com/hashicorp/hcl2#why
Сам репозиторий вот тут:
https://github.com/hashicorp/hcl2
Очевидно, Hashicorp никогда не откажется от своего HCL.
Пока этот репозиторий - эксперимент, но смотрите что интересного может быть:
Arithmetic with literals and application-provided variables
sum = 1 + addend
# String interpolation and templates
message = "Hello, ${name}!"
# Application-provided functions
shouty_message = upper(message)
Рекомендую прочитать раздел Why? и подготовиться к холиварам 😄 на эту тему:
https://github.com/hashicorp/hcl2#why
Сам репозиторий вот тут:
https://github.com/hashicorp/hcl2
GitHub
GitHub - hashicorp/hcl2: Former temporary home for experimental new version of HCL
Former temporary home for experimental new version of HCL - hashicorp/hcl2
trickster - бустер для Prometheus
Еще одна плюшка для вас, лучшие подписчики. Если вы хотите в будущем downsampling и long-term сторедж для Prometheus - запилите по-быстрому trickster.
Grafana перестанет тупить, и в результате плюс пару месяцев для имплементации Cortex или Thanos (уже обсуждали выше).
В двух словах: trickster кеширует и нормализует запросы в Prometheus, из-за чего все начинает работать быстрее.
Вот, смотрите:
https://github.com/Comcast/trickster
Еще одна плюшка для вас, лучшие подписчики. Если вы хотите в будущем downsampling и long-term сторедж для Prometheus - запилите по-быстрому trickster.
Grafana перестанет тупить, и в результате плюс пару месяцев для имплементации Cortex или Thanos (уже обсуждали выше).
В двух словах: trickster кеширует и нормализует запросы в Prometheus, из-за чего все начинает работать быстрее.
Вот, смотрите:
https://github.com/Comcast/trickster
GitHub
GitHub - trickstercache/trickster: Open Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator
Open Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator - trickstercache/trickster