Как установить Apigee в изолированной среде Google Distributed Cloud

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

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

Обзор необходимых действий

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

Подготовка

Прежде чем начать установку, выполните следующие действия:

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

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

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

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

Тип ВМ ОЗУ Ядра ВЦП Место на диске
Узел репозитория 8 ГБ 2 ядра ВЦП 64 ГБ
Управляющий узел 8 ГБ 2 ядра ВЦП 64 ГБ
Узлы управления API Apigee 1, 2 и 3 16 ГБ ОЗУ 8 ядер ВЦП. 670 ГБ
Узлы управления API Apigee 4 и 5 16 ГБ ОЗУ 8 ядер ВЦП. 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-сервера Edge…
    • Apigee в изолированной среде GDC не реализует обнаружение и предотвращение вторжений. Установите и настройте систему предотвращения вторжений (СПВ), например Snort, чтобы обнаруживать и предотвращать вредоносные действия.

    Как получить необходимые файлы

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

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

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

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

    • Операционная система: Rocky Linux 8
    • Размер машины: 8 ГБ ОЗУ, 2 ядра ВЦП, 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 для частного облака, которую вы хотите установить на GDC, например 4.53.01.
    3. Скачайте последнюю версию файла Apigee Edge для частного облака bootstrap_VERSION.sh в /tmp/bootstrap_VERSION.sh:
      curl https://software.apigee.com/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh

      где VERSION – последняя версия Apigee Edge для частного облака, которую вы хотите установить на 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 для частного облака, которую вы хотите установить на 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 для частного облака.
    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 для Private Cloud.

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

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

    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 для частного облака, которую хотите установить.

    Как развернуть узлы 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 для частного облака. Файл должен называться 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. Запустите playbook, чтобы установить компоненты 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, следуйте инструкциям в разделе Войдите в Docker и Helm.
    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 2, полученный на предыдущем шаге.
      • APIGEE_NODE3_EXTERNAL_IP – внешний IP-адрес узла Apigee 3, полученный на предыдущем шаге.

    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 1, полученный на предыдущем шаге.
      • APIGEE_NODE2_EXTERNAL_IP – внешний IP-адрес узла Apigee 2, полученный на предыдущем шаге.
      • APIGEE_NODE3_EXTERNAL_IP – внешний IP-адрес узла Apigee 3, полученный на предыдущем шаге.

    2. Запустите скрипт на node1, чтобы зарегистрировать организацию:
      chmod a+x apigee_org_setup.sh
      ./apigee_org_setup.sh

    Как проверить подключение по протоколу HTTP

    На этом шаге вы проверите подключение по протоколу HTTP для Management 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, Management API и прокси-сервера API.

    Как протестировать Management API

    Чтобы протестировать Management 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 Proxies (Прокси API) нажмите Create (Создать), чтобы создать новый прокси-сервер 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 настраивает протокол TLS для прокси-сервера API, интерфейса Edge и Management 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

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

    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. Подключитесь к node1 по протоколу SSH и переместите файл хранилища ключей в папку 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:
      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 для Management API

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

    1. Настройте владельца файла хранилища ключей (используйте того же, что и в интерфейсе Edge):
      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. Введите имя пользователя и пароль администратора, чтобы подтвердить правильность настроек учетных данных.

    Дальнейшие действия