Изучение возможностей наблюдаемости

В этой статье вы узнаете, как использовать Istio для внедрения Sidecar в приложение Bookinfo и изучения возможностей наблюдаемости.

Перед началом убедитесь, что:

Содержание

Шаг 1: Управление пространством имён

Перейдите в Platform Management, затем в Service Mesh > Service Meshes и кликните по названию сервисной сетки, чтобы открыть страницу с деталями. В разделе Namespaces нажмите Managed Namespace. Выберите demo-dev и нажмите Confirm.

Шаг 2: Внедрение Sidecar

  1. Развертывание с помощью kubectl
    Откройте платформу контейнеров или страницу управления платформой и нажмите на инструмент kubectl в правом нижнем углу.

  2. Применение YAML-файла
    Вставьте следующий скрипт в терминал и выполните его:

    #!/bin/bash
    apiVersion: asm.alauda.io/v1beta3
    kind: MicroService
    metadata:
      labels:
        app.cpaas.io/microservice-type: service-mesh
        asm.cpaas.io/isolatepod: enabled
      name: details
    spec:
      deployments:
      - name: details-v1
      services:
      - name: details
      sidecar:
        enabled: true
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi
    ---
    apiVersion: asm.alauda.io/v1beta3
    kind: MicroService
    metadata:
      labels:
        app.cpaas.io/microservice-type: service-mesh
        asm.cpaas.io/isolatepod: enabled
      name: ratings
    spec:
      deployments:
      - name: ratings-v1
      services:
      - name: ratings
      sidecar:
        enabled: true
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi
    ---
    apiVersion: asm.alauda.io/v1beta3
    kind: MicroService
    metadata:
      labels:
        app.cpaas.io/microservice-type: service-mesh
        asm.cpaas.io/isolatepod: enabled
      name: reviews
    spec:
      deployments:
      - name: reviews-v1
      services:
      - name: reviews
      sidecar:
        enabled: true
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi
    ---
    apiVersion: asm.alauda.io/v1beta3
    kind: MicroService
    metadata:
      labels:
        app.cpaas.io/microservice-type: service-mesh
        asm.cpaas.io/isolatepod: enabled
      name: productpage
    spec:
      deployments:
      - name: productpage-v1
      services:
      - name: productpage
      sidecar:
        enabled: true
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi
    EOF
    kubectl apply -f sidecar.yaml -n demo-dev
    rm sidecar.yaml
  3. Подтверждение успешного внедрения
    Перейдите в Service Mesh, в разделе Services вы должны увидеть, что внедрение Sidecar для всех четырёх сервисов Bookinfo установлено в состояние Enabled.

Шаг 3: Изучение возможностей наблюдаемости

  1. Генерация трафика
    Для изучения возможностей наблюдаемости приложению Bookinfo необходим трафик, чтобы Istio мог собирать метрики и трассировки с сервисов. Используйте следующий скрипт для генерации трафика.
    **Примечание: ** Замените GATEWAY_IP_PORT на фактический IP вашего ingress gateway. Мы ранее получили GATEWAY_IP_PORT в разделе [Accessing Bookinfo].

    Сохраните следующий скрипт как send-requests.sh

    #!/bin/sh
    export GATEWAY_IP_PORT=192.168.130.0:30665
    while true; do
        result=$(curl -m 5 -s -o /dev/null -I -w "%{http_code}" "http://$GATEWAY_IP_PORT/productpage")
        echo date: $(date), status code: "$result"
        sleep 1
    done

    Сделайте скрипт исполняемым и запустите его:

    chmod +x send-requests.sh
    ./send-requests.sh

    Этот скрипт будет отправлять запрос на страницу продукта Bookinfo каждую секунду. Через некоторое время вы сможете изучить возможности наблюдаемости в пользовательском интерфейсе.

  2. Топология сервисов

    • После запуска скрипта генерации трафика в течение 1–5 минут перейдите в Service Mesh > Topologies. Здесь вы увидите топологию, показывающую зависимости между ingress gateway и четырьмя сервисами Bookinfo. Также можно просмотреть метрики, связанные с трафиком и уровнем ошибок, на графе топологии.

    • Кликните по связи между узлами public-ingressgw и productpage в топологии. Справа от топологии появится Traffic Info между ними.

  3. Детали трассировки

    • На странице Traffic Info нажмите View Tracing, чтобы открыть страницу с деталями трассировки. Время запроса и параметры будут заполнены автоматически. Список Span слева отобразит данные Span, соответствующие условиям запроса.

    • Кликните на любой Span, чтобы просмотреть полные данные Trace справа.

    • Нажмите View Log в данных Trace, чтобы проверить постоянные логи Pod, участвующих в трассировке.