Примітки до змін Istio 1.29.0
Примітки до релізу Istio 1.29.0.
Керування трафіком
Встановлено
cni.ambient.dnsCaptureна стандартне значенняtrue. Стандартно вмикає проксіювання DNS для робочих навантажень в ambient mesh, покращуючи безпеку та продуктивність, а також дозволяючи ряд функцій. Це можна вимкнути явно або за допомогоюcompatibilityVersion=1.24. Примітка: лише нові podʼи матимуть увімкнений DNS. Щоб увімкнути DNS для наявних podʼів, podʼи необхідно перезапустити вручну, або функцію узгодження iptables необхідно увімкнути за допомогою--set cni.ambient.reconcileIptablesOnStartup=true.Встановлено
cni.ambient.reconcileIptablesOnStartupна стандартне значенняtrue. Це вмикає автоматичне узгодження правил iptables/nftables для наявних ambient podʼів при оновленніDaemonSetistio-cni, усуваючи необхідність вручну перезапускати podʼи для отримання оновленої мережевої конфігурації. Це можна вимкнути явно або за допомогоюcompatibilityVersion=1.28.Встановлено підтримку Gateway API Inference Extension на beta. Ця функція наразі залишається стандартно вимкненою і може бути увімкнена за допомогою змінної оточення
ENABLE_GATEWAY_API_INFERENCE_EXTENSION. (використання) (Тікет #58533)Переведено підтримку багатомережевого мультикластера в Beta в режимі ambient. Перегляньте анонси для отримання додаткових деталей.
Додано підтримку мітки локальності Istio
topology.istio.io/locality, яка має перевагу надistio-locality.Додано опцію
gateway.istio.io/tls-cipher-suitesдля вказівки власних наборів шифрів на Gateway. Значенням є розділений комами список наборів шифрів. (Тікет #58366)Додано альфа-підтримку системи телеметрії на основі baggage для ambient mesh. Користувачі багатомережевого ambient можуть увімкнути цю функцію через змінну оточення pilot
AMBIENT_ENABLE_BAGGAGE, щоб метрики для міжмережевого трафіку правильно атрибутувалися мітками джерела та призначення. Зауважте, що ztunnel вже надсилає baggage у запитах; ця функція доповнює цю функціональність baggage, згенеровану waypoint, також. Таким чином, ця функція стандартно вимкнена для waypoint та стандартно увімкнена у ztunnel (налаштовується через змінну оточенняENABLE_RESPONSE_BAGGAGEу ztunnel).Додано логіку для призначення сервісу виявлення робочих навантажень (WDS) канонічним. Канонічний WDS-сервіс використовується ztunnel під час визначення імен, якщо інший WDS-сервіс у тому ж просторі імен, що й клієнт, не існує для його перевизначення. Канонічний сервіс буде налаштований з (1) ресурсу Kubernetes
Serviceабо (2) найстарішого ресурсу IstioServiceEntry, який вказує це імʼя хосту. (Тікет #58576)Додано новий прапорець функції
DISABLE_TRACK_REMAINING_CB_METRICSдля контролю відстеження метрик залишку автоматичного вимикача. Коли встановлено уfalse(стандартно), метрики залишку автоматичного вимикача не відстежуватимуться, покращуючи продуктивність. Коли встановлено уtrue, метрики залишку автоматичного вимикача відстежуватимуться (застаріла поведінка). Цей прапорець функції буде видалено у майбутньому випуску.Додано підтримку політики балансування навантаження
LEAST_REQUESTу gRPC-клієнтах без проксі.Додано підтримку автоматичного вимикача (
http2MaxRequests) у gRPC-клієнтах без проксі.Додано підтримку wildcard-хостів у ресурсах
ServiceEntryз роздільною здатністюDYNAMIC_DNSдля TLS-хостів. Протокол TLS передбачає, що зʼєднання маршрутизуватимуться на основі SNI запиту (з TLS-рукопотисканням) без термінування TLS-зʼєднання для перевірки заголовка Host для маршрутизації. Реалізація покладається на альфа-API та має значні наслідки для безпеки (тобто спуфінг SNI). Тому ця функція стандартно вимкнена і може бути увімкнена шляхом встановлення прапорця функціїENABLE_WILDCARD_HOST_SERVICE_ENTRIES_FOR_TLSуtrue. Будь ласка, ставтесь обережно до використання цієї функції і тільки з довіреними клієнтами. (Тікет #54540)Виправлено проблему, через яку sidecar намагалися неправильно маршрутизувати запити до ambient шлюзів схід-захід. (Тікет #57878)
Виправлено збій запуску агента вузла Istio CNI у середовищах MicroK8s при використанні режиму ambient з бекендом nftables. (Тікет #58185)
Виправлено проблему, через яку конфігурації
InferencePoolвтрачалися під час обʼєднанняVirtualService, коли кількаHTTPRoute, що посилаються на різніInferencePool, були прикріплені до одного й того ж Gateway. (Тікет #58392)Виправлено проблему, через яку встановлення
ambient.istio.io/bypass-inbound-capture: "true"спричиняло тайм-аут вхідного HBONE-трафіку, оскільки правило iptables для відстеження мітки ztunnel на зʼєднаннях не застосовувалося. Ця зміна дозволяє вхідним HBONE-зʼєднанням функціонувати нормально, зберігаючи очікувану поведінку обходу для вхідних “passthrough” зʼєднань. (Тікет #58546)Виправлено помилку, через яку статус
BackendTLSPolicyміг втрачати відстеженняancestorRefGateway через пошкодження внутрішнього індексу. (Тікет #58731)Виправлено проблему, через яку агресивність прогріву не узгоджується з конфігурацією Envoy. (Тікет #3395)
Виправлено проблему, через яку вхідні шлюзи в ambient мультикластері не маршрутизували запити до відкритих віддалених бекендів. Це виправлення знаходиться за новим прапорцем функції
AMBIENT_ENABLE_MULTI_NETWORK_INGRESS, який зазвичай має значенняfalse. Якщо користувач хоче використовувати цю функціональність, йому потрібно встановити її уtrue.Виправлено проблему, що спричиняла періодичну нестабільність реєстру кластерів ambient мультикластера, що призводило до надсилання неправильної конфігурації проксі.
Виправлено проблему, через яку монітор ресурсів менеджера перевантаження для глобальних максимальних downstream-зʼєднань був встановлений на максимальне ціле значення і не міг бути налаштований через Runtime Flags. Користувачі тепер можуть налаштувати ліміт глобальних максимальних downstream-зʼєднань через метадані проксі
ISTIO_META_GLOBAL_DOWNSTREAM_MAX_CONNECTIONS. Прапорець рантаймуoverload.global_downstream_max_connectionsвсе ще враховується, якщо вказаний для зворотної сумісності, але є застарілим на користь цього нового підходу з використанням метаданих проксі.Якщо вказано
overload.global_downstream_max_connections, зʼявляться попередження про застарілість Envoy.Якщо вказані і
ISTIO_META_GLOBAL_DOWNSTREAM_MAX_CONNECTIONS, іoverload.global_downstream_max_connections, метадані проксі матимуть перевагу над прапорцем рантайму. (Тікет #58594)Виправлено попередження про політику балансування навантаження
CONSISTENT_HASHу gRPC-клієнтах без проксі.Виправлено gRPC xDS Listener для надсилання як поточних, так і застарілих полів провайдера TLS-сертифікатів, що забезпечує сумісність між старими та новими gRPC-клієнтами (
pre-1.66та1.66+).Виправлено проблему, через яку ініціалізація CNI могла завершуватися невдачею при створенні правил iptables/nftables на хості для перевірок стану. Ініціалізація тепер повторює спроби до 10 разів із затримкою 2 секунди між спробами для обробки тимчасових збоїв.
Безпека
Покращено обробку домену довіри віддалених кластерів шляхом впровадження спостереження за віддаленим
meshConfig. Istiod тепер автоматично спостерігає та оновлює інформацію про домен довіри з віддалених кластерів, забезпечуючи точне зіставлення SAN для сервісів, що належать більш ніж одному домену довіри.Додано опційну функцію при використанні istio-cni в режимі ambient для створення файлу конфігурації CNI, що належить Istio, який містить вміст основного файлу конфігурації CNI та втулок CNI Istio. Ця опційна функція є рішенням проблеми оминання трафіком mesh при перезапуску вузла, коли
DaemonSetistio-cni не готовий, втулок CNI Istio не встановлений або втулок не викликається для налаштування перенаправлення трафіку від podʼів до їх вузлових ztunnel. Ця функція увімкнена шляхом встановленняcni.istioOwnedCNIConfigуtrueу значеннях чарту Helm istio-cni. Якщо жодне значення не встановлено дляcni.istioOwnedCNIConfigFilename, файл конфігурації CNI, що належить Istio, буде названо02-istio-cni.conflist.istioOwnedCNIConfigFilenameповинен мати вищий лексикографічний пріоритет, ніж основний CNI. Ambient та ланцюжкові втулки CNI повинні бути увімкнені, щоб ця функція працювала.Додано опційне розгортання
NetworkPolicyдля istiod та istio-cni. Ви можете встановитиglobal.networkPolicy.enabled=true, щоб розгорнути стандартнийNetworkPolicyдля istiod, istio-cni та шлюзів. (Тікет #56877)Додано підтримку спостереження за symlink-секретами у агенті вузла Istio.
Додано підтримку списку відкликаних сертифікатів (CRL) в ztunnel. Коли файл
ca-crl.pemнадається через підключений CA, istiod автоматично розповсюджує CRL на всі простори імен, що беруть участь у кластері. (Тікет #58733)Додано експериментальну функцію, що дозволяє dry-run перевірку ресурсів
AuthorizationPolicyв ztunnel. Ця функція буде стандартно вимкнена. Дивіться Примітку до оновлення для деталей. (використання) (Тікет #1933)Додано підтримку блокування CIDR у JWKS URI при отриманні публічних ключів для перевірки JWT. Якщо будь-який визначений IP з JWKS URI збігається із заблокованим CIDR, Istio пропустить отримання публічного ключа та використає фейковий JWKS, щоб відхиляти запити з JWT-токенами.
Додано механізм повторних спроб при перевірці, чи pod увімкнено в ambient, в istio-cni. Це для вирішення потенційних тимчасових збоїв, що призводять до потенційного обходу mesh. Ця функція стандартно вимкнена і може бути увімкнена шляхом встановлення
ambient.enableAmbientDetectionRetryу чартіistio-cni.Додано авторизацію на основі простору імен для налагоджувальних точок доступу на порту 15014. Несистемні простори імен обмежені точками доступу
config_dump/ndsz/edszта лише проксі з того ж простору імен. Вимкніть за допомогоюENABLE_DEBUG_ENDPOINT_AUTH=false, якщо це необхідно для сумісності.Виправлено перевірку анотацій ресурсів, щоб відхиляти символи нового рядка та керуючі символи, які могли впроваджувати контейнери у специфікації pod через рендеринг шаблонів. (Тікет #58889)
Телеметрія
Позначено застарілою анотацію
sidecar.istio.io/statsCompression, яку замінено опцієюstatsCompressionуproxyConfig. Перевизначення для окремих pod все ще можливі через анотаціюproxy.istio.io/config. (Тікет #48051)Додано опцію
statsCompressionуproxyConfigдля глобальної конфігурації HTTP-стиснення для точки доступу статистики Envoy, що відкриває його метрики. Вона стандартно увімкнена, пропонуючиbrotli,gzipтаzstdзалежно відAccept-Header, надісланого клієнтом. (Тікет #48051)Додано ідентифікацію робочого навантаження джерела та призначення до трасувань waypoint-проксі. Waypoint-проксі тепер включають
istio.source_workload,istio.source_namespace,istio.destination_workload,istio.destination_namespaceта інші теги однорангового джерела у діапазонах трасування, відповідаючи можливостям спостережуваності sidecar-проксі. (Тікет #58348)Додано підтримку власного тегу типу
Formatterв API телеметрії.Додано метрику датчика
istiod_remote_cluster_sync_statusдо Pilot для відстеження статусу синхронізації віддалених кластерів.Додано теги діапазону waypoint
istio.downstream.workload,istio.downstream.namespace,istio.upstream.workloadтаistio.upstream.namespaceдля робочого навантаження та простору імен downstream та upstream.Додано поля
timeoutтаheadersдоZipkinTracingProviderуextensionProvidersMeshConfig. Полеtimeoutналаштовує тайм-аут HTTP-запиту при надсиланні діапазонів до колектора Zipkin, забезпечуючи кращий контроль над надійністю експорту трасувань. Полеheadersдозволяє включати власні HTTP-заголовки для автентифікації, авторизації та власних випадків використання метаданих. Заголовки підтримують як прямі значення, так і посилання на змінні оточення для безпечного управління обліковими даними. (Envoy) (довідка) (використання)Виправлено проблему, що спричиняла повідомлення метрик з невідомими мітками у багатомережевих ambient-розгортаннях навіть коли виявлення метаданих однорангових вузлів на основі baggage було увімкнено шляхом встановлення змінної оточення
AMBIENT_ENABLE_BAGGAGEуtrueдля pilot. (Тікет #58794),(Тікет #58476)
Встановлення
Оновлено
istiodдля встановленняGOMEMLIMITна 90% від ліміту памʼяті (раніше 100%) для зниження ризику OOM-завершень. Тепер це обробляється автоматично через бібліотекуautomemlimit. Користувачі можуть перевизначити це, встановивши змінну оточенняGOMEMLIMITбезпосередньо, або скоригувати співвідношення за допомогою змінної оточенняAUTOMEMLIMIT(наприклад,AUTOMEMLIMIT=0.85для 85%).Оновлено додаток Kiali до версії
v2.21.0.Додано підтримку фільтрації ресурсів, за якими Pilot спостерігатиме, на основі змінної оточення
PILOT_IGNORE_RESOURCES.Ця змінна є розділеним комами списком ресурсів та префіксів, які слід ігнорувати спостерігачу CRD Istio. Якщо є потреба явно включити ресурс, навіть коли він є у списку ігнорування, це можна зробити за допомогою змінної
PILOT_INCLUDE_RESOURCES.Ця функція дозволяє адміністраторам розгортати Istio як контролер тільки для Gateway API, ігноруючи mesh-ресурси, або розгортати Istio з підтримкою тільки Gateway API
HTTPRoute(наприклад, підтримка GAMMA). (Тікет #58425)Додано підтримку налаштування інтервалу скидання файлів Envoy та конфігурацій буфера у
ProxyConfig. (Тікет #58545)Додано запобіжники контролеру розгортання шлюзу для перевірки типів обʼєктів, імен та просторів імен, щоб запобігти створенню довільних ресурсів Kubernetes через інʼєкцію шаблонів. (Тікет #58891)
Додано налаштування
values.pilot.crlConfigMapName, що дозволяє налаштувати імʼяConfigMap, яке istiod використовує для розповсюдження свого списку відкликаних сертифікатів (CRL) у кластері. Це дозволяє запускати кілька панелей управління з просторами імен в одному кластері, які перетинаються.Додано підтримку налаштування
terminationGracePeriodSecondsв pod istio-cni та оновлено стандартне значення з 5 секунд до 30 секунд. (Тікет #58572)Виправлено проблему, через яку команда
iptablesне чекала на отримання блокування на/run/xtables.lock, що спричиняло деякі оманливі помилки у журналах. (Тікет #58507)Виправлено проблему, через яку
DaemonSetistio-cni розглядав зміниnodeAffinityяк оновлення, що спричиняло неправильне залишення конфігурації CNI на місці, коли вузол більше не відповідав правиламnodeAffinityDaemonSet. (Тікет #58768)Виправлено схему значень чарту helm
istio-gateway, щоб дозволити полеenabledверхнього рівня. (Тікет #58277)Видалено застарілі маніфести з чарту
baseHelm. Дивіться Примітки до оновлення для отримання додаткової інформації.
istioctl
Додано прапорець
--waitдо командиistioctl waypoint statusдля вказівки, чи чекати, поки waypoint стане готовим (типовоtrue).Вказівка цього прапорця з
--wait=falseне чекатиме готовності waypoint та безпосередньо відображатиме статус waypoint. (Тікет #57075)Додано вивід заголовків до команд
istioctl ztunnel-config allтаistioctl proxy-config all.Додано прапорець
--all-namespacesдля командиistioctl waypoint statusдля відображення статусу waypoint у всіх просторах імен.Додано підтримку вказівки порту адміністрування проксі в
istioctl ztunnel-config.Виправлено помилки пошуку функцій перекладу для MeshConfig та MeshNetworks у istioctl (Тікет #57967)