Развертывание демонстрационного приложения Bookinfo

Обратитесь к этому документу для развертывания приложения Bookinfo в одном и том же namespace на нескольких кластерах внутри сервисной сетки для проверки возможностей мультикластерной сервисной сетки.

Содержание

Подготовка проектов и namespace

Подготовьте проекты и namespace для развертывания приложения с учетом следующих требований к конфигурации:

  • Все кластеры должны быть связаны с существующими проектами платформы как associated clusters.

  • В каждом кластере должен существовать namespace с одинаковым именем для развертывания приложения.

    Примечание: Межрегиональное аварийное восстановление или балансировка нагрузки на основе мультикластерной сервисной сетки возможны только между сервисами с одинаковыми именами в namespace с одинаковыми именами на кластерах внутри сервисной сетки.

Вы можете подготовить проекты и namespace, следуя приведенным ниже инструкциям:

  1. Обратитесь к Create a Project для создания проекта на платформе, включающего associated clusters c1 и c2.
  1. Обратитесь к Create a Namespace для создания namespace с одинаковым именем ns1 в кластерах c1 и c2.

Развертывание приложения Bookinfo на нескольких кластерах

Разверните приложение Bookinfo в namespace с именем ns1 в кластерах c1 и c2.

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

У вас должен быть репозиторий образов, доступный платформе, и возможность загружать образы в этот репозиторий.

NOTE

В этом документе в качестве примера используется Harbor. Вам необходимо подготовить проект в Harbor для загрузки образов (с уровнем доступа access level установленным в public) и назначить этот проект для использования проектом, подготовленным для Bookinfo на платформе. Вы можете развернуть или интегрировать инструмент управления образами Harbor на платформе и назначить проект для загрузки образов в Harbor проекту, подготовленному для Bookinfo на платформе.

Введение в приложение

Bookinfo — это пример приложения, предоставляемого Istio, имитирующий онлайн-книжный магазин. Оно состоит из четырёх отдельных сервисов, которые вместе обеспечивают функциональность просмотра описания книги, деталей книги (ISBN, количество страниц и т.д.) и некоторых отзывов о книге.

Сервисы, составляющие Bookinfo, следующие:

Название сервисаОписание
productpageВызывает сервисы details и reviews для генерации страницы.
detailsСодержит информацию о книге.
reviewsСодержит отзывы о книге и вызывает сервис ratings.

Сервис reviews имеет три версии:
v1: не вызывает сервис ratings.
v2: вызывает сервис ratings и отображает рейтинг от 1 до 5 звёзд .
v3: вызывает сервис ratings и отображает рейтинг от 1 до 5 звёзд .
Совет: по умолчанию развернута версия v2.
ratingsСодержит информацию о рейтингах, основанную на оценках книг.

Ниже показана сквозная архитектура Bookinfo.

Подготовка образов и YAML-файлов

Перед развертыванием приложения Bookinfo на платформе необходимо скачать образы и YAML-файлы, необходимые для развертывания приложения Bookinfo, из системы Customer Portal.

Выполнив скрипт, выполните тегирование образов и загрузите их в репозиторий образов, доступный платформе, а также измените адреса образов в YAML-файлах соответственно. Убедитесь, что платформа может без проблем подтягивать необходимые образы при развертывании приложения.

Шаги

  1. Войдите в Customer Portal, найдите Bookinfo в Application Marketplace и скачайте предоставленные файлы продукта на локальную машину.

    TIP

    Для доступа к системе Customer Portal обратитесь в техническую поддержку.

  2. Откройте локальный терминал и выполните следующие команды для распаковки скачанных файлов и загрузки образов.

    unzip <file_name>.zip
    docker load -i images.tar
    NOTE

    После распаковки вы получите следующие файлы:

    • images.tar: пакет образов Bookinfo.
    • bookinfo.yaml: YAML-файл Bookinfo.
    • docker_script.sh: скрипт для тегирования образов, загрузки образов и изменения адресов образов в YAML-файле.
  3. Выполните команду для входа в репозиторий образов, доступный платформе.

    NOTE

    Замените <Harbor address> на фактический доступный адрес Harbor на платформе, например: registry-harbor.example.com.

    docker login <Harbor address>
    NOTE

    Если после ввода имени пользователя и пароля вы получите следующую ошибку, измените конфигурацию Docker Engine, добавив адрес Harbor в insecure-registries, затем повторите команду входа.

    Error response from daemon: Get "https://<Harbor address>/v2/": http: server gave HTTP response to HTTPS client
  4. Отредактируйте скрипт docker_script.sh.

    Замените <Harbor address> на адрес проекта Harbor, куда вы хотите загрузить образы, например: registry-harbor.example.com/bookinfo.

  5. Последовательно выполните следующие команды.

    Эти команды выполняют скрипт docker_script.sh для тегирования образов, загрузки образов в проект Harbor и изменения адресов образов в файле bookinfo.yaml.

    chmod +x docker_script.sh
    ./docker_script.sh

Однокликовое развертывание приложения

На платформе Container Platform создайте native application с помощью YAML в namespace ns1 кластеров c1 и c2 для развертывания приложения Bookinfo.

Шаги

  1. В верхней панели навигации переключитесь на Container Platform и перейдите в namespace ns1 кластера c1.

  2. В левой панели навигации выберите Application Management > Native Application.

  3. Нажмите Create Native Application и выберите One-Click Create with YAML.

  4. Введите имя приложения, нажмите Import в редакторе YAML, выберите bookinfo.yaml и нажмите Create.

  5. Повторите вышеуказанные шаги для развертывания приложения Bookinfo в namespace ns1 кластера c2.

Внедрение Sidecar в сервисы приложения

На платформе Service Mesh добавьте сервисы productpage, details, reviews и ratings, составляющие приложение Bookinfo, в платформу Service Mesh с режимом управления Service Mesh governance mode. При добавлении сервисов платформа автоматически внедряет Sidecar в сервисы.

После внедрения Sidecar архитектура Bookinfo выглядит следующим образом.

Шаги

  1. В верхней панели навигации переключитесь на Service Mesh.

  2. В левой панели навигации выберите Service List.

  3. Нажмите Add Service и выберите Service Mesh Governance Mode.

  4. Настройте соответствующие параметры и нажмите Create.

    NOTE

    Если не указано иное, выберите Deployment и используйте значения параметров по умолчанию на интерфейсе.

    • Повторите вышеуказанные шаги для добавления сервисов productpage, details, reviews и ratings в платформу в namespace ns1 кластеров c1 и c2.

Доступ к приложению Bookinfo через Ingress Gateway

Шаги

Обратитесь к Using Ingress Gateway для развертывания ingress gateway в кластере c1 и создания конфигурации gateway и маршрутизации для доступа к приложению Bookinfo, развернутому в кластере, через браузер.

Настройте соответствующие параметры по необходимости и при необходимости настройте другие параметры.

  • Ingress Gateway:

    • Internal Routing Type: LoadBalancer.

    • Порт включает HTTP-протокол.

  • Gateway Configuration: выберите порт с HTTP-протоколом.

  • Routing Configuration: в Routing Destination выберите namespace ns1 in cluster c1, internal routing productpage и порт 9080.

Проверка доступа

Нажмите на External Access Address в конфигурации маршрутизации, выберите тип имитируемого пользователя (Normal user/Test user) в левом нижнем углу открывшейся страницы, после чего вы сможете получить доступ к сервису productpage и увидеть информацию о рейтингах, отображаемую версией сервиса reviews, вызываемой сервисом productpage.

Ниже показана топология вызовов сервисов.