## Перевірки Gateway API маршрутів і HealthCheckPolicy

Rego-пакет: `k8s.gateway`

**Цільові файли:** YAML з `kind` одного з: `HTTPRoute`, `GRPCRoute`, `TCPRoute`, `TLSRoute`, `UDPRoute` (`apiVersion: gateway.networking.k8s.io/…`); `HealthCheckPolicy` (`apiVersion: networking.gke.io/…`).

**Що перевіряється:**

- `HealthCheckPolicy`: `spec.targetRef` обов'язковий; якщо `targetRef.kind` не вказано або `Service` — `targetRef.name` має закінчуватися на `-hl` (headless Service)
- Gateway API маршрут: кожен `backendRef` до Service (визначається за полями `name` + `port`; `kind`/`group` необов'язкові) — ім'я має закінчуватися на `-hl`
- Gateway API маршрут: `backendRef` з полем `namespace`, що збігається з `metadata.namespace` маршруту, — заборонено (надлишкове поле, ламається при overlay-перенесеннях)

**Приклади:**

✓ `backendRef.name: my-svc-hl` (headless)
✗ `backendRef.name: my-svc` (без суфікса `-hl`)
✗ `backendRef.namespace: dev` при `metadata.namespace: dev` (redundant)

## Визначення схеми YAML

`kind: HTTPRoute` потребує `apiVersion: gateway.networking.k8s.io/v1` (підтримується GKE 1.26+, gateway class `gke-l7-regional-external-managed`; містить поле `timeouts`). `v1beta1` — deprecated, **заборонено**: `check k8s` автоматично апгрейдить до `v1`.

**Приклад (Gateway API):**

```yaml
# yaml-language-server: $schema=https://datreeio.github.io/CRDs-catalog/gateway.networking.k8s.io/httproute_v1.json
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
```

✗ `apiVersion: gateway.networking.k8s.io/v1beta1` — заборонено; `$schema` вказував би на `httproute_v1beta1.json`
