# authelia Authelia — централизованный сервис аутентификации для Kubernetes: `forward-auth` для `ingress-nginx` и OIDC-провайдер для сервисов (Gitea, Grafana, ArgoCD, Vault, MinIO и др.). ## Что делает аддон - разворачивает Authelia в отдельном namespace; - создаёт ingress для портала входа (`authelia_host`); - генерирует/использует конфигурацию доступа по доменам; - включает OIDC-клиенты для выбранных сервисов; - хранит чувствительные данные в `group_vars/all/vault.yml`. ## Быстрый старт 1. Включите аддон в `group_vars/all/addons.yml`: ```yaml addon_authelia: true authelia_host: "auth.home.local" authelia_domain: "home.local" ``` 2. Добавьте секреты в `group_vars/all/vault.yml`: ```yaml authelia_jwt_secret: "" authelia_session_secret: "" authelia_storage_encryption_key: "" authelia_oidc_hmac_secret: "" authelia_user_admin_password_hash: "$argon2id$..." ``` 3. Установите аддон: ```bash make addon-authelia ``` ## Пример защиты ingress через forward-auth ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: myservice annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/auth-url: "http://authelia.authelia.svc.cluster.local:9091/api/authz/forward-auth" nginx.ingress.kubernetes.io/auth-signin: "http://auth.home.local/?rd=$scheme://$host$escaped_request_uri" ``` ## Пример OIDC для Grafana ```ini [auth.generic_oauth] enabled = true name = Authelia client_id = grafana client_secret = <секрет из vault> scopes = openid profile email groups auth_url = http://auth.home.local/api/oidc/authorization token_url = http://auth.home.local/api/oidc/token api_url = http://auth.home.local/api/oidc/userinfo ``` ## Проверка ```bash kubectl -n authelia get pods kubectl -n authelia logs -l app.kubernetes.io/name=authelia --tail=100 ``` ## Режим Redis (встроенный или внешний) Выбор задаётся переменной `authelia_redis_mode`: - `auto` — внешний Redis при `addon_redis: true`, иначе встроенный Redis чарта; - `internal` — всегда встроенный Redis; - `external_redis` — всегда внешний Redis (например из addon `redis`); - `disabled` — без Redis (сессии в памяти). ## Официальные ресурсы - Официальный сайт: [https://www.authelia.com/](https://www.authelia.com/) - Официальная документация: [https://www.authelia.com/integration/kubernetes/](https://www.authelia.com/integration/kubernetes/) - Версии Helm chart / ПО: [https://artifacthub.io/packages/helm/authelia/authelia](https://artifacthub.io/packages/helm/authelia/authelia)