Pull to refresh
1
0
Артур Краев @RaveNoX

User

Send message

Golang-дайджест № 17 (1 – 31 мая  2022)

Reading time4 min
Views6.7K

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены версии 1.18.2 и 1.17.10, результаты опроса разработчиков в Go GUI, TinyGo теперь с поддержкой Go 1.18, go является любимым и быстрорастущим языком на GitHub, заметки о практическом параллелизме.

Приятного чтения!

Читать далее
Total votes 16: ↑13 and ↓3+12
Comments5

Kubernetes в НСПК

Reading time5 min
Views7.6K

Всем привет! Меня зовут Назаров Алексей, я работаю в отделе администрирования инфраструктурных сервисов автоматизации Мир Plat.Form (НСПК) и сегодня расскажу о том, как устроены наши кластеры Kubernetes и как мы ими управляем.

Читать далее
Total votes 14: ↑13 and ↓1+17
Comments5

Все должно быть под контролем. Резервное копирование для Kubernetes. Часть 2

Reading time11 min
Views3.4K

В первой части мы рассмотрели подходы к созданию резервных копий контейнеров в кластере Kubernetes с использованием restic над каталогом данных и относительно новых возможностей CSI для создания и восстановления мгновенных снимков. Пришло время поговорить о возможностях автоматизации управления резервными копиями, о мониторинге процесса и иных важных DevOps-задачах.

Читать далее
Total votes 8: ↑4 and ↓40
Comments0

R*-tree в Go, немного геймдева и поиска элементов в пространстве

Reading time7 min
Views8K

Приветствую, уважаемые читатели Habr!

Если Вы когда-нибудь задумывались, какая структура данных может помочь максимально эффективно искать элементы в пространстве, то, возможно, эта статья Вам поможет!

Эта статья заденет опыт в геймдейве и идеи, где это ещё можно было бы использовать :)

Читать далее
Total votes 15: ↑14 and ↓1+14
Comments21

Минимальные API в .NET 6

Reading time10 min
Views27K

Создание REST API является основной частью многих проектов разработки. Выбор для создания таких проектов широк, но если вы разработчик на C#, варианты будут весьма ограничены. API на основе контроллеров были наиболее распространенными в течение долгого времени, но .NET 6 меняет эту ситуацию, предлагая новую возможность. 

Читать далее
Total votes 17: ↑16 and ↓1+17
Comments12

Спроси меня про Go. Отвечаем на распространённые вопросы

Reading time12 min
Views16K

В начале марта Яндекс Практикум провёл вебинар «Спроси меня про Go» в формате открытого микрофона: слушатели могли задать любые вопросы о языке Go. Экспертами выступили техлиды курса «Go-разработчик»: Георгий Зуйков — ведущий разработчик в Едадиле и Александр Демиденко — старший разработчик в Яндекс Облаке, в команде Cloudgate.

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

Читать далее
Total votes 13: ↑11 and ↓2+12
Comments5

SOLID – это не правила, а гайдлайны

Reading time10 min
Views21K

В этой статье автор высказывает личное мнение, сформулированное на основе его собственного опыта и вкуса. Поэтому просьба не обижаться, если вы с ним не согласны. Конечно, оно может быть ошибочным – но это и стоит обсудить. 

Читать далее
Total votes 24: ↑20 and ↓4+21
Comments21

Apache Kafka. Безопасность, мониторинг и управление кластером

Reading time21 min
Views36K

Мы расскажем, как настроить безопасность кластеров Kafka и Zookeeper, какие инструменты можно использовать для мониторинга и управления кластером, а также про особенности продукта, с которыми мы столкнулись.

 Почему Apache Kafka?

 Apache Kafka — это унификация. Десятки поставщиков и потребителей, миллионы сообщений в день и огромные массивы данных — для этого нужна надежная, отказоустойчивая и высокопроизводительная шина данных. Существует множество версий дистрибутивов Apache Kafka, например vanilla kafka, oбразы от confluent, bitnami, wurstmeister и т.д. Мы расскажем про решение на базе сборок от Confluent в виде Docker-образов. Оно самое надежное в плане информационной безопасности. Конфигурирование и запуск контейнеров с Kafka в данном случае происходит с помощью docker-compose.

 За время работы с Kafka мы прошли  путь от «коробочного» решения до тонкой настройки безопасности кластера, применения TLS шифрования и разворачивания по рекомендациям вендора по построению геораспределенного кластера. В конфигурации «из коробки» нет первоначальных настроек безопасности. Для контроля доступов, вносимых изменений и безопасного взаимодействия перед нами встала задача настройки на кластере Apache Kafka TLS шифрования, аутентификации и авторизации средствами встроенного ACL.

 TLS шифрование

Обеспечивает шифрование соединения между брокерами Kafka, серверами Zookeeper, клиентами и брокерами. Вся ключевая информация помещается в хранилища — keystore, которые разделяют на два вида:

keystore, где хранятся ключи и сертификаты стороны, в отношении которой пройдет процедура аутентификации и установления защищенного соединения, например, приватный ключ и ассоциированный с ним и подписанный со стороны центра сертификации (ЦC) сертификат.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments2

Масштабируем Kubernetes до 4000+ нод и 200 000 подов

Reading time8 min
Views9.4K

image
Фото Todd Diemer, Unsplash.com


В PayPal мы недавно начали прощупывать почву с Kubernetes. Большинство наших рабочих нагрузок выполняется на Apache Mesos, и в рамках этой миграции нам необходимо было понять несколько аспектов производительности кластеров, работающих под управлением Kubernetes, с control plane, специфичной для PayPal. Главным среди этих аспектов является понимание масштабируемости платформы, а также определение возможностей для улучшения за счет настройки кластера.


В отличие от Apache Mesos, который может масштабироваться до 10 000 нод из коробки, масштабирование Kubernetes является нетривиальной задачей. Масштабируемость Kubernetes ограничивается не только количеством нод и подов, но и некоторыми другими аспектами, такими как количество создаваемых ресурсов, количество контейнеров в поде, общее количество сервисов и производительность при развёртывании подов (pod deployment throughput). В этой статье мы опишем некоторые проблемы, с которыми столкнулись при масштабировании, и то, как мы их решили.

Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments3

Основные инструменты Kubernetes в 2021 году

Reading time21 min
Views26K

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

В основе этого списка — мой личный опыт, и чтобы избежать предвзятости, я расскажу и об альтернативных инструментах, чтобы вы могли всё сравнить и принять решение, исходя из своих потребностей. Постараюсь дать информацию сжато и привести источники, чтобы при желании вы могли изучить всё самостоятельно. Описывая инструменты для различных задач разработки ПО, я хотел ответить на вопрос: «Как я могу сделать X в Kubernetes?»

Читать далее
Total votes 40: ↑40 and ↓0+40
Comments5

Clickhouse рядом с Zabbix или чем собирать логи с мониторингом

Reading time8 min
Views12K

Если вы используете Zabbix для мониторинга ваших инфраструктурных объектов, но логи пока не покрыты мониторингом и не собираются в единое хранилище, то эта статья для вас. Расскажем о новом бесплатном анализе логов monq Collector.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments8

Девопсу на заметку: готовим Helm правильно

Reading time13 min
Views21K

Несколько несложных примеров того, как на практике можно использовать продвинутые возможности Helm для эффективной организации безупречной continuous delivery в Kubernetes. Полезные рецепты, чтобы поддерживать конфигурации множества тестовых и production сред - удобно, безопасно, без копипасты и приятно на вид. Методы поддержания целостности сред - чтобы "зелёный" статус пайплайна всегда означал удачный деплоймент, а в случае неудачи среда бы сама восстанавливалась.

Читать далее
Rating0
Comments2

Привычный ужас в SIP, или о том, как не надо проектировать сетевые протоколы. Часть 1 — синтаксис и морфология

Reading time12 min
Views13K

Здравствуйте, меня зовут Валентин, и я задолбался. Нет-нет, вы всё ещё на Хабре.

Все технологии телефонии ужасны.

Большинство технологий разработки IETF ужасны. Может, не ужасны-ужасны, как ISO…

Когда они смешиваются… ну вы в курсе. Или ещё нет? Получается SIP.


Это пост ворчания, техническая суть которого может быть полезна паре сотен человек. Но, to grumble is human.




Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments23

Краткое пособие по созданию петель маршрутизации в OSPF в домашних условиях

Level of difficultyMedium
Reading time5 min
Views11K

OSFP, будучи link-state протоколом, исключает петли в топологии за счёт построения дерева кратчайшего пути. Впрочем, тёмный гений изобрёл инструмент разрушения стройной идеи OSPF – речь пойдёт о функции OSPF Virtual Link.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments1

CrowdSec — современная альтернатива Fail2Ban и коллективный иммунитет для Интернета

Reading time4 min
Views30K

CrowdSec

Инструмент Fail2Ban хорошо известен админам. Программа анализирует логи на сервере и подсчитывает количество попыток доступа с конкретных IP-адресов по указанным протоколам. В случае нарушения правила данный IP-адрес блокируется на заданный отрезок времени. Например, джейл для авторизации по SSH включён с дефолтными настройками 5 попыток авторизации за 10 минут, после чего происходит бан IP-адреса на 10 минут. Отличный способ отфильтровать мусорный трафик от разных сканеров и защита от DDoS.

Fail2Ban и SSHGuard — лучшие инструменты в своей области. Однако новый опенсорсный проект CrowdSec представляется интересной альтернативой. Это локальная замена Fail2Ban, а потенциально нечто большее — глобальная база репутации IP-адресов типа иммунной системы интернета.
Читать дальше →
Total votes 30: ↑28 and ↓2+33
Comments64

Хватит отдавать Гуглу ваши данные. Десять альтернатив для Google Analytics

Reading time7 min
Views21K


4 сентября 1998 года Сергей Брин и Ларри Пейдж основали компанию Google. На заре своего существования Google представляла собой «фирму одного продукта», притом продукт получился настолько крутым и классным, что быстро пошатнул рыночные позиции конкурентов. Однако перенесемся на 23 года вперед. Современный Google — это уже давно не поисковая система. Вернее, не только поисковая система. Это огромная транснациональная и очень эффективная рекламная платформа, целый завод по производству денег, использующий в качестве сырья пользовательские данные. Но стоит ли делиться с этой платформой теми самыми данными? На этот счет есть разные мнения.
Читать дальше →
Total votes 22: ↑20 and ↓2+30
Comments22

Headlamp — новый GUI для работы с Kubernetes

Reading time6 min
Views9.1K
Прим. перев.: месяц назад компания Kinvolk выпустила свой интерфейс для управления Kubernetes-кластерами. Новый Open Source-проект, пополнив уже немалочисленные ряды подобных решений, сочетает в себе классический подход к дизайну интерфейсов, возможность запуска локально и внутри кластера, а также высокую расширяемость, что — вместе с достаточно богатым набором функций — делает его интересным хотя бы для первичного знакомства. В этом анонсе его авторы рассказывают, почему Headlamp стал именно таким.



Читая материалы по Kubernetes, вы наверняка неоднократно сталкивались с примерами различных kubectl-команд и хитрых конфигов на YAML. У людей, хорошо разбирающихся в K8s, такой подход, без сомнения, не вызывает никакого отторжения. Но в век повсеместного распространения веб-интерфейсов его нельзя назвать дружественным к обычным пользователям. Он усложняет процесс познания для новичков и выступает барьером для тех, кто не особо хорошо знаком с Kubernetes.

Конечно, существуют различные графические интерфейсы для K8s, в том числе Kubernetes Dashboard, являющийся частью самого upstream Kubernetes. (Прим. перев.: О многих из существующих решений мы уже рассказывали в этом сравнении.) Однако, исследуя все многообразие вариантов, мы не сумели подобрать решение, которое бы полностью нас устраивало.
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments5

GitLab CI для непрерывной интеграции и доставки в production. Часть 2: преодолевая трудности

Reading time5 min
Views43K

Эта статья продолжает первую часть, содержащую подробное описание нашего пайплайна:

image

… и рассказывает о проблемах, с которыми мы столкнулись для его реализации, и их решении.

Итак, я остановился на том, что созданный .gitlab-ci.yml не позволяет реализовать пайплайн в полной мере, поскольку GitLab CI не предоставляет директив для разделения задач по пользователям и для описания зависимостей выполнения задач от статуса выполнения других задач, а также не позволяет разрешить модификацию .gitlab-ci.yml только для отдельных пользователей.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments14

GitLab CI для непрерывной интеграции и доставки в production. Часть 1: наш пайплайн

Reading time6 min
Views150K


Итак, GitLab CI: что можно ещё рассказать о нём? На хабре уже есть статьи про установку, про настройку раннеров, про командное использование, про GitLab Flow. Пожалуй, не хватает описаний того, как используется GitLab CI в реальном проекте, где задействовано несколько команд. А в современном мире разработки ПО это действительно так: ведь есть (как минимум) разработчики, тестировщики, DevOps- и релиз-инженеры. С подобным разделением на команды мы работаем уже несколько лет. В этой статье я расскажу о том, как мы, используя и улучшая возможности GitLab CI, реализовали и применяем в production для коллектива из нескольких команд процессы непрерывной интеграции (CI) и отчасти доставки приложений (CD).
Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments25

Шаблон backend сервера на Golang — часть 2 (REST API)

Reading time32 min
Views31K

UPD. Ссылка на новый репозиторий проекта с поддержкой развертывания в Kubernetes


Представленный ниже шаблон сервера на Golang был подготовлен для передачи знаний внутри нашей команды. Основная цель шаблона, кроме обучения — это снизить время на прототипирование небольших серверных задач на Go.


Первая часть шаблона посвящена HTTP серверу:


  • настройка HTTP сервера через командную строку и конфигурационный файл
  • настройка параметров TLS HTTP сервера
  • настройка роутера и регистрация HTTP и prof-обработчиков
  • настройка логирования HTTP трафика, логирования ошибок в HTTP
  • HTTP Basic и MS AD аутентификация, JSON Web Token
  • запуск сервера с ожиданием возврата в канал ошибок
  • использование контекста для корректной остановки сервера и связанных сервисов
  • настройка кастомной обработки ошибок и кастомного логирования
  • сборка кода с внедрением версии, даты сборки и commit

Вторая часть шаблона посвящена прототипированию REST API.
Ссылка на репозиторий проекта осталась прежней.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Архитектура шаблона REST API


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

Читать дальше →
Total votes 8: ↑7 and ↓1+8
Comments2

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity