• Русский
  • Установка Alauda Build of OpenTelemetry v2

    Установка Alauda Build of OpenTelemetry v2 состоит из следующих шагов:

    • Установка Operator для Alauda Build of OpenTelemetry v2
    • Создание namespace для OpenTelemetry Collector
    • Развертывание экземпляра OpenTelemetry Collector
    WARNING
    • Не устанавливайте Alauda Build of OpenTelemetry и Alauda Build of OpenTelemetry v2 в один и тот же Kubernetes cluster, так как это приведет к функциональным конфликтам.
    • Не устанавливайте Alauda Service Mesh и Alauda Build of OpenTelemetry v2 в один и тот же Kubernetes cluster, так как это приведет к функциональным конфликтам (Alauda Service Mesh v2 поддерживает интеграцию с Alauda Build of OpenTelemetry v2).
    • Не развертывайте OpenTelemetry Collector в том же namespace, что и Operator. Создайте отдельный namespace для экземпляра Collector.

    Установка Operator для Alauda Build of OpenTelemetry v2

    Установка через веб-консоль

    Предварительные условия

    • Должен быть загружен пакет Alauda Build of OpenTelemetry v2.
    • Вы вошли в веб-консоль Alauda Container Platform как cluster-admin.

    Процедура

    1. В веб-консоли Alauda Container Platform перейдите в раздел Administrator.
    2. Выберите Marketplace > OperatorHub.
    3. Найдите Alauda Build of OpenTelemetry v2.
    4. Найдите Alauda Build of OpenTelemetry v2 и щелкните его, чтобы выбрать.
    5. Нажмите Install.
    6. В диалоговом окне Install Alauda Build of OpenTelemetry v2 выполните следующие действия:
      1. Выберите канал stable, чтобы установить последнюю стабильную версию Operator для Alauda Build of OpenTelemetry v2.
    7. Нажмите Install и Confirm, чтобы установить Operator.

    Проверка

    Убедитесь, что статус установки Operator указан как Succeeded в разделе Installation Info.

    Установка через CLI

    Предварительные условия

    • Должен быть загружен пакет Alauda Build of OpenTelemetry v2.
    • Активная сессия ACP CLI (kubectl) от администратора cluster с ролью cluster-admin.

    Процедура

    1. Проверьте доступные версии

      (
        echo -e "CHANNEL\tNAME\tVERSION"
        kubectl get packagemanifest opentelemetry-operator2 -o json | jq -r '
          .status.channels[] |
          .name as $channel |
          .entries[] |
          [$channel, .name, .version] | @tsv
        '
      ) | column -t -s $'\t'

      Пример вывода

      CHANNEL  NAME                                    VERSION
      stable   opentelemetry-operator2.v0.146.0-r0     0.146.0-r0

      Поля:

      • CHANNEL: имя канала Operator
      • NAME: имя ресурса CSV
      • VERSION: версия Operator
    2. Подтвердите catalogSource

      kubectl get packagemanifests opentelemetry-operator2 -ojsonpath='{.status.catalogSource}'

      Пример вывода

      platform

      Это означает, что opentelemetry-operator2 получен из platform catalogSource.

    3. Создайте namespace

      kubectl get namespace opentelemetry-operator2 || kubectl create namespace opentelemetry-operator2
    4. Создайте Subscription

      kubectl apply -f - <<EOF
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        annotations:
          cpaas.io/target-namespaces: ""
        labels:
          catalog: platform
        name: opentelemetry-operator2
        namespace: opentelemetry-operator2
      spec:
        channel: stable
        installPlanApproval: Manual
        name: opentelemetry-operator2
        source: platform
        sourceNamespace: cpaas-system
        startingCSV: opentelemetry-operator2.v0.146.0-r0
      EOF

      Пояснения к полям

      • annotation cpaas.io/target-namespaces: рекомендуется оставлять пустым; пустое значение означает кластерную установку.
      • .metadata.name: имя Subscription (должно соответствовать DNS, максимум 253 символа).
      • .metadata.namespace: namespace, в котором будет установлен Operator.
      • .spec.channel: канал Operator, на который выполняется подписка.
      • .spec.installPlanApproval: стратегия утверждения (Manual или Automatic). Здесь Manual требует ручного утверждения для установки/обновления.
      • .spec.source: catalogSource Operator.
      • .spec.sourceNamespace: должно быть установлено в cpaas-system, поскольку все catalogSource, предоставляемые платформой, находятся в этом namespace.
      • .spec.startingCSV: указывает версию, которая будет установлена при ручном утверждении; если поле пустое, по умолчанию используется последняя версия в канале. Для Automatic не требуется.
    5. Проверьте статус Subscription

      kubectl -n opentelemetry-operator2 get subscriptions opentelemetry-operator2 -o yaml

      Ключевые значения вывода

      • .status.state: UpgradePending означает, что Operator ожидает установки или обновления.
      • Condition InstallPlanPending = True: ожидается ручное утверждение.
      • .status.currentCSV: последняя подписанная CSV.
      • .status.installPlanRef: связанный InstallPlan; перед продолжением установки его необходимо утвердить.

      Дождитесь, пока условие InstallPlanPending станет True:

      kubectl -n opentelemetry-operator2 wait --for=condition=InstallPlanPending subscription opentelemetry-operator2 --timeout=2m
    6. Утвердите InstallPlan

      kubectl -n opentelemetry-operator2 get installplan \
        "$(kubectl -n opentelemetry-operator2 get subscriptions opentelemetry-operator2 -o jsonpath='{.status.installPlanRef.name}')"

      Пример вывода

      NAME            CSV                                     APPROVAL   APPROVED
      install-abc12   opentelemetry-operator2.v0.146.0-r0     Manual     false

      Утверждение вручную

      PLAN="$(kubectl -n opentelemetry-operator2 get subscription opentelemetry-operator2 -o jsonpath='{.status.installPlanRef.name}')"
      kubectl -n opentelemetry-operator2 patch installplan "$PLAN" --type=json -p='[{"op": "replace", "path": "/spec/approved", "value": true}]'

    Проверка

    Дождитесь создания CSV; Phase изменится на Succeeded:

    kubectl wait --for=jsonpath='{.status.phase}'=Succeeded csv --all -n opentelemetry-operator2 --timeout=3m

    Проверьте статус CSV:

    kubectl -n opentelemetry-operator2 get csv

    Пример вывода

    NAME                                    DISPLAY                                  VERSION      REPLACES   PHASE
    opentelemetry-operator2.v0.146.0-r0     Alauda Build of OpenTelemetry v2         0.146.0-r0              Succeeded

    Поля

    • NAME: имя установленного CSV
    • DISPLAY: отображаемое имя Operator
    • VERSION: версия Operator
    • REPLACES: CSV, замененный при обновлении
    • PHASE: статус установки (Succeeded означает успешное завершение)

    Развертывание OpenTelemetry Collector

    После успешной установки Operator для Alauda Build of OpenTelemetry v2 разверните OpenTelemetry Collector, создав пользовательский ресурс OpenTelemetryCollector.

    NOTE

    Несколько экземпляров OpenTelemetry Collector могут сосуществовать в отдельных namespace. Каждый экземпляр независим и управляется Operator.

    Создание namespace для Collector

    Перед развертыванием OpenTelemetry Collector создайте отдельный namespace для экземпляра Collector. Collector не должен быть развернут в том же namespace, что и Operator.

    TIP

    Namespace opentelemetry-collector, используемый в этом руководстве, приведен в качестве примера. Вы можете создать и использовать namespace с любым именем, которое соответствует соглашениям об именовании в вашей организации.

    kubectl get namespace opentelemetry-collector || \
      kubectl create namespace opentelemetry-collector

    Развертывание через веб-консоль

    Предварительные условия

    • Должен быть установлен Operator для Alauda Build of OpenTelemetry v2.
    • Вы вошли в веб-консоль Alauda Container Platform как cluster-admin.
    • Создан выделенный namespace для экземпляра Collector.

    Процедура

    1. В веб-консоли Alauda Container Platform перейдите в раздел Administrator.

    2. Выберите Marketplace > OperatorHub.

    3. Найдите Alauda Build of OpenTelemetry v2.

    4. Найдите Alauda Build of OpenTelemetry v2 и щелкните его, чтобы выбрать.

    5. Щелкните вкладку All Instances.

    6. Нажмите Create.

    7. Найдите и выберите OpenTelemetryCollector, затем нажмите Create.

    8. Выберите namespace Collector в раскрывающемся списке Namespace.

    9. Щелкните вкладку YAML.

    10. Настройте пользовательский ресурс (CR) OpenTelemetryCollector в редакторе кода YAML:

      Пример CR OpenTelemetryCollector

      apiVersion: opentelemetry.io/v1beta1
      kind: OpenTelemetryCollector
      metadata:
        name: otel
        namespace: opentelemetry-collector
      spec:
        mode: deployment
        replicas: 1
        config:
          receivers:
            otlp:
              protocols:
                grpc: {}
                http: {}
            jaeger:
              protocols:
                grpc: {}
                thrift_binary: {}
                thrift_compact: {}
                thrift_http: {}
            zipkin: {}
          processors:
            batch: {}
            memory_limiter:
              check_interval: 1s
              limit_percentage: 80
              spike_limit_percentage: 20
          exporters:
            debug: {}
          service:
            pipelines:
              traces:
                receivers: [otlp, jaeger, zipkin]
                processors: [memory_limiter, batch]
                exporters: [debug]
      1. Namespace, в котором будет развернут экземпляр OpenTelemetry Collector. Здесь opentelemetry-collector используется в качестве примера; замените его на namespace, который вы создали для Collector. Этот namespace должен отличаться от namespace Operator.
      2. Режим развертывания Collector. Поддерживаемые значения: deployment (по умолчанию), daemonset, statefulset или sidecar.
      3. Receivers определяют, как данные телеметрии поступают в Collector. В этом примере настроены receivers для протоколов OTLP, Jaeger и Zipkin.
      4. Processors обрабатывают данные между приемом и экспортом. В этом примере используется batch для пакетной обработки данных телеметрии и memory_limiter для контроля использования памяти.
      5. Exporters определяют назначения для данных телеметрии. В этом примере используется exporter debug, который выводит данные в логи Collector.
    11. Нажмите Create.

    Проверка

    Дождитесь, пока pods OpenTelemetry Collector будут запущены.

    Развертывание через CLI

    Предварительные условия

    • Активная сессия ACP CLI (kubectl) от администратора cluster с ролью cluster-admin.
    • Должен быть установлен Operator для Alauda Build of OpenTelemetry v2.
    • Создан выделенный namespace для экземпляра Collector.

    Процедура

    1. Настройте и примените пользовательский ресурс (CR) OpenTelemetryCollector:

      kubectl apply -f - <<EOF
      apiVersion: opentelemetry.io/v1beta1
      kind: OpenTelemetryCollector
      metadata:
        name: otel
        namespace: opentelemetry-collector
      spec:
        mode: deployment
        replicas: 1
        config:
          receivers:
            otlp:
              protocols:
                grpc: {}
                http: {}
            jaeger:
              protocols:
                grpc: {}
                thrift_binary: {}
                thrift_compact: {}
                thrift_http: {}
            zipkin: {}
          processors:
            batch: {}
            memory_limiter:
              check_interval: 1s
              limit_percentage: 80
              spike_limit_percentage: 20
          exporters:
            debug: {}
          service:
            pipelines:
              traces:
                receivers: [otlp, jaeger, zipkin]
                processors: [memory_limiter, batch]
                exporters: [debug]
      EOF
      NOTE

      Подробное описание полей CR OpenTelemetryCollector см. в примере CR в разделе развертывания через веб-консоль выше.

    2. Дождитесь, пока pods Collector будут готовы:

      kubectl wait --for=condition=Ready pod -l app.kubernetes.io/managed-by=opentelemetry-operator -n opentelemetry-collector --timeout=3m

    Проверка

    Убедитесь, что pods Collector запущены:

    kubectl get pods -n opentelemetry-collector

    Пример вывода

    NAME                              READY   STATUS    RESTARTS   AGE
    otel-collector-7877b4cdcf-bj7br   1/1     Running   0          69s