• Русский
  • Миграция на 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 продолжал обслуживать исторические трассы в течение периода наблюдения.

    1. Удалите устаревший экземпляр OpenTelemetryCollector в namespace istio-system:

      kubectl -n istio-system delete opentelemetrycollector otel
    2. Удалите Alauda Build of OpenTelemetry Operator в представлении Administrator в веб-консоли.

      • Перейдите в MarketplaceOperatorHub → используйте поле поиска, чтобы найти Alauda build of OpenTelemetry.
      • Щёлкните по заголовку Alauda build of OpenTelemetry, чтобы открыть страницу сведений.
      • На странице сведений Alauda build of OpenTelemetry нажмите кнопку Uninstall в правом верхнем углу.
      • В окне Uninstall "opentelemetry-operator"? нажмите Uninstall.

    Для справки о том, почему v1 Operator необходимо удалить перед установкой v2 Operator, а также о характере возникающего при этом прерывания, см. Перенос Alauda Build of OpenTelemetry на v2 в руководстве по миграции Alauda Distributed Tracing.

    Разверните новый стек распределённой трассировки

    Завершите раздел Prerequisites в Настройка платформы распределённой трассировки с Service Mesh, чтобы поднять стек v2:

    • Установите Alauda Build of OpenTelemetry v2 Operator.
    • Разверните новый экземпляр Jaeger v2 (по умолчанию в namespace jaeger-system).
    • Разверните OpenTelemetry Collector v2 (по умолчанию в namespace jaeger-system).

    Стек v2 изолирован по namespace от устаревшего Jaeger jaeger-prod в istio-system, поэтому оба могут сосуществовать в течение всего периода наблюдения.

    NOTE

    Остановитесь после выполнения раздела Prerequisites в Настройка платформы распределённой трассировки с Service Mesh. Конфигурация со стороны mesh (ресурсы Istio и Telemetry) уже присутствует из устаревшей установки и будет обновлена патчем на следующем шаге — не переходите к разделу Procedure этого документа в ходе миграции.

    Перенастройте provider расширения Istio на новый OpenTelemetry Collector

    Пропатчите ресурс Istio, чтобы provider расширения otel указывал на новый OpenTelemetry Collector v2 в namespace jaeger-system вместо удалённого устаревшего Collector в istio-system:

    kubectl patch istio default --type=merge -p '
    spec:
      values:
        meshConfig:
          enableTracing: true
          extensionProviders:
          - name: otel
            opentelemetry:
              port: 4317
              service: otel-collector.jaeger-system.svc.cluster.local
    '
    WARNING

    Эта команда использует 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 восстановить эти трассы будет невозможно. См. Стратегия сохранения непрерывности данных трассировки для модели непрерывности данных.

    1. Удалите устаревший экземпляр Jaeger и связанные с ним ресурсы в namespace istio-system. Приведённые ниже имена ресурсов соответствуют значениям по умолчанию, создаваемым скриптом install-jaeger.sh с параметром --target-namespace='istio-system'; измените их, если при первоначальной установке вы использовали другое значение --jaeger-instance-name.

      kubectl -n istio-system delete ingress      jaeger-prod-query         --ignore-not-found
      kubectl -n istio-system delete podmonitor   jaeger-prod-monitor       --ignore-not-found
      kubectl -n istio-system delete jaeger       jaeger-prod               --ignore-not-found
      kubectl -n istio-system delete rolebinding  jaeger-prod-rb            --ignore-not-found
      kubectl -n istio-system delete role         jaeger-prod-role          --ignore-not-found
      kubectl -n istio-system delete sa           jaeger-prod-sa            --ignore-not-found
      kubectl -n istio-system delete secret       jaeger-prod-oauth2-proxy  --ignore-not-found
      kubectl -n istio-system delete secret       jaeger-prod-es-basic-auth --ignore-not-found
      kubectl -n istio-system delete configmap    jaeger-prod-oauth2-proxy  --ignore-not-found
    2. Удалите Alauda build of Jaeger Operator в представлении Administrator в веб-консоли.

      • Перейдите в MarketplaceOperatorHub → используйте поле поиска, чтобы найти Alauda build of Jaeger.
      • Щёлкните по заголовку Alauda build of Jaeger, чтобы открыть страницу сведений.
      • На странице сведений Alauda build of Jaeger нажмите кнопку Uninstall в правом верхнем углу.
      • В окне Uninstall "jaeger-operator"? нажмите Uninstall.

    Для дополнительных необязательных действий — очистки оставшихся устаревших индексов Elasticsearch, которые удалённый jaeger-es-index-cleaner больше не ротирует, — см. Отключение устаревшего переключателя функции и очистка устаревших индексов в руководстве по миграции Alauda Distributed Tracing.