Pull to refresh
12
0
zzamzam@Inlore

Умывальников начальник и девопсов командир

Send message

Аутентификация в Kubernetes через Gitlab'овские JWT токены

Reading time5 min
Reach and readers7.3K

Представим ситуацию, что мы деплоим по push-модели. В качестве платформы для запуска деплоя у нас используется Gitlab: в нём настроен пайплайн и джобы, разворачивающие приложения в разные окружения в Kubernetes

Какой бы инструмент мы не использовали (kubectl, helm), для манипуляций с ресурсами API нам в любом случае будет необходимо аутентифицироваться при выполнении запросов к Kubernetes. Для этого в запросе надо передать данные для аутентификации, будь то токен или сертификат. И тут возникает несколько вопросов:

1. Где хранить эти креды?

Хранить креды от кластера можно, например, в Gitlab CI/CD Variables и подставлять в джобу деплоя, но тогда потенциально все пользователи будут деплоить с одними и теми же доступами

2. Как сделать так, чтобы у каждого пользователя были свои данные для доступа в кластер?

Можно было бы вручную запускать джобы деплоя и в параметры каждый раз подставлять свои аутентификационные данные, но, очевидно, такой подход неудобен и подходит далеко не всем

А что если сделать так, чтобы в качестве провайдера аутентификационных данных для Kubernetes выступал сам Gitlab? Тогда не надо было бы нигде хранить креды, и каждый пользователь мог бы аутентифицироваться в кубере под своей учёткой при запуске деплоя

Читать далее

Потеря логов при отправке через Fluent Bit

Reading time9 min
Reach and readers12K

Дано

кластер k8s

много приложений, которые пишут свои логи в stdout/stderr, а контейнерный движок (в данном случае docker) складывает их в файлы

fluent-bit, запущенный на каждой ноде k8s. Он собирает логи, фильтрует их и отправляет в Loki

loki - хранилище логов от Grafana Labs

В чём заключается проблема

При просмотре логов через Grafana (источник - Loki) видно, что логи приходят с сильной задержкой или часть логов вообще отсутствует. При просмотре через kubectl logs все логи на месте.

Читать далее

Организация деплоя в множество k8s окружений с помощью helmfile

Reading time7 min
Reach and readers36K

Helmfile — обёртка для helm, которая позволяет в одном месте описывать множество helm релизов, параметризовать их чарты для нескольких окружений, а также задавать порядок их деплоя.


О самом helmfile и примерах его использования можно почитать в readme и best practices guide.


Upd. 10/06/2022: Со временем довёл до ума этот подход и получилось гораздо лучше и удобнее, чем описано в статье. При возможности напишу отдельный пост, а пока с примерами улучшенного варианта можно ознакомиться здесь и здесь.

Мы же познакомимся с неочевидными способами описать релизы в helmfile


Допустим, у нас есть пачка helm-чартов (для примера пусть будет postgres и некое backend приложение) и несколько окружений (несколько kubernetes кластеров, несколько namespace'ов или несколько и того, и другого). Берём helmfile, читаем документацию и начинаем описывать наши окружения и релизы:


    .
    ├── envs
    │   ├── devel
    │   │   └── values
    │   │       ├── backend.yaml
    │   │       └── postgres.yaml
    │   └── production
    │       └── values
    │           ├── backend.yaml
    │           └── postgres.yaml
    └── helmfile.yaml
Читать дальше →

Asternic CDR Reports. Прослушивание звонков в FreePBX с ограничением по доступу

Reading time5 min
Reach and readers22K

Версии ПО


FreePBX 2.11.0.41
Asternic CDR Reports 1.5.1

Введение


Задача: необходимо дать человеку возможность прослушивать записи разговоров, но строго на определённом диапазоне внутренних экстеншенов. Мы пытаемся создать нового администратора и даже прописываем ему Extension Range, надеясь таким образом дать ему ограниченный доступ к прослушиванию



Но потом, заходя под созданной учётной записью и направляясь в отчёты по звонкам, понимаем, что потерпели фиаско — CDR Reports игнорирует заданный диапазон Extension Range и выводит информацию по всем номерам.
Читать дальше →

Information

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

Specialization

DevOps-инженер
Ведущий