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

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

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

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

Для установки и развертывания Apigee Edge for Private Cloud в изолированной от сети среде GDC оператору необходимо выполнить следующие шаги:

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

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

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

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

Для установки Apigee Edge for Private Cloud на GDC требуется несколько виртуальных машин (ВМ) с определенным распределением ресурсов. За использование этих ВМ взимается плата в зависимости от их вычислительных ресурсов (ОЗУ, ядра 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 for Private Cloud в изолированной среде GDC требуются следующие роли и разрешения:

  • Администратор платформы (PA): Назначьте роль IAM Admin .
  • Оператор приложения (АО): Назначьте следующие роли:
    • 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 с воздушным зазором действуют следующие ограничения:

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

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

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

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

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

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

    • Операционная система: Rocky Linux 8
    • Характеристики системы: 8 ГБ ОЗУ; 2 виртуальных ядра ЦП; 64 ГБ локального дискового пространства.
    • Подключение:
      • Входящий трафик: TCP 22 (SSH)
      • Выход: Интернет

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

    Скачать установочные файлы

    Чтобы скачать установочные файлы:

    1. Чтобы узнать о последней официальной версии, поддерживаемой для GDC, ознакомьтесь с примечаниями к выпуску Apigee Edge for Private Cloud , указанными в столбце Edge for Private Cloud.
    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 for Private Cloud.

    Создайте хранилище (сумку для хранения).

    Чтобы создать хранилище данных в проекте 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 for 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 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 for Private Cloud, которую вы хотите установить.
      • 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. Следуйте инструкциям в разделе «Настройка контроля доступа» , чтобы настроить контроль доступа для проекта «Гавань».
    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, запуская скрипт настройки на узле 1 .

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

    Для настройки TLS для 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 в браузере. Введите имя пользователя и пароль администратора, чтобы подтвердить правильность настройки учетных данных.

    Что дальше?