Примітки до оновлення Istio 1.30.0

Важливі зміни, на які слід звернути увагу при оновленні до Istio 1.30.0.

Під час оновлення з Istio 1.29.0 до Istio 1.30.0 необхідно врахувати зміни, зазначені на цій сторінці. У цих примітках детально описано зміни, які навмисно порушують зворотну сумісність з Istio 1.29.x. У примітках також зазначено зміни, які зберігають зворотну сумісність, але водночас запроваджують нову поведінку. Зміни включено лише в тому випадку, якщо нова поведінка буде несподіваною для користувача Istio 1.29.x.

CRD Gateway API мають бути оновлені до v1.5.x

Istio 1.30 оновлює свою залежність Gateway API до v1.5.1 і читає TLSRoute та ReferenceGrant зі стандартного каналу (gateway.networking.k8s.io/v1).

Якщо ви оновите Istio до 1.30, не оновивши також CRD Gateway API у вашому кластері до v1.5.x, ресурси TLSRoute та ReferenceGrant стануть невидимими для istiod. Наявні TLS passthrough слухачі Gateway безшумно звітуватимуть status.listeners[].attachedRoutes: 0, а слухач Envoy не буде запрограмований.

Перед оновленням до Istio 1.30 встановіть CRD Gateway API v1.5.x зі стандартного каналу:

$ kubectl apply -k "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v1.5.1"

Або, якщо ви використовуєте експериментальний канал:

$ kubectl apply -k "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v1.5.1"

Права доступу до конфігураційного файлу CNI змінено на 0600

Стандартні права доступу до конфігураційних файлів CNI, які записує Istio, змінено з 0644 на 0600. Це узгоджується з вимогою CIS Kubernetes benchmark v1.12. Оскільки конфігурацію CNI читає лише середовище виконання контейнерів, яке працює від root, це не повинно мати функціонального впливу. Якщо у вас є інструменти, яким потрібно читати конфігураційні файли CNI як член групи без прав root, ви можете встановити права 0640, встановивши змінну середовища values.cni.env.CNI_CONF_GROUP_READ=true на DaemonSet istio-cni-node.

Агент CNI враховує конфігурацію excludeNamespaces

Раніше лише втулок CNI враховував конфігурацію excludeNamespaces, пропускаючи обробку подів у виключених просторах імен, тоді як агент CNI все ще узгоджував і додавав поди з ambient-мітками у виключеному просторі імен до мережі. Тепер агент CNI враховує виключені простори імен, що означає, що наявні зараховані поди у виключеному просторі імен будуть виключені, а нові поди з ambient-мітками у виключеному просторі імен не будуть зараховані.

Контролер untaint

Змінна середовища PILOT_ENABLE_NODE_UNTAINT_CONTROLLERS тепер автоматично налаштовується, коли taint.enabled встановлено в Helm чарті для розгортання istiod. Ручна активація цієї змінної в розгортанні istiod більше не потрібна.

Змінено вибір простору імен сервісу для sidecar проксі

Під час налаштування sidecar проксі, якщо імʼя хоста існує в кількох просторах імен, Istio тепер надає перевагу ресурсам Kubernetes Service і повертається до найстарішого не-Kubernetes сервісу за часом створення. Раніше вибирався перший видимий простір імен в алфавітному порядку.

Це може призвести до маршрутизації трафіку до іншого екземпляра сервісу, якщо у вас є однакове імʼя хосту в кількох просторах імен зі змішаними типами сервісів (наприклад, Kubernetes Service та ServiceEntry).

Якщо це небажано, встановіть змінну середовища PILOT_SIDECAR_PICK_BEST_SERVICE_NAMESPACE на false в Istiod або використовуйте compatibilityVersion 1.28 або ранішу, щоб відновити попередню поведінку.

XDS debug точки доступу тепер вимагають автентифікації

XDS debug точки доступу (syncz, config_dump) на порту 15010 тепер вимагають автентифікації. Це впливає на команди istioctl, які використовують прапорець --plaintext, та спеціальні інструменти, які використовують незашифрований XDS. Щоб відновити попередню поведінку, встановіть ENABLE_DEBUG_ENDPOINT_AUTH=false.