TGViewer
ZVLB. Tech ZVLB. Tech @zvlbtech · 183 subscribers
Post #94 348
Когда интегрируешь Gitlab и Kuberentes с помощью Gitlab Agent'а одна из основных проблем, которую надо решить - это выдача доступа конкретному репозиторию, который использует agent, в кластере Kubernetes.

Если правильно настроить агент, то, при исполнении каких-либо запросов в KubeAPI, они будут имперсонироваться и запрос будет исполняться от Username gitlab:ci_job:<JOB_ID>, а в Groups будет куча информации по проекту. Например ID проекта (gitlab:project:<PROJECT_ID>) или группы в которых проект состоит (gitlab:group:<GROUP1_ID>, gitlab:group:<GROUP2_ID>). И чтобы Job мог выполнить какие-то запросы в KubeAPI - ему необходимы права.

У Gitlab'а не было никаких инструментов, чтобы такие права выдавать, по этому мы костылили как могли:
- Парсили конфиги Gitlab Agent'ов, доставая от туда IDшники заинтегрированных репозиториев
- Ходили в это репозитории и доставали от туда member'ов уровня выше developer
- Подвязывались на системные webhook'и Gitlab'a, чтобы ловить события изменения member'ов проекта или добавления нового проекта в группу, к которой привязан Gitlab Agent.
- Автоматом на всей собранной информации генерировали Tenant'ы и раздавали нужные права в этих tenant'ах как для пользователей (Devops/Dev команды), чтобы у них доступ был, так и для системных учеток, (тот самый gitlab:project:<PROJECT_ID>) от которых шел деплой.

Мы несколько раз переделывали эту схему. Специально интегрировали самопальный DEX, который при авторизации пользователя в Kuberentes собирает в каких группах в Gitlab'e тот состоит, что бы не собирать эти группы при генерации тенантов и разгрузить Gitlab API. Еще что-то... Еще что-то...

Но, похоже, наши боли подходят к концу, т.к. во вчерашнем (20.02) релизе Gitlab'a наконец-то добавили Gitlab-managed Kuberentes resources. Теперь при интеграции Gitlab Agent'a с каким-то репозиторием можно определить какие-то ресурсы, которые будут автоматои созданны для этого репозитория. (Namespace, RoleBinding, Flux Resources). Функционал, который мы внедрили с Dex'ом в нашей схеме все равно остается важным, но все автоматизацию по созданию ресурсов наконец-то, можно будет удалить.

Почитать подробнее про новый функционал можно тут. В общем - УРА

#zvlb_musle #Kubernetes #Gitlab
GitLab Docs Using GitLab CI/CD with a Kubernetes cluster | GitLab Docs Learn more about Using GitLab CI/CD with a Kubernetes cluster in the GitLab documentation.
  • ❤ 2
  • 😐 2
  • 👍 1
  • 🔥 1
More from @zvlbtech
  1. Jul 9, 2026Если у вас в кластере много объектов - дефолтные --kube-api-qps/--kube-api-burst у kube-co…
  2. Jun 26, 2026Наткнулся на очередную статью: «Zero-Downtime Deployments with Docker Compose — No Kuberne…
  3. Jun 23, 2026Четыре безобидные по отдельности вещи: - reload nginx, - долгоживущие websocket'ы, - aio-t…
  4. Jun 16, 2026Cвежий опрос Checkmarx: - 70% разработчиков считают, что AI-код дырявее написанного руками…
  5. Dec 16, 2025https://github.com/minio/minio/issues/21714 А минио все. А минио больше не опенсорс
  6. Jul 2, 2025Kubernetes Gateway API - новый стандарт обработки трафика в Kubernetes. (Замена Ingress в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →