Установить Apigee в распределенном облаке Google с изоляцией

В этом руководстве описывается установка и развертывание Apigee Edge для частного облака и прокси-серверов API в изолированной среде Google Distributed Cloud (GDC). Для изолированных решений GDC , включая Apigee Edge для частного облака, не требуется подключение к Google Cloud для управления инфраструктурой и сервисами. Вы можете использовать локальную плоскость управления, размещенную на вашей площадке, для всех операций. Обзор изолированной среды GDC см. в разделе «Обзор» .

Это руководство предназначено для операторов Apigee, которые знакомы с Apigee Edge для частного облака и имеют базовые знания Kubernetes.

Обзор необходимых шагов

Чтобы установить и развернуть Apigee Edge для частного облака в изолированной среде GDC, оператору необходимо выполнить следующие действия:

Прежде чем начать

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

  1. Создайте проект GDC для установки, если у вас его ещё нет. Подробнее см. в разделе Создание проекта .
  2. Загрузите, установите и настройте интерфейс командной строки gdcloud на рабочей станции, подключенной к GDC, или в среде непрерывного развертывания вашей организации.
  3. Получите учётные данные, необходимые для использования интерфейса командной строки gdcloud и API kubectl . Инструкции см. в разделе «Аутентификация учётной записи для доступа ».
  4. Подтвердите имя пользователя и пароль Apigee, которые вы получили от своего менеджера по работе с клиентами Apigee.
  5. Подтвердите имя кластера администратора GKE и имя кластера пользователя GKE.

Требования к емкости

Для установки Apigee Edge для частного облака на GDC требуется несколько виртуальных машин (ВМ) с выделенными ресурсами. Стоимость использования этих ВМ зависит от их вычислительных ресурсов (ОЗУ, ядер vCPU) и локального дискового пространства. Подробнее см. в разделе «Цены» .

В следующей таблице показаны требования к ресурсам для каждой виртуальной машины:

Тип ВМ БАРАН ядра vCPU Дисковое хранилище
Узел репо 8 ГБ 2 ядра vCPU 64 ГБ
Узел управления 8 ГБ 2 ядра vCPU 64 ГБ
Узлы управления API Apigee 1, 2 и 3 16 ГБ ОЗУ 8 ядер vCPU 670 ГБ
Узлы управления API Apigee 4 и 5 16 ГБ ОЗУ 8 ядер vCPU 500 ГБ - 1 ТБ

Роли и разрешения

Для развертывания Apigee Edge для частного облака в изолированной среде GDC требуются следующие роли и разрешения:

  • Администратор платформы (PA): назначьте роль IAM Admin .
  • Оператор приложения (AO): Назначьте следующие роли:
    • Harbor Instance Admin : имеет полный доступ для управления экземплярами Harbor в проекте.
    • LoggingTarget Creator : создает пользовательские ресурсы LoggingTarget в пространстве имен проекта.
    • LoggingTarget Editor : редактирует пользовательские ресурсы LoggingTarget в пространстве имен проекта.
    • Project Bucket Admin : управляет контейнерами хранения и объектами внутри контейнеров.
    • Project Grafana Viewer : обеспечивает доступ к экземпляру мониторинга в пространстве имен проекта.
    • Project NetworkPolicy Admin : управляет сетевыми политиками проекта в пространстве имен проекта.
    • Project VirtualMachine Admin : управляет виртуальными машинами в пространстве имен проекта.
    • Secret Admin : управляет секретами Kubernetes в проектах.
    • Service Configuration Admin : имеет право на чтение и запись конфигураций служб в пространстве имен проекта.
    • Namespace Admin : управляет всеми ресурсами в пространствах имен проекта.
  • Дополнительную информацию о предоставлении изолированных ролей и разрешений GDC см. в разделе Предоставление и отзыв доступа .

    Ограничения

    К Apigee на GDC с воздушным зазором применяются следующие ограничения:

    • Apigee на сервере GDC с воздушным зазором не поставляется с DNS-серверами и использует локальное разрешение DNS в качестве обходного пути. Если Apigee на сервере GDC с воздушным зазором развёрнут в среде с внешними DNS-серверами, замените шаги по настройке локального DNS на настройку DNS-записей на DNS-серверах.
    • В Apigee на сервере GDC с воздушным зазором нет отдельного SMTP-сервера. Вы можете в любое время настроить SMTP-сервер, чтобы включить отправку исходящих почтовых уведомлений о создании учётных записей и сбросе паролей с сервера управления и из пользовательского интерфейса управления. API управления остаются доступными для управления учётными записями пользователей Apigee. Подробнее см. в разделе «Настройка пограничного SMTP-сервера» .
    • Apigee на GDC с воздушным зазором не реализует обнаружение и предотвращение вторжений. Установите и настройте систему предотвращения вторжений (IPS), например Snort , для обнаружения и предотвращения вредоносных действий.

    Получите необходимые файлы

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

    Настройте подключенный узел

    Подключённый узел — это отдельная виртуальная машина вне GDC, которую вы используете для загрузки установочных файлов. Эта виртуальная машина требует доступа к интернету и используется только для процесса установки.

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

    • Операционная система: Rocky Linux 8
    • Размер машины: 8 ГБ ОЗУ; 2 ядра vCPU; 64 ГБ локального дискового хранилища
    • Связь:
      • Входящий трафик: TCP 22 (SSH)
      • Выход: Интернет

    Чтобы создать подключенный узел, следуйте инструкциям в разделе Создание и запуск экземпляра виртуальной машины . После создания виртуальной машины следуйте инструкциям в разделе Подключение к виртуальным машинам Linux , чтобы подключиться к ней. Список поддерживаемых операционных систем см. в разделе Поддерживаемые GDC операционные системы.

    Загрузить установочные файлы

    Чтобы загрузить установочные файлы:

    1. Проверьте заметки о выпуске Apigee Edge для частного облака на предмет последней официальной версии релиза, поддерживаемой GDC, как указано в колонке Edge для частного облака.
    2. Загрузите установочный файл Edge:
      curl https://software.apigee.com/apigee/tarball/VERSION/rocky8/archive.tar -o /tmp/archive.tar -u 'APIGEE_USER:APIGEE_PASSWORD'

      Где:

      • APIGEE_USER — имя пользователя, которое вы получили для организации Apigee.
      • APIGEE_PASSWORD — это пароль, который вы получили для организации Apigee.
      • VERSION — это версия выпуска Apigee Edge for Private Cloud для использования на GDC, которую вы собираетесь установить, например, 4.53.01 .
    3. Загрузите последнюю версию файла bootstrap_ VERSION .sh для Apigee Edge for Private Cloud в /tmp/bootstrap_ VERSION .sh :
      curl https://software.apigee.com/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh

      Где VERSION — последняя версия выпуска Apigee Edge for Private Cloud для использования на GDC, которую вы собираетесь установить, например, 4.53.01 .

    4. Установите утилиту Edge apigee-service и зависимости:
      sudo bash /tmp/bootstrap_VERSION.sh apigeeuser=APIGEE_USER apigeepassword=APIGEE_PASSWORD

      Где:

      • APIGEE_USER — имя пользователя, которое вы получили для организации Apigee.
      • APIGEE_PASSWORD — это пароль, который вы получили для организации Apigee.
      • VERSION — это версия выпуска Apigee Edge for Private Cloud для использования на GDC, которую вы собираетесь установить.

    5. Запустите скрипт настройки на подключенном узле:
      chmod a+x connected-node_setup.sh \
        ./connected-node_setup.sh

      На этом этапе скрипт генерирует необходимые файлы в следующих местах (например, для версии 4.53.01 ):

      • /opt/apigee/data/apigee-mirror/apigee-4.53.01.tar.gz
      • /tmp/apigee-nginx/apigee-nginx.tar
      • /tmp/fluentbit/fluentbit.tar
      • /tmp/postgresql14/postgresql14.tar
      • /tmp/ansible-rpms.tar
      • /tmp/apigee-repos.tar
    6. Перенесите необходимые файлы с подключенного узла на локальную машину через SSH:
      mkdir apigee-files
      cd apigee-files
      for file in /opt/apigee/data/apigee-mirror/apigee-4.53.01.tar.gz /tmp/ansible-rpms.tar /tmp/apigee-nginx/apigee-nginx.tar /tmp/fluentbit/fluentbit.tar /tmp/postgresql14/postgresql14.tar /tmp/apigee-repos.tar; do
        scp -i SSH_PRIVATE_KEY_FILE USER@CONNECTED_NODE_IP:$file .
        done

      Где:

      • SSH_PRIVATE_KEY_FILE — путь к файлу закрытого ключа SSH.
      • USER — имя пользователя подключенного узла.
      • CONNECTED_NODE_IP — IP-адрес подключенного узла.

    Настройте хранилище

    На этом этапе оператор GDC настраивает контейнер хранилища в проекте GDC для хранения файлов резервных копий Apigee Edge для частного облака.

    Создайте контейнер для хранения

    Чтобы создать контейнер хранилища в проекте GDC:

    1. Выполните аутентификацию с помощью кластера администратора организации:
      gdcloud auth login --login-config-cert WEB_TLS_CERT
      gdcloud clusters get-credentials ORG_ADMIN_CLUSTER

      Где:

      • WEB_TLS_CERT — путь к веб-сертификату TLS.
      • ORG_ADMIN_CLUSTER — имя кластера GKE администратора организации.

    2. Задайте переменные среды проекта и контейнера:
      export PROJECT=PROJECT
      export BUCKET=BUCKET_NAME

      Где:

      • PROJECT — название вашего проекта GDC.
      • BUCKET_NAME — имя контейнера, который вы хотите создать для хранения файлов резервных копий Apigee Edge for Private Cloud.
    3. Применяем конфигурацию ковша:
      kubectl apply -f - <<EOF
      apiVersion: object.GDC.goog/v1
      kind: Bucket
      metadata:
        name: $BUCKET
        namespace:$PROJECT
      spec:
        description: bucket for Apigee backup files
        storageClass: Standard
        bucketPolicy :
          lockingPolicy :
            defaultObjectRetentionDays: 30
      EOF

      Такая конфигурация создает контейнер со сроком хранения 30 дней.

    Настроить доступ к ведру

    Чтобы настроить доступ к контейнеру хранилища:

    1. Создайте учетную запись службы в проекте:
      gdcloud iam service-accounts create $BUCKET-sa \
          --project=$PROJECT
    2. Создайте роль и привязку ролей для генерации секрета для доступа к контейнеру:
      kubectl apply -f - <<EOF
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        name: $BUCKET-role
        namespace: $PROJECT
      rules:
      -   apiGroups:
        -   object.gdc.goog
        resourceNames:
        -   $BUCKET
        resources:
        -   buckets
        verbs:
        -   get
        -   read-object
        -   write-object
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: $BUCKETrolebinding
        namespace: $PROJECT
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: $BUCKET-role
      subjects:
      -   kind: ServiceAccount
        name: $BUCKET-sa
        namespace: $PROJECT
      EOF
    3. Получите идентификатор ключа доступа и ключ из секрета:
      export BUCKET_SECRET=$(kubectl get secret -n $PROJECT -o jsonpath="{range .items[*]}{.metadata.name}{':'}{.metadata.annotations['object\.GDC\.goog/subject']}{'\n'}{end}" | grep $BUCKET | tail -1 | cut -f1 -d :)
      echo "access-key-id=$(kubectl get secret -n $PROJECT $BUCKET_SECRET -o jsonpath="{.data['access-key-id']}")"
      echo "access-key=$(kubectl get secret -n $PROJECT $BUCKET_SECRET -o jsonpath="{.data['secret-access-key']}")"

      Вывод должен выглядеть примерно так:

      access-key-id=RFdJMzRROVdWWjFYNTJFTzJaTk0=
      access-key=U3dSdm5FRU5WdDhMckRMRW1QRGV0bE9MRHpCZ0Ntc0cxVFJQdktqdg==
    4. Создайте секрет, который будет использоваться загрузчиком в кластере пользователя GKE:
      1. Аутентификация с помощью кластера GKE пользователя:
        gdcloud clusters get-credentials USER_CLUSTER

        Где USER_CLUSTER — имя пользовательского кластера GKE.

      2. Примените секретную конфигурацию:
        kubectl apply -f - <<EOF
        apiVersion: v1
        kind: Secret
        metadata:
          namespace: $PROJECT
          name: $BUCKET-secret
        type: Opaque
        data:
          access-key-id: ACCESS_KEY_ID
          access-key: ACCESS_KEY
        EOF

        Где:

        • ACCESS_KEY_ID — идентификатор ключа доступа, полученный на предыдущем шаге.
        • ACCESS_KEY — ключ доступа, полученный на предыдущем шаге.
    5. Получите конечную точку хранилища, полное доменное имя (FQDN) и регион контейнера:
      1. Выполните аутентификацию с помощью кластера администратора организации:
        gdcloud clusters get-credentials ORG_ADMIN_CLUSTER

        Где ORG_ADMIN_CLUSTER — имя кластера GKE администратора организации.

      2. Получите конечную точку хранилища, полное доменное имя (FQDN) и регион контейнера:
        kubectl get buckets ${BUCKET} -n $PROJECT -o jsonpath="{'endpoint: '}{.status.endpoint}{'\n'}{'bucket: '}{.status.fullyQualifiedName}{'\n'}{'region: '}{.status.region}{'\n'}"

        Вывод должен выглядеть примерно так:

        endpoint: https://objectstorage.gpu-org.cookie.sesame.street
        bucket: ez9wo-apigee-backup-bucket
        region: cookie
    6. Обновите следующие значения в файле apigee/helm_user_cluster/values-cookie-air-gapped.yaml :
      objectstorekeyname: "apigee-backup-bucket-secret"
      objectstoreurl: "BUCKET_ENDPOINT"
      objectstorebucket: "BUCKET_FQDN"

      Где:

      • BUCKET_ENDPOINT — конечная точка контейнера, полученного на предыдущем шаге.
      • BUCKET_FQDN — полное доменное имя контейнера, полученное на предыдущем шаге.

    Настройте узел репозитория

    На этом этапе оператор GDC настраивает узел репозитория для размещения зеркального репозитория Apigee Edge для частного облака.

    Создать узел репозитория

    Чтобы создать узел репозитория:

    1. Обновите apigee/helm_user_cluster/values-cookie-air-gapped.yaml следующим образом:
      repo_node:
        enabled: true
      
      apigee_node:
        enabled: false
      
      control_node:
        enabled: false

      Убедитесь, что repo_node включён, а узлы apigee_node и control_node отключены. Эти узлы будут развернуты на следующем этапе.

    2. Получите учетные данные для кластера администратора организации:
      gdcloud clusters get-credentials ORG_ADMIN_CLUSTER

      Где ORG_ADMIN_CLUSTER — имя кластера GKE администратора организации.

    3. Создайте виртуальную среду Python:
      python3 -m venv venv /
      source venv/bin/activate
    4. Запустите скрипт развертывания для создания узла репозитория:
      python apigee/solution_deploy.py gdc-air-gapped

    Настроить доступ к узлу репозитория

    Чтобы настроить доступ к узлу репозитория:

    1. Настройте SSH для узла репозитория:
      export NODE=repo
      kubectl create -n $PROJECT -f - <<EOF
        apiVersion: virtualmachine.GDC.goog/v1
        kind: VirtualMachineAccessRequest
        metadata:
          generateName: $NODE-
        spec:
          ssh:
            key: |
              "cat SSH_PUBLIC_KEY_FILE"
        ttl: 24h
        user: admin
        vm: $NODE
        EOF

      Где SSH_PUBLIC_KEY_FILE — имя файла, содержащего ваш открытый ключ SSH.

    2. Получите внешний IP-адрес для узла репозитория:
      kubectl get virtualmachineexternalaccess -n $PROJECT $NODE -ojsonpath='{.status.ingressIP}'
    3. Получите внутренний IP-адрес для узла репозитория:
      kubectl get virtualmachines.virtualmachine.gdc.goog -n $PROJECT $NODE -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}'

    Загрузить установочные файлы

    На этом этапе оператор GDC загружает последнюю версию следующих файлов на узел репозитория:

    • apigee-4.53.01
    • apigee-nginx.tar
    • postgresql14.tar
    • fluentbit.tar
    • ansible-rpms.tar
    • apigee-repos.tar

    Чтобы загрузить установочные файлы:

    1. Скопируйте файл закрытого ключа SSH на узел репозитория:
      scp -i SSH_PRIVATE_KEY_FILE ~/apigee-files/* admin@REPO_EXTERNAL_IP:/tmp

      Где:

      • SSH_PRIVATE_KEY_FILE — имя файла, содержащего ваш закрытый ключ SSH.
      • REPO_EXTERNAL_IP — внешний IP-адрес узла репозитория, полученный на предыдущем шаге.
    2. Загрузите папку, содержащую конфигурации Fluent Bit, в узел репозитория:
      scp -i SSH-PRIVATE-KEY-FILE -r apigee/scripts/fluent-bit admin@REPO_EXTERNAL_IP:/tmp/fluent-bit

      Где:

      • SSH_PRIVATE_KEY_FILE — имя файла, содержащего ваш закрытый ключ SSH.
      • REPO_EXTERNAL_IP — внешний IP-адрес узла репозитория.

    Настройте зеркальный репозиторий

    Чтобы настроить зеркальный репозиторий:

    1. Скопируйте apigee/scripts/repo_setup.sh в узел репозитория.
    2. В скрипте замените REPO_USER и REPO_PASSWORD на желаемое имя пользователя и пароль для зеркального репозитория.
    3. Запустите скрипт:
      chmod a+x repo_setup.sh
      ./repo_setup.sh

      Если вы столкнулись с ошибкой No such file or directory , перезапустите скрипт.

    4. Проверьте подключение к зеркальному репозиторию локально с узла репозитория.
      curl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh
      curl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/apigee/release/VERSION/repodata/repomd.xml

      Замените VERSION на версию Apigee Edge for Private Cloud, которую вы хотите установить.

    Развертывание узлов Apigee

    На этом этапе оператор GDC развертывает узлы управления API Apigee.

    Создать узлы Apigee

    Чтобы создать узлы управления API Apigee:

    1. Замените REPO_INTERNAL_IP , REPO_USER_NAME и REPO_PASSWORD в apigee/helm/scripts/apigee_setup.sh на требуемые значения.
    2. Экспортируйте значения как переменные среды:
      export REPO_IP=REPO_INTERNAL_IP
      export REPO_USER=REPO_USER_NAME
      export REPO_PASSWORD=REPO_PASSWORD
    3. Включите apigee_node в apigee/helm/values-cookie-air-gapped.yaml как показано::
      apigee_node:
        enabled: true
      
    4. Запустите скрипт развертывания для создания узлов Apigee:
        source venv/bin/activate
        python apigee/solution_deploy.py gdc-air-gapped

    Настройте доступ к узлу Apigee

    Настройте доступ к узлам управления API Apigee:

    1. Выполните аутентификацию с помощью кластера администратора организации:
      gdcloud clusters get-credentials ORG_ADMIN_CLUSTER

      Где ORG_ADMIN_CLUSTER — имя кластера GKE администратора организации.

    2. Создайте SSH-ключ для каждого узла:
      for i in 1 2 3 4 5; do
        kubectl create -n $PROJECT -f - <<EOF
        apiVersion: virtualmachine.GDC.goog/v1
        kind: VirtualMachineAccessRequest
        metadata:
          generateName: node$i
        spec:
          ssh:
            key: |
              "cat SSH_PUBLIC_KEY_FILE"
        ttl: 24h
        user: admin
        vm: node$i
        EOF
        done

      Где SSH_PUBLIC_KEY_FILE — имя файла, содержащего ваш открытый ключ SSH.

    3. Получите внешние IP-адреса для узлов Apigee:
      for i in 1 2 3 4 5; do
        kubectl get virtualmachineexternalaccess -n $PROJECT node$i -ojsonpath='{.status.ingressIP}'
        echo
        done
    4. Получите внутренние IP-адреса для узлов Apigee:
      for i in 1 2 3 4 5; do
        kubectl get virtualmachines.virtualmachine.gdc.goog -n $PROJECT node$i -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}'
        echo
        done
    5. (Необязательно) Проверьте, успешно ли выполняются скрипты запуска на узлах Apigee:
      1. Подключитесь к узлу по SSH и выполните следующую команду:
        sudo journalctl -u cloud-final -f
      2. Ищите журналы, похожие на следующие:
        Aug 29 18:17:00 172.20.128.117 cloud-init[1895]: Complete!
        Aug 29 18:17:00 172.20.128.117 cloud-init[1895]: Finished running the command: . /var/lib/google/startup-scripts/apigee-setup

    Настройте узел управления

    На этом этапе оператор GDC настраивает узел управления для управления установками Apigee.

    Создать узел управления

    Чтобы создать узел управления:

    1. Замените REPO_INTERNAL_IP , REPO_USER_NAME и REPO_PASSWORD в apigee/helm/scripts/control_setup.sh на требуемые значения.
    2. Включите control_node в apigee/helm/values-cookie-air-gapped.yaml как показано:
      control_node:
        enabled: true
      
    3. Запустите скрипт развертывания для создания узла управления:
      source venv/bin/activate
      python apigee/solution_deploy.py gdc-air-gapped

    Настроить доступ к узлу управления

    Чтобы настроить доступ к узлу управления:

    1. Настройте SSH-доступ к узлу управления:
      kubectl create -n $PROJECT -f - <<EOF
      apiVersion: virtualmachine.GDC.goog/v1
      kind: VirtualMachineAccessRequest
      metadata:
        generateName: control-
      spec:
        ssh:
          key: |
            "cat SSH_PUBLIC_KEY_FILE"
      ttl: 24h
      user: admin
      vm: control
      EOF
    2. Получите внешний IP-адрес для узла управления:
      kubectl get virtualmachineexternalaccess -n $PROJECT control -ojsonpath='{.status.ingressIP}'
    3. Получите внутренний IP-адрес для узла управления:
      kubectl get virtualmachines.virtualmachine.GDC.goog -n $PROJECT control -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}'

    Настроить Ansible

    На этом этапе оператор GDC настраивает среда на узле управления.

    Чтобы настроить среду Ansible:

    1. Подключитесь по SSH к управляющему узлу и настройте среду Ansible:
      cd /home/admin
      cp -r /tmp/apigee-repos .
      cd apigee-repos/ansible-opdk-accelerator/setup
    2. Заменить удаленные репозитории git локальным файлом:
      sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g'  requirements.yml
      sed -i 's/\.git$//g'  requirements.yml
      
    3. Install Ansible requirements:
        sudo chown -R admin /home/admin/apigee-repos
        ansible-galaxy install -r requirements.yml -f
    4. Обновите конфигурацию установки:
      1. Отредактируйте файл main.yml :
        vi ~/apigee-repos/ansible-opdk-accelerator/setup/roles/apigee-opdk-setup-ansible-controller/tasks/main.yml
      2. Удалите задачи, которым нужен доступ к GitHub:
        • Проверка конфигурационных репозиториев через Git SSH
        • Проверка конфигурационных репозиториев через Git HTTPS
      3. Запустите установочную версию:
        cd ~/apigee-repos/ansible-opdk-accelerator/setup
        ansible-playbook setup.yml
    5. Загрузите SSH-ключ для узлов Apigee на управляющий узел:
      scp -i CONTROL_SSH_PRIVATE_KEY_FILE APIGEE_NODE_SSH_PRIVATE_KEY_FILE admin@CONTROL_EXTERNAL_IP:/home/admin/.ssh/id_rsa

      Где:

      • CONTROL_SSH_PRIVATE_KEY_FILE — имя файла, содержащего закрытый ключ SSH вашего узла управления.
      • APIGEE_NODE_SSH_PRIVATE_KEY_FILE — имя файла, содержащего закрытый ключ SSH вашего узла Apigee.
      • CONTROL_EXTERNAL_IP — внешний IP-адрес узла управления.
    6. Создайте файл конфигурации инвентаря Ansible:
      1. Скопируйте содержимое файла apigee/scripts/ansible/prod.cfg в файл prod.cfg :
        vi ~/.ansible/multi-planet-configurations/prod.cfg
      2. Создайте папку edge-dc1 и скопируйте содержимое файла apigee/scripts/ansible/edge-dc1 в файл edge-dc1 :
        mkdir ~/.ansible/inventory/prod
        vi ~/.ansible/inventory/prod/edge-dc1
    7. Обновите внутренние IP-адреса узлов Apigee в edge-dc1 :
      apigee_000 ansible_host=APIGEE_NODE1_INTERNAL_IP
      apigee_001 ansible_host=APIGEE_NODE2_INTERNAL_IP
      apigee_002 ansible_host=APIGEE_NODE3_INTERNAL_IP
      apigee_003 ansible_host=APIGEE_NODE4_INTERNAL_IP
      apigee_004 ansible_host=APIGEE_NODE5_INTERNAL_IP

      Где значения APIGEE_NODE*_INTERNAL_IP — это внутренние IP-адреса узлов Apigee, полученные на предыдущем этапе.

    8. Настройте файл ~/.apigee-secure/credentials.yml используя следующие значения:
      • apigee_repo_user: ' APIGEE_REPO_USER '
      • apigee_repo_password: ' APIGEE_REPO_PASSWORD '
      • opdk_qpid_mgmt_username: ' OPDK_QPID_MGMT_USERNAME '
      • opdk_qpid_mgmt_password: ' OPDK_QPID_MGMT_PASSWORD '

      Где:

      • APIGEE_REPO_USER — имя пользователя для репозитория Apigee.
      • APIGEE_REPO_PASSWORD — пароль для репозитория Apigee.
      • OPDK_QPID_MGMT_USERNAME — имя пользователя для сервера управления Apigee QPID.
      • OPDK_QPID_MGMT_PASSWORD — пароль для сервера управления Apigee QPID.

    9. Добавьте файл лицензии с действительным файлом лицензии Apigee Edge for Private Cloud. Имя файла должно быть license.txt .
    10. Скопируйте содержимое файла ~/.apigee-secure/license.txt в только что созданный вами файл license.txt .
    11. Настройте следующие значения в файле ~/.apigee/custom-properties.yml :
      • opdk_version: ' OPDK_VERSION '
      • apigee_repo_url: ' APIGEE_REPO_URL '

      Где:

      • OPDK_VERSION — версия Apigee Edge для частного облака, которую вы хотите установить.
      • APIGEE_REPO_URL — URL-адрес репозитория Apigee.

    12. Экспортируйте файл конфигурации как переменную среды:
      export ANSIBLE_CONFIG=~/.ansible/multi-planet-configurations/prod.cfg

    Установка компонентов Apigee

    На этом этапе оператор GDC устанавливает компоненты Apigee с помощью Ansible.

    Чтобы установить компоненты Apigee:

    1. Замените удаленные репозитории git локальными файлами:
      cd ~/apigee-repos/ansible-opdk-accelerator/installations/multi-node/
      sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.yml
      sed -i 's/\.git$//g'  requirements.yml
    2. Установите требования Ansible:
      ansible-galaxy install -r requirements.yml -f
    3. Исправление ролей Ansible:
      sed -i 's/private_address/inventory_hostname/g' ~/.ansible/roles/apigee-opdk-settings-cassandra/tasks/main.yml
      sed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-server-self/tasks/main.yml
      sed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/tasks/main.yml
      cat << EOF >> ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/templates/response-file-template.conf.j2
      QPID_MGMT_USERNAME= opdk_qpid_mgmt_username
      QPID_MGMT_PASSWORD= opdk_qpid_mgmt_password
      EOF
      sed -i 's/mode: 0700/mode: 0700\n      recurse: yes/g' ~/.ansible/roles/apigee-opdk-setup-postgres-config/tasks/main.yml
    4. Замените содержимое файла install.yml содержимым в apigee/scripts/ansible/install.yml .
    5. Запустите плейбук для установки компонентов Apigee:
      ansible-playbook install.yml
    6. Отключите ссылку для сброса пароля пользователя в интерфейсе Edge . Apigee на сервере GDC с воздушным зазором не имеет SMTP-сервера. Следуйте инструкциям в разделе «Отключение ссылки для сброса пароля в интерфейсе Edge» .

    Развертывание модулей и служб

    На этом этапе вы развернете загрузчик, обратный прокси-сервер, балансировщик нагрузки, а также модули и службы ведения журналов.

    Чтобы развернуть модули и службы:

    1. Следуйте инструкциям в разделе Создание экземпляров реестра Harbor , чтобы создать экземпляр Harbor в проекте GDC dev-apigee .
    2. Следуйте инструкциям в разделе Создание проектов Harbor , чтобы создать проект Harbor с именем apigee .
    3. Следуйте инструкциям в разделе Настройка контроля доступа , чтобы настроить контроль доступа для проекта Harbor.
    4. Следуйте инструкциям в разделе Вход в Docker и Helm, чтобы настроить аутентификацию Docker.
    5. Обновите IP-адреса в файле apigee/apigee_user_cluster.toml как показано:
      mgmt-server-proxy = "APIGEE_NODE1_EXTERNAL_IP"
      router-proxy1 = "APIGEE_NODE2_EXTERNAL_IP"
      router-proxy2 = "APIGEE_NODE3_EXTERNAL_IP"
      

      Где:

      • APIGEE_NODE1_EXTERNAL_IP — внешний IP-адрес узла Apigee node1, полученный на предыдущем этапе.
      • APIGEE_NODE2_EXTERNAL_IP — внешний IP-адрес узла Apigee node2, полученный на предыдущем этапе.
      • APIGEE_NODE3_EXTERNAL_IP — внешний IP-адрес узла Apigee node3, полученный на предыдущем этапе.

    6. Поместите файл сертификата SSL ( server.crt ) и файл ключа ( server.key ) для настройки HTTPS в папки apigee/mgmt-server-proxy и apigee/router-proxy .

      Для создания самоподписанных сертификатов используйте следующую команду:

      openssl req -newkey rsa:4096 -x509 -nodes -keyout server.key -new -out server.crt -subj "/CN=*.apigeetest.com" -sha256 -days 365
    7. Обновите значение SSH-PASSWORD для пользователя root в контейнере загрузчика в файле apigee/uploader/Dockerfile :
      RUN echo 'root:SSH_PASSWORD' | chpasswd
    8. Получите учетные данные для кластера пользователей:
      gdcloud clusters get-credentials USER_CLUSTER

      Где USER_CLUSTER — имя пользовательского кластера GKE.

    9. Запустите скрипт развертывания для развертывания модулей и служб:
      source venv/bin/activate
      python apigee/solution_deploy_user_cluster.py gdc-air-gapped
    10. Получите внешние IP-адреса сервисов:
      kubectl get svc -n $PROJECT_ID

    Обновление IP-адресов загрузчика и пересылки Fluent Bit

    На этом этапе вы обновите IP-адреса загрузчика и сервера пересылки Fluent Bit в скриптах резервного копирования и настройки Apigee.

    1. Обновите SSH_PASSWORD , root и UPLOADER_EXTERNAL_IP в apigee/helm/scripts/backup_setup.sh :
      sshpass -p SSH_PASSWORD scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null apigee-backup* root@UPLOADER_EXTERNAL_IP:/temp/

      Где:

      • SSH_PASSWORD — пароль для пользователя root.
      • UPLOADER_EXTERNAL_IP — внешний IP-адрес службы загрузчика, полученный на предыдущем этапе.

    2. Обновите FLUENTBIT_EXTERNAL_IP в apigee/helm/scripts/apigee_setup.sh :
      export FLUENTBIT_EXTERNAL_IP=FLUENTBIT_EXTERNAL_IP

    Обновление скрипта запуска требует перезапуска узлов Apigee. Чтобы перезапустить узлы:

    1. Остановите виртуальные машины:
      gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
      export PROJECT=dev-apigee
      for i in 1 2 3 4 5; do
        gdcloud compute instances stop node$i --project $PROJECT
        done
    2. Повторно разверните диаграмму Helm:
      python apigee/solution_deploy.py gdc-air-gapped
    3. Запустите виртуальные машины:
      for i in 1 2 3 4 5; do
        GDCloud compute instances start node$i --project $PROJECT
        done

    На борту организации Apigee

    На этом этапе оператор GDC подключается к организации Apigee, запуская сценарий настройки на узле node1 .

    Чтобы присоединиться к организации Apigee:

    1. Обновите следующие значения в apigee/scripts/apigee_org_setup.sh как показано. При необходимости обновите остальные параметры.
      IP1=APIGEE_NODE1_INTERNAL_IP
      
      VHOST_ALIAS="APIGEE_NODE2_EXTERNAL_IP:9001 APIGEE_NODE3_EXTERNAL_IP:9001"

      Где:

      • APIGEE_NODE1_INTERNAL_IP — внутренний IP-адрес узла Apigee node1, полученный на предыдущем этапе.
      • APIGEE_NODE2_EXTERNAL_IP — внешний IP-адрес узла Apigee node2, полученный на предыдущем этапе.
      • APIGEE_NODE3_EXTERNAL_IP — внешний IP-адрес узла Apigee node3, полученный на предыдущем этапе.

    2. Запустите скрипт на узле node1 для подключения организации:
      chmod a+x apigee_org_setup.sh
      ./apigee_org_setup.sh

    Тестовое HTTP-подключение

    На этом этапе вы протестируете HTTP-подключение для API управления и прокси-сервера API.

    Чтобы проверить HTTP-соединение:

    1. Получите внешний IP-адрес службы apigee-elb :
      gdcloud clusters get-credentials USER_CLUSTER
      export PROJECT=dev-apigee
      kubectl get svc apigee-elb -n $PROJECT

      Где USER_CLUSTER — имя пользовательского кластера GKE.

      Эта служба действует как конечная точка для Edge UI, API управления и прокси API.

    Протестируйте API управления

    Чтобы протестировать API управления, отправьте HTTP-запрос на конечную точку:

    curl -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e/ENV_NAME/provisioning/axstatus"

    Где:

    • APIGEE_ELB_EXTERNAL_IP — внешний IP-адрес службы apigee-elb полученный на предыдущем этапе.
    • ORG_NAME — название организации Apigee.
    • ENV_NAME — имя среды Apigee.

    Тестирование API-прокси

    Чтобы протестировать API-прокси:

    1. Войдите в пользовательский интерфейс Edge .
    2. На странице «API-прокси» нажмите «Создать» , чтобы создать новый API-прокси.
    3. На странице сведений о прокси-сервере введите следующие значения:
      • Тип прокси: выберите «Нет цели» .
      • Имя прокси: ok
      • Базовый путь: /ok
      • Цель: http:// APIGEE_ELB_EXTERNAL_IP :9001
    4. Нажмите «Создать» , чтобы создать API-прокси.
    5. Отправьте HTTP-запрос на /ok :
      curl -i http://APIGEE_ELB_EXTERNAL_IP:9001/ok
    6. Подтвердите ответ 200 OK .

    Настройте TLS и протестируйте HTTPS

    На этом этапе оператор GDC настраивает Transport Layer Security (TLS) для прокси-сервера API, Edge UI и API управления.

    Настройте TLS для API-прокси

    1. Следуйте инструкциям в разделе Создание хранилища ключей/доверенного хранилища и псевдонима, чтобы создать самоподписанный сертификат со следующими значениями:
      • KeyStore: myTestKeystore
      • KeyAlias: myKeyAlias
      • Распространенное имя: apigeetest.com
    2. Выполните вызов API для создания виртуального хоста с именем api.apigeetest.com :
      curl -v -H "Content-Type:application/xml" \
        -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e//virtualhosts" \
        -d '<VirtualHost  name="secure">
            <HostAliases>
              <HostAlias>api.apigeetest.com</HostAlias>
            </HostAliases>
            <Interfaces/>
            <Port>9005</Port>
            <OCSPStapling>off</OCSPStapling>
            <SSLInfo>
              <Enabled>true</Enabled>
              <ClientAuthEnabled>false</ClientAuthEnabled>
              <KeyStore>myTestKeystore</KeyStore>
              <KeyAlias>myKeyAlias</KeyAlias>
            </SSLInfo>
          </VirtualHost>'

      Где:

      • APIGEE_ELB_EXTERNAL_IP — внешний IP-адрес службы apigee-elb полученный на предыдущем этапе.
      • ORG_NAME — название организации Apigee.
      • ENV_NAME — имя среды Apigee, в которой должен быть создан виртуальный хост.
    3. Создайте API-прокси, используя защищенный виртуальный хост.
    4. На маршрутизаторах настройте разрешение DNS для виртуальных хостов:
      echo '127.0.0.1 api.apigeetest.com' | sudo tee -a /etc/hosts
    5. Убедитесь, что виртуальные хосты работают локально, отправив HTTPS-запрос на конечную точку:
      curl https://api.apigeetest.com:9005/ok -v -k
    6. Настройте разрешение DNS для конечной точки:
      echo 'APIGEE_ELB_EXTERNAL_IP apigeetest.com' | sudo tee -a /etc/hosts

      Где APIGEE_ELB_EXTERNAL_IP — внешний IP-адрес службы apigee-elb полученный на предыдущем этапе.

    7. Перейдите по адресу https://apigeetest.com/ok в веб-браузере и убедитесь, что он работает.

    Настройте TLS для Edge UI

    Чтобы настроить TLS для Edge UI:

    1. Создайте файл хранилища ключей из файла SSL-сертификата и файла ключа:
      openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out keystore.pkcs12
      keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks
    2. Поместите файл хранилища ключей в папку Apigee на узле node1 :
      scp -i SSH_PRIVATE_KEY_FILE keystore.jks admin@APIGEE_NODE1_EXTERNAL_IP:/home/admin/

      Где:

      • SSH_PRIVATE_KEY_FILE — имя файла, содержащего закрытый ключ SSH вашего узла Apigee.
      • APIGEE_NODE1_EXTERNAL_IP — внешний IP-адрес узла Apigee node1, полученный на предыдущем этапе.

    3. Подключитесь по SSH к узлу node1 и переместите файл хранилища ключей в папку Apigee:
      sudo mv keystore.jks /opt/apigee/customer/application/
    4. Создайте файл конфигурации SSL:
      sudo vi /tmp/sslConfigFile
    5. Обновите значение KEY-PASS-PHRASE , как показано:
      HTTPSPORT=9443
      DISABLE_HTTP=n
      KEY_ALGO=JKS
      KEY_FILE_PATH=/opt/apigee/customer/application/keystore.jks
      KEY_PASS=KEY_PASS_PHRASE
    6. Настройте SSL с помощью файла конфигурации:
      sudo chown apigee:apigee /tmp/sslConfigFile
      /opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f /tmp/sslConfigFile
    7. Настройте разрешение DNS для Edge UI:
      echo 'APIGEE_ELB_EXTERNAL_IP ui.apigeetest.com' | sudo tee -a /etc/hosts

      Где APIGEE_ELB_EXTERNAL_IP — внешний IP-адрес службы apigee-elb полученный на предыдущем этапе.

    8. Откройте https://ui.apigeetest.com:9443 в веб-браузере и убедитесь, что всё работает. Подробнее см. в руководстве.

    Настройте TLS для API управления

    Чтобы настроить TLS для API управления:

    1. Настройте владельца файла хранилища ключей (используйте того же, что и в Edge UI):
      sudo chown apigee:apigee /opt/apigee/customer/application/keystore.jks
    2. Создайте файл свойств:
      sudo vi /opt/apigee/customer/application/management-server.properties
    3. Замените значение KEY_PASS_PHRASE паролем хранилища ключей, как показано:

      conf_webserver_ssl.enabled=true
      # Leave conf_webserver_http.turn.off set to false
      # because many Edge internal calls use HTTP.
      conf_webserver_http.turn.off=false
      conf_webserver_ssl.port=8443
      conf_webserver_keystore.path=/opt/apigee/customer/application/keystore.jks
      # Enter the obfuscated keystore password below.
      conf_webserver_keystore.password=KEY_PASS_PHRASE
    4. Перезагрузите сервер управления, чтобы изменения вступили в силу:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    5. Убедитесь, что HTTPS работает локально:
      curl -u "opdk@apigee.com:Apigee123!" "https://localhost:8443/v1/users" -k
    6. С клиентского компьютера откройте в браузере страницу https://apigeetest.com:8443/v1/users . Введите имя пользователя и пароль администратора, чтобы убедиться, что учётные данные настроены правильно.

    Что дальше?