Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
86 lines
3.1 KiB
Markdown
86 lines
3.1 KiB
Markdown
# 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: "<openssl rand -base64 64>"
|
|
authelia_session_secret: "<openssl rand -base64 64>"
|
|
authelia_storage_encryption_key: "<openssl rand -base64 32>"
|
|
authelia_oidc_hmac_secret: "<openssl rand -base64 48>"
|
|
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)
|