a) audience проверяет сам kubernetes-apiserver, и только на предмет того, что токен был выписан для аутентификации именно в apiserver-е, там нет особых опций, надо просто сделать так, чтобы client-id в keycloak и в параметрах apiserver-а совпадали
b) просто настраиваете по мануалу kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens и у вас при аутентификации в kubectl (или напрямую в kubeapi) через keycloak у юзера oidc:username появляется членство в группах oidc:group1, oidc:group2 и т.д. (префиксы у юзеров и групп, в данном случае я привел «oidc:», задаются через параметры apiserver-а), ну а дальше уже задаете юзеров/группы в ролебиндингах (что уже относится к управлению доступами на уровне самого kubernetes-а)
По инструкции видно, что автор многое делает наобум (причем, некоторые вещи в ущерб безопасности):
Много лишних flow у клиента (хотя, по сути, нужен только standard code flow), и при этом включены ненужные service account и authorization
Groups claim зачем-то засовывается в access_token, хотя нужен только в id_token и только для kubectl
Без причины юзается общий клиент для kubectl и для gatekeeper-а, что позволяет скомпрометировать всю конфигурацию replay-атакой. Правильнее было бы завести отдельный public client для kubectl с обязательным pkce-s256
Костыль c audience mapper можно было сделать просто статическим через Audience mapper без скрипта
Я не яндексоид, но в документации указаны зоны доступности.
Что, впрочем, не исключает появления в будущем регионов зарубежом (например, в Финляндии). но конкретную зону доступности все равно в конечном счете будете выбирать вы.
Если же вам нужна бумажка с Большой Синей Печатью, то попробуйте обратиться в поддержку. На хабре вам такую едва ли выпишут. :)
В документации (https://cloud.yandex.ru/docs/overview/concepts/geo-scope) говорится про три ЦОД-а, которые помечены ru-central1-[a-c], соответственно, ЦОД-а в Мянтсяля среди них нет. Скорее всего, это владимир, сасово и какой-то из московских. Возможно, что три московских.
Вообще, в документации там пока полный бардак, найти что-то целенаправленно довольно непросто. И информации по API нет (кроме object storage-а, который s3-совместим).
Самой блокировки ресурса пользователь добивался в течении 2 лет, наталкиваясь на явное нежелание блокировать полулярный сайт.
Судя по словам самого пользователя (https://meow.bnw.im/p/OUFC95#V8I), он один раз отправил жалобу на свой пост 2 года назад, а РКН только сейчас проснулся.
> Кроме синтаксиса есть библиотеки, паттерны, интероп, деплоймент, вопросы быстродействия.
Это все входит в неделю. :) Синтаксис учится за день, деплоймент «статических» бинарников не требует особого изучения, большинство вопросов быстродействия снимаются после прочтения «Effective Go» по дороге на работу и обратно (ценители могут прочитать на обеде go memory model) и т.д.
Разумеется, это все касается тех, кто уже знаком, как минимум, с си, а не учащих go первым языком (или вторым после javascript-а).
В стандартной библиотеке есть поддержка маршаллинга аннотированных структур в xml и обратно.
> SMTP, HTTP
Клиент SMTP и сервер/клиент HTTP есть, опять же, в стандартной библиотеке.
> В общем, есть ли свой 'CPAN'?
CPAN-ом для go фактически является github. В проект можно импортировать напрямую из git/svn/hg репозиотриев (есть батарейки для популярных хостингов). Из минусов, пожалуй, есть лишь отсутствие встроенной поддержки указания конкретных тегов/бранчей для git реп, т.е. всегда берется последняя ревизия из дефолтной ветки, но это частично решается внешними костылями, вроде, gopkg.in.
> Не могли бы вы дать ссылочку, где почитать про тонкую настройку SRP (SCST)?
Если идущей с SCST документации не хватает, то только списки рассылки и сорцы.
> На какой операционке изначально SCST разрабатывался?
Линукс. В общем-то, до сих пор только под ним и работает.
> Как, всё таки, организовать подключение к одному таргету(луну)(SCST) больше одного инициатора?
Не помню, чтобы с этим вообще какие-то проблемы были. Возможно, вы что-то делаете не так, а на память я вам в таких деталях помочь не смогу.
Еще хотелось бы заметить, что стоит дважды подумать перед тем, как копировать дизайн СХД скалакси, т.к. в эксплуатации она была довольно непростой: под десяток уровней абстракции с необходимостью думать на половине из них даже при такой «элементарной» операции, как замена диска с угрозой «повесить» всю СХД в случае неосторожности (диски меняли только по ночам, пристально смотря в мониторинг, с определенными приготовлениями и составленным планом действий, в котором только для happy way был десяток шагов).
> Как я понимаю, основной принцип построения не изменился и сегодня?
Проект «Скалакси» в данный момент закрыт. Однако, приведенная архитектура со времени публикации статьи не менялась.
> Тогда возникает вопрос — SRP(SCST) — это соединение «точка — точка», нельзя подключить к одному таргету(луну) несколько инициаторов. (или я не прав?)
Можно. В общем-то, каждый VRT инициировал с каждой IBRP все собранные массивы, а каждая IBRP инициировала все диски с IBRN.
> Итого: мы получили связку IBRP + 2 IBRN.
До этого момента включительно все верно за исключением того, что IBRP не 1 штука, а две для отказоустойчивости.
> Теперь, повторим процесс нужное количество раз в формате 1 + 2, и получим несколько таких связок. (IBRP + 2 IBRN)
(надеюсь, до этого момента, я рассуждал правильно)
Количество IBRP не увеличивается, одна пара IBRP обслуживает все пары IBRN, LUN-ы с каждой пары IBRN собираются на каждой проксе в один RAID10 массив. Т.о., если у нас есть 2N IBRN, то мы получаем по N массивов на каждой IBRP. Каждый такой массив является SRP-target-ом, который экспортируется на каждую VRT. Через какой IBRP пойдет IO, определяется multipath-ом.
> Создадим виртуалку на VRT, в качестве диска укажем ей диск LVM на IBRP?
Нет, к виртуалкам цепляются device mapper устройства, созданные по DM-таблицам, созданным LVM-ом на на проксях и сохраненным в БД. Сам LVM используется только на проксях для управления томами и за их пределы не выходит.
> А если выключился IBRP?
Есть второй IBRP. Multipath на VRT-шках обноружит потерю пути и переключит при необходимости.
> Буду очень благодарен, если вы найдёте время прочесть это, и что-нибудь ответить, подозреваю, вы тоже сталкивались с подобными проблемами при построении своего облака.
Целая статья, в общем-то, не требуется. Вот, например, как можно сделать через bird
/etc/bird/bird.conf
/etc/cron.hourly/zinets-bird
/usr/local/bin/zinets
В случае массового перебора, опять же, не нужно бежать быстрее медведя, нужно иметь пароль сложнее, чем у соседей.
Хотелось бы уточнить: отказы выросли на 2 процента или на 2 процентных пункта?
Тут про ограничения на уровне самого гейткипера по членству в группах
github.com/louketo/louketo-proxy/blob/master/docs/user-guide.md#group-claims
Тут про проброс в заголовки, чтобы группы из токена мог использовать бэкенд
github.com/louketo/louketo-proxy/blob/master/docs/user-guide.md#upstream-headers
Что, впрочем, не исключает появления в будущем регионов зарубежом (например, в Финляндии). но конкретную зону доступности все равно в конечном счете будете выбирать вы.
Если же вам нужна бумажка с Большой Синей Печатью, то попробуйте обратиться в поддержку. На хабре вам такую едва ли выпишут. :)
Intel Xeon Processor E5-2660 v4 (https://cloud.yandex.ru/docs/compute/concepts/vm-types)
В документации (https://cloud.yandex.ru/docs/overview/concepts/geo-scope) говорится про три ЦОД-а, которые помечены ru-central1-[a-c], соответственно, ЦОД-а в Мянтсяля среди них нет. Скорее всего, это владимир, сасово и какой-то из московских. Возможно, что три московских.
https://cloud.yandex.ru/docs/overview/sla
99%, что KVM.
Вообще, в документации там пока полный бардак, найти что-то целенаправленно довольно непросто. И информации по API нет (кроме object storage-а, который s3-совместим).
Судя по словам самого пользователя (https://meow.bnw.im/p/OUFC95#V8I), он один раз отправил жалобу на свой пост 2 года назад, а РКН только сейчас проснулся.
flibusta.i2p
Это все входит в неделю. :) Синтаксис учится за день, деплоймент «статических» бинарников не требует особого изучения, большинство вопросов быстродействия снимаются после прочтения «Effective Go» по дороге на работу и обратно (ценители могут прочитать на обеде go memory model) и т.д.
Разумеется, это все касается тех, кто уже знаком, как минимум, с си, а не учащих go первым языком (или вторым после javascript-а).
В стандартной библиотеке есть поддержка маршаллинга аннотированных структур в xml и обратно.
> SMTP, HTTP
Клиент SMTP и сервер/клиент HTTP есть, опять же, в стандартной библиотеке.
> В общем, есть ли свой 'CPAN'?
CPAN-ом для go фактически является github. В проект можно импортировать напрямую из git/svn/hg репозиотриев (есть батарейки для популярных хостингов). Из минусов, пожалуй, есть лишь отсутствие встроенной поддержки указания конкретных тегов/бранчей для git реп, т.е. всегда берется последняя ревизия из дефолтной ветки, но это частично решается внешними костылями, вроде, gopkg.in.
Если идущей с SCST документации не хватает, то только списки рассылки и сорцы.
> На какой операционке изначально SCST разрабатывался?
Линукс. В общем-то, до сих пор только под ним и работает.
> Как, всё таки, организовать подключение к одному таргету(луну)(SCST) больше одного инициатора?
Не помню, чтобы с этим вообще какие-то проблемы были. Возможно, вы что-то делаете не так, а на память я вам в таких деталях помочь не смогу.
Еще хотелось бы заметить, что стоит дважды подумать перед тем, как копировать дизайн СХД скалакси, т.к. в эксплуатации она была довольно непростой: под десяток уровней абстракции с необходимостью думать на половине из них даже при такой «элементарной» операции, как замена диска с угрозой «повесить» всю СХД в случае неосторожности (диски меняли только по ночам, пристально смотря в мониторинг, с определенными приготовлениями и составленным планом действий, в котором только для happy way был десяток шагов).
Да
> Как я понимаю, основной принцип построения не изменился и сегодня?
Проект «Скалакси» в данный момент закрыт. Однако, приведенная архитектура со времени публикации статьи не менялась.
> Тогда возникает вопрос — SRP(SCST) — это соединение «точка — точка», нельзя подключить к одному таргету(луну) несколько инициаторов. (или я не прав?)
Можно. В общем-то, каждый VRT инициировал с каждой IBRP все собранные массивы, а каждая IBRP инициировала все диски с IBRN.
> Итого: мы получили связку IBRP + 2 IBRN.
До этого момента включительно все верно за исключением того, что IBRP не 1 штука, а две для отказоустойчивости.
> Теперь, повторим процесс нужное количество раз в формате 1 + 2, и получим несколько таких связок. (IBRP + 2 IBRN)
(надеюсь, до этого момента, я рассуждал правильно)
Количество IBRP не увеличивается, одна пара IBRP обслуживает все пары IBRN, LUN-ы с каждой пары IBRN собираются на каждой проксе в один RAID10 массив. Т.о., если у нас есть 2N IBRN, то мы получаем по N массивов на каждой IBRP. Каждый такой массив является SRP-target-ом, который экспортируется на каждую VRT. Через какой IBRP пойдет IO, определяется multipath-ом.
> Создадим виртуалку на VRT, в качестве диска укажем ей диск LVM на IBRP?
Нет, к виртуалкам цепляются device mapper устройства, созданные по DM-таблицам, созданным LVM-ом на на проксях и сохраненным в БД. Сам LVM используется только на проксях для управления томами и за их пределы не выходит.
> А если выключился IBRP?
Есть второй IBRP. Multipath на VRT-шках обноружит потерю пути и переключит при необходимости.
habrahabr.ru/company/oversun/blog/116683/
Могу также ответить на некоторые технические вопросы.