Skip to content

rlagutinhub/team-operator

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kubernetes оператор для управления командами и пользователями

Пример интерфейса

Описание проекта

Этот проект представляет собой Kubernetes оператор, который позволяет управлять командами и пользователями в кластере Kubernetes через пользовательские ресурсы (Custom Resources). Проект состоит из двух основных компонентов:

  1. Kubernetes оператор - отслеживает изменения в пользовательских ресурсах и применяет соответствующие изменения в кластере.
  2. Веб-интерфейс - предоставляет интерфейс для управления командами и пользователями.

Функциональность

Управление командами

  • Создание, просмотр, редактирование и удаление команд
  • Назначение ресурсов для команд
  • Управление доступом команд к ресурсам кластера

Управление пользователями

  • Создание, просмотр, редактирование и удаление пользователей
  • Назначение пользователей в команды
  • Генерация kubeconfig для пользователей

Требования

  • Kubernetes кластер (версия 1.16+)
  • Python 3.8+
  • Доступ к кластеру с правами администратора

Установка и запуск

Локальный запуск

  1. Клонируйте репозиторий
git clone <url-репозитория>
cd <имя-директории>
  1. Сконфигурируйте доступ к Kubernetes кластеру. Оператор и UI берут доступ к кубу из стандартного kubeconfig.

  2. Примените CRD (Custom Resource Definitions)

kubectl apply -f crd.yaml
  1. Установите зависимости
pip install -r requirements.txt
  1. Запустите оператор
python operator.py
  1. В отдельном терминале запустите веб-интерфейс
python app.py
  1. Откройте веб-интерфейс в браузере по адресу http://localhost:8080

Примеры использования

Создание команды

Пример манифеста для создания команды:

apiVersion: team.example.com/v1
kind: Team
metadata:
  name: team-example
spec:
  environments:
    - name: dev
      description: "Среда разработки"
      quota:
        cpu: "2"
        memory: "4Gi"
        pods: "20"
    - name: test
      description: "Тестовая среда"
      quota:
        cpu: "1"
        memory: "2Gi"
        pods: "10"

Создание пользователя

Пример манифеста для создания пользователя:

apiVersion: team.example.com/v1
kind: User
metadata:
  name: user-example
spec:
  fullName: "Иван Иванов"
  email: "ivan@example.com"
  teams: ["team-example"]
  role: "developer"

Структура проекта

  • app.py - веб-интерфейс на Flask
  • operator.py - Kubernetes оператор на kopf
  • crd.yaml - определения пользовательских ресурсов
  • templates/ - шаблоны для веб-интерфейса
  • examples/ - примеры ресурсов

Лицензия

MIT

Авторы

Pavel Selivanov

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 51.6%
  • HTML 48.2%
  • Dockerfile 0.2%