Миграция на Jaeger v2
В этом документе описывается, как выполнить миграцию существующего стека распределённой трассировки Service Mesh — интеграции с устаревшими Alauda Build of Jaeger (Jaeger 1.60.0) и Alauda Build of OpenTelemetry, описанной в Настройка платформы распределённой трассировки с Service Mesh (устарело), — на текущую интеграцию Alauda Distributed Tracing, основанную на Jaeger v2 (2.16.0) и Alauda Build of OpenTelemetry v2.
После миграции:
- Новые трассы принимаются OpenTelemetry Collector v2 и сохраняются в новом backend Jaeger v2.
- Устаревший экземпляр Jaeger остаётся запущенным на период наблюдения (по умолчанию 7 дней), чтобы ранее сохранённые трассы оставались доступными для запросов через устаревший UI Jaeger, а затем он удаляется.
Для справочной информации, таблиц сравнения, вариантов двойного экспорта и путей отката см. базовое руководство Миграция с Alauda Container Platform Tracing; в этом документе Service Mesh рассматриваются только шаги, отличающиеся для развертывания Service Mesh.
Приём трассировок прерывается в промежутке между удалением устаревшего OpenTelemetryCollector и моментом, когда ресурс Istio будет пропатчен так, чтобы указывать на новый OpenTelemetry Collector. Трафик приложений не затрагивается, но спаны, сгенерированные в этот период, отбрасываются. Планируйте миграцию в период низкой нагрузки и заранее уведомите потребителей телеметрии.
Предварительные требования
- Активная сессия
kubectlот администратора кластера с рольюcluster-admin. - Устаревший стек трассировки Service Mesh, описанный в Настройка платформы распределённой трассировки с Service Mesh (устарело), уже установлен — то есть в namespace
istio-systemзапущеныOpenTelemetryCollectorс именемotelи экземплярJaegerс именемjaeger-prod, а ресурсIstioопределяет provider расширенияotel, который указывает наotel-collector.istio-system.svc.cluster.local. - Потребители телеметрии (разработчики, пользователи Kiali, дашборды SRE) и владельцы приложений были уведомлены о запланированном окне прерывания.
Процедура миграции
Удалите устаревший OpenTelemetry Collector и Operator
В v1 и v2 Alauda Build of OpenTelemetry Operators используются одни и те же CRD, поэтому перед установкой v2 Operator необходимо удалить v1 Operator. Устаревший Operator Alauda Build of Jaeger управляет отдельным CRD (jaegertracing.io/v1.Jaeger) и остаётся запущенным, чтобы устаревший Jaeger продолжал обслуживать исторические трассы в течение периода наблюдения.
-
Удалите устаревший экземпляр
OpenTelemetryCollectorв namespaceistio-system: -
Удалите
Alauda Build of OpenTelemetryOperator в представлении Administrator в веб-консоли.- Перейдите в Marketplace → OperatorHub → используйте поле поиска, чтобы найти
Alauda build of OpenTelemetry. - Щёлкните по заголовку Alauda build of OpenTelemetry, чтобы открыть страницу сведений.
- На странице сведений Alauda build of OpenTelemetry нажмите кнопку Uninstall в правом верхнем углу.
- В окне Uninstall "opentelemetry-operator"? нажмите Uninstall.
- Перейдите в Marketplace → OperatorHub → используйте поле поиска, чтобы найти
Для справки о том, почему v1 Operator необходимо удалить перед установкой v2 Operator, а также о характере возникающего при этом прерывания, см. Перенос Alauda Build of OpenTelemetry на v2 в руководстве по миграции Alauda Distributed Tracing.
Разверните новый стек распределённой трассировки
Завершите раздел Prerequisites в Настройка платформы распределённой трассировки с Service Mesh, чтобы поднять стек v2:
- Установите
Alauda Build of OpenTelemetry v2Operator. - Разверните новый экземпляр
Jaeger v2(по умолчанию в namespacejaeger-system). - Разверните OpenTelemetry Collector v2 (по умолчанию в namespace
jaeger-system).
Стек v2 изолирован по namespace от устаревшего Jaeger jaeger-prod в istio-system, поэтому оба могут сосуществовать в течение всего периода наблюдения.
Остановитесь после выполнения раздела Prerequisites в Настройка платформы распределённой трассировки с Service Mesh. Конфигурация со стороны mesh (ресурсы Istio и Telemetry) уже присутствует из устаревшей установки и будет обновлена патчем на следующем шаге — не переходите к разделу Procedure этого документа в ходе миграции.
Перенастройте provider расширения Istio на новый OpenTelemetry Collector
Пропатчите ресурс Istio, чтобы provider расширения otel указывал на новый OpenTelemetry Collector v2 в namespace jaeger-system вместо удалённого устаревшего Collector в istio-system:
Эта команда использует JSON merge patch, который заменяет весь массив meshConfig.extensionProviders. Если ресурс Istio определяет другие provider расширения, отредактируйте ресурс интерактивно с помощью kubectl edit istio default или используйте JSON Patch (--type=json), который добавляет элемент в /spec/values/meshConfig/extensionProviders/-, чтобы они были сохранены.
После применения патча и согласования control plane Istio sidecar-ы начнут отправлять спаны в новый OpenTelemetry Collector, и новые трассы появятся в UI Jaeger v2. Ресурс Telemetry менять не требуется, поскольку он уже ссылается на provider по имени (otel).
(После ≥ 7 дней) Удалите устаревший экземпляр Jaeger и Operator
Устаревший Jaeger продолжает обслуживать трассы, созданные до переключения, пока их хранит устаревший jaeger-es-index-cleaner — по умолчанию 7 дней с даты создания каждого индекса. Оставьте устаревший Jaeger запущенным как минимум на 7 дней после переключения, чтобы пользователи по-прежнему могли искать недавние исторические трассы в устаревшем UI по адресу <platform-url>/clusters/<cluster>/istio/jaeger. После истечения срока хранения устаревших данных переходите к очистке ниже.
Трассы, созданные до переключения, не переносятся в новый backend Jaeger v2; после удаления устаревшего Jaeger восстановить эти трассы будет невозможно. См. Стратегия сохранения непрерывности данных трассировки для модели непрерывности данных.
-
Удалите устаревший экземпляр
Jaegerи связанные с ним ресурсы в namespaceistio-system. Приведённые ниже имена ресурсов соответствуют значениям по умолчанию, создаваемым скриптомinstall-jaeger.shс параметром--target-namespace='istio-system'; измените их, если при первоначальной установке вы использовали другое значение--jaeger-instance-name. -
Удалите
Alauda build of JaegerOperator в представлении Administrator в веб-консоли.- Перейдите в Marketplace → OperatorHub → используйте поле поиска, чтобы найти
Alauda build of Jaeger. - Щёлкните по заголовку Alauda build of Jaeger, чтобы открыть страницу сведений.
- На странице сведений Alauda build of Jaeger нажмите кнопку Uninstall в правом верхнем углу.
- В окне Uninstall "jaeger-operator"? нажмите Uninstall.
- Перейдите в Marketplace → OperatorHub → используйте поле поиска, чтобы найти
Для дополнительных необязательных действий — очистки оставшихся устаревших индексов Elasticsearch, которые удалённый jaeger-es-index-cleaner больше не ротирует, — см. Отключение устаревшего переключателя функции и очистка устаревших индексов в руководстве по миграции Alauda Distributed Tracing.