В феврале вышел Gateway API 1.5, а недавно — статья про него в блоге Kubernetes. Решили посмотреть и вам показать)
Весь релиз про шесть фич, которые переехали из experimental в stable. Новых возможностей практически нет. Всё это уже было, просто теперь официально «готово к проду».
Во-первых, ListenerSet. Раньше все listener'ы нужно было описывать прямо внутри Gateway. Для небольших конфигов нормально, а вот в multi-tenant окружениях быстро начинается веселье. Разным командам нужно добавлять свои hostname и listener'ы, но для этого приходится трогать один общий Gateway.
Теперь listener'ы можно описывать отдельно и прикреплять к общему Gateway. Инфраструктурная команда держит базовый Gateway, команды приложений добавляют свои ListenerSet, а контроллер уже сам всё объединяет. То есть делегировать владение listener'ами стало сильно проще. И, что тоже важно, через ListenerSet можно прикреплять к одному Gateway больше 64 listener'ов.
Едем дальше. TLSRoute стал стабильным. Это маршрутизация TLS-трафика по SNI. Gateway смотрит на hostname, который клиент передаёт во время TLS-handshake, и отправляет поток в нужный backend.
Следующий значимый кусок — про mTLS. Gateway теперь умеет проверять клиентский сертификат на входе и предъявлять свой сертификат бэкенду на выходе. Звучит как мелочь, но без этого полноценный zero-trust внутри кластера был неудобным. Тоже не новая идея, просто наконец стабильная.
Но есть нюанс. Если у вас уже были старые experimental TLSRoute из v1alpha2, при переходе на v1.5 standard они сами по себе не подхватятся. Нужно либо оставаться на experimental, либо мигрировать их в v1.
Ещё одна полезная штука, HTTPRoute CORS Filter. CORS теперь можно настраивать прямо в HTTPRoute, а не размазывать по приложению, ingress-аннотациям или особенностям конкретного контроллера. Можно задать разрешённые origin'ы, методы, заголовки, credentials и maxAge для preflight-запросов. То есть браузерная боль «почему фронт опять не ходит в API» становится чуть более стандартизированной.
Ну и ReferenceGrant теперь v1. Это механизм для безопасных ссылок между namespace. Например, когда Gateway или Route из одного namespace должен сослаться на ресурс в другом. ReferenceGrant работает как явное разрешение от владельца namespace. Да, этому ресурсу можно ссылаться на Secret, Service или другой объект. Ресурс больше года не менялся, поэтому его перевели в стандарт и под GA API contract. То есть без внезапных breaking changes.
Отдельно интересно, что проект перешёл на release train. Теперь в релиз попадает то, что готово к feature freeze. Причём готовность не только про код, но и про документацию. Если документация не готова, функция тоже не готова. Звучит скучно, но для проекта уровня Gateway API это хороший знак. Меньше хаоса, больше предсказуемости.
В общем, Gateway API 1.5 выглядит как релиз про взросление. Не «вот вам пачка экспериментальных фич, разбирайтесь», а скорее «мы с вами всё обкатали, теперь это будет частью стабильной версии».
Итог. Для тех, кто уже на Gateway API, хорошая новость, можно обновляться. Для тех, кто ещё не перешёл, не повод :)
Подробнее на kubernetes.io
Post #1615
4.01K
- 👍 10
- ❤ 5
- 🔥 1