В этом руководстве описывается установка и развертывание Apigee Edge для частного облака и прокси-серверов API в изолированной среде Google Distributed Cloud (GDC). Для изолированных решений GDC , включая Apigee Edge для частного облака, не требуется подключение к Google Cloud для управления инфраструктурой и сервисами. Вы можете использовать локальную плоскость управления, размещенную на вашей площадке, для всех операций. Обзор изолированной среды GDC см. в разделе «Обзор» .
Это руководство предназначено для операторов Apigee, которые знакомы с Apigee Edge для частного облака и имеют базовые знания Kubernetes.
Обзор необходимых шагов
Чтобы установить и развернуть Apigee Edge для частного облака в изолированной среде GDC, оператору необходимо выполнить следующие действия:
- Получите установочные файлы Apigee Edge для частного облака.
- Подготовьте хранилище.
- Настройте узел репозитория.
- Развертывание узлов Apigee.
- Настройте узел управления.
- Настройте Ansible.
- Установите компоненты Apigee.
- Развертывание модулей и служб.
- Обновите IP-адреса загрузчика и сервера пересылки Fluent Bit.
- На борту организации Apigee.
- Проверьте HTTP-соединение.
- Настройте TLS и протестируйте HTTPS.
Прежде чем начать
Перед началом процесса установки обязательно выполните следующие шаги:
- Создайте проект GDC для установки, если у вас его ещё нет. Подробнее см. в разделе Создание проекта .
- Загрузите, установите и настройте интерфейс командной строки
gdcloudна рабочей станции, подключенной к GDC, или в среде непрерывного развертывания вашей организации. - Получите учётные данные, необходимые для использования интерфейса командной строки
gdcloudи APIkubectl. Инструкции см. в разделе «Аутентификация учётной записи для доступа ». - Подтвердите имя пользователя и пароль Apigee, которые вы получили от своего менеджера по работе с клиентами Apigee.
- Подтвердите имя кластера администратора 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: управляет всеми ресурсами в пространствах имен проекта.
-
- Apigee на сервере GDC с воздушным зазором не поставляется с DNS-серверами и использует локальное разрешение DNS в качестве обходного пути. Если Apigee на сервере GDC с воздушным зазором развёрнут в среде с внешними DNS-серверами, замените шаги по настройке локального DNS на настройку DNS-записей на DNS-серверах.
- В Apigee на сервере GDC с воздушным зазором нет отдельного SMTP-сервера. Вы можете в любое время настроить SMTP-сервер, чтобы включить отправку исходящих почтовых уведомлений о создании учётных записей и сбросе паролей с сервера управления и из пользовательского интерфейса управления. API управления остаются доступными для управления учётными записями пользователей Apigee. Подробнее см. в разделе «Настройка пограничного SMTP-сервера» .
- Apigee на GDC с воздушным зазором не реализует обнаружение и предотвращение вторжений. Установите и настройте систему предотвращения вторжений (IPS), например Snort , для обнаружения и предотвращения вредоносных действий.
- Операционная система: Rocky Linux 8
- Размер машины: 8 ГБ ОЗУ; 2 ядра vCPU; 64 ГБ локального дискового хранилища
- Связь:
- Входящий трафик: TCP 22 (SSH)
- Выход: Интернет
- Проверьте заметки о выпуске Apigee Edge для частного облака на предмет последней официальной версии релиза, поддерживаемой GDC, как указано в колонке Edge для частного облака.
- Загрузите установочный файл 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 .
- Загрузите последнюю версию файла
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 .
- Установите утилиту 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, которую вы собираетесь установить.
- Запустите скрипт настройки на подключенном узле:
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
-
- Перенесите необходимые файлы с подключенного узла на локальную машину через SSH:
mkdir apigee-filescd apigee-filesfor 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-адрес подключенного узла.
- Выполните аутентификацию с помощью кластера администратора организации:
gdcloud auth login --login-config-cert WEB_TLS_CERTgdcloud clusters get-credentials ORG_ADMIN_CLUSTERГде:
- WEB_TLS_CERT — путь к веб-сертификату TLS.
- ORG_ADMIN_CLUSTER — имя кластера GKE администратора организации.
- Задайте переменные среды проекта и контейнера:
export PROJECT=PROJECTexport BUCKET=BUCKET_NAMEГде:
- PROJECT — название вашего проекта GDC.
- BUCKET_NAME — имя контейнера, который вы хотите создать для хранения файлов резервных копий Apigee Edge for Private Cloud.
- Применяем конфигурацию ковша:
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 дней.
- Создайте учетную запись службы в проекте:
gdcloud iam service-accounts create $BUCKET-sa \ --project=$PROJECT - Создайте роль и привязку ролей для генерации секрета для доступа к контейнеру:
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
- Получите идентификатор ключа доступа и ключ из секрета:
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==
- Создайте секрет, который будет использоваться загрузчиком в кластере пользователя GKE:
- Аутентификация с помощью кластера GKE пользователя:
gdcloud clusters get-credentials USER_CLUSTER
Где USER_CLUSTER — имя пользовательского кластера GKE.
- Примените секретную конфигурацию:
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 — ключ доступа, полученный на предыдущем шаге.
- Аутентификация с помощью кластера GKE пользователя:
- Получите конечную точку хранилища, полное доменное имя (FQDN) и регион контейнера:
- Выполните аутентификацию с помощью кластера администратора организации:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
Где ORG_ADMIN_CLUSTER — имя кластера GKE администратора организации.
- Получите конечную точку хранилища, полное доменное имя (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
- Выполните аутентификацию с помощью кластера администратора организации:
- Обновите следующие значения в файле
apigee/helm_user_cluster/values-cookie-air-gapped.yaml:objectstorekeyname: "apigee-backup-bucket-secret" objectstoreurl: "BUCKET_ENDPOINT" objectstorebucket: "BUCKET_FQDN"
Где:
- BUCKET_ENDPOINT — конечная точка контейнера, полученного на предыдущем шаге.
- BUCKET_FQDN — полное доменное имя контейнера, полученное на предыдущем шаге.
- Обновите
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отключены. Эти узлы будут развернуты на следующем этапе. - Получите учетные данные для кластера администратора организации:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
Где ORG_ADMIN_CLUSTER — имя кластера GKE администратора организации.
- Создайте виртуальную среду Python:
python3 -m venv venv / source venv/bin/activate
- Запустите скрипт развертывания для создания узла репозитория:
python apigee/solution_deploy.py gdc-air-gapped
- Настройте SSH для узла репозитория:
export NODE=repokubectl 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.
- Получите внешний IP-адрес для узла репозитория:
kubectl get virtualmachineexternalaccess -n $PROJECT $NODE -ojsonpath='{.status.ingressIP}' - Получите внутренний IP-адрес для узла репозитория:
kubectl get virtualmachines.virtualmachine.gdc.goog -n $PROJECT $NODE -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}' -
apigee-4.53.01 -
apigee-nginx.tar -
postgresql14.tar -
fluentbit.tar -
ansible-rpms.tar -
apigee-repos.tar - Скопируйте файл закрытого ключа SSH на узел репозитория:
scp -i SSH_PRIVATE_KEY_FILE ~/apigee-files/* admin@REPO_EXTERNAL_IP:/tmp
Где:
- SSH_PRIVATE_KEY_FILE — имя файла, содержащего ваш закрытый ключ SSH.
- REPO_EXTERNAL_IP — внешний IP-адрес узла репозитория, полученный на предыдущем шаге.
- Загрузите папку, содержащую конфигурации 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-адрес узла репозитория.
- Скопируйте
apigee/scripts/repo_setup.shв узел репозитория. - В скрипте замените REPO_USER и REPO_PASSWORD на желаемое имя пользователя и пароль для зеркального репозитория.
- Запустите скрипт:
chmod a+x repo_setup.sh./repo_setup.shЕсли вы столкнулись с ошибкой
No such file or directory, перезапустите скрипт. - Проверьте подключение к зеркальному репозиторию локально с узла репозитория.
curl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.shcurl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/apigee/release/VERSION/repodata/repomd.xmlЗамените VERSION на версию Apigee Edge for Private Cloud, которую вы хотите установить.
- Замените
REPO_INTERNAL_IP,REPO_USER_NAMEиREPO_PASSWORDвapigee/helm/scripts/apigee_setup.shна требуемые значения. - Экспортируйте значения как переменные среды:
export REPO_IP=REPO_INTERNAL_IPexport REPO_USER=REPO_USER_NAMEexport REPO_PASSWORD=REPO_PASSWORD - Включите
apigee_nodeвapigee/helm/values-cookie-air-gapped.yamlкак показано::apigee_node: enabled: true
- Запустите скрипт развертывания для создания узлов Apigee:
source venv/bin/activatepython apigee/solution_deploy.py gdc-air-gapped - Выполните аутентификацию с помощью кластера администратора организации:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
Где ORG_ADMIN_CLUSTER — имя кластера GKE администратора организации.
- Создайте 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.
- Получите внешние IP-адреса для узлов Apigee:
for i in 1 2 3 4 5; do kubectl get virtualmachineexternalaccess -n $PROJECT node$i -ojsonpath='{.status.ingressIP}' echo done - Получите внутренние 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 - (Необязательно) Проверьте, успешно ли выполняются скрипты запуска на узлах Apigee:
- Подключитесь к узлу по SSH и выполните следующую команду:
sudo journalctl -u cloud-final -f
- Ищите журналы, похожие на следующие:
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
- Подключитесь к узлу по SSH и выполните следующую команду:
- Замените
REPO_INTERNAL_IP,REPO_USER_NAMEиREPO_PASSWORDвapigee/helm/scripts/control_setup.shна требуемые значения. - Включите
control_nodeвapigee/helm/values-cookie-air-gapped.yamlкак показано:control_node: enabled: true
- Запустите скрипт развертывания для создания узла управления:
source venv/bin/activatepython apigee/solution_deploy.py gdc-air-gapped - Настройте 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 - Получите внешний IP-адрес для узла управления:
kubectl get virtualmachineexternalaccess -n $PROJECT control -ojsonpath='{.status.ingressIP}' - Получите внутренний IP-адрес для узла управления:
kubectl get virtualmachines.virtualmachine.GDC.goog -n $PROJECT control -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}' - Подключитесь по SSH к управляющему узлу и настройте среду Ansible:
cd /home/admincp -r /tmp/apigee-repos .cd apigee-repos/ansible-opdk-accelerator/setup - Заменить удаленные репозитории git локальным файлом:
sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.ymlsed -i 's/\.git$//g' requirements.yml - Install Ansible requirements:
sudo chown -R admin /home/admin/apigee-reposansible-galaxy install -r requirements.yml -f - Обновите конфигурацию установки:
- Отредактируйте файл
main.yml:vi ~/apigee-repos/ansible-opdk-accelerator/setup/roles/apigee-opdk-setup-ansible-controller/tasks/main.yml
- Удалите задачи, которым нужен доступ к GitHub:
- Проверка конфигурационных репозиториев через Git SSH
- Проверка конфигурационных репозиториев через Git HTTPS
- Запустите установочную версию:
cd ~/apigee-repos/ansible-opdk-accelerator/setupansible-playbook setup.yml
- Отредактируйте файл
- Загрузите 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-адрес узла управления.
- Создайте файл конфигурации инвентаря Ansible:
- Скопируйте содержимое файла
apigee/scripts/ansible/prod.cfgв файлprod.cfg:vi ~/.ansible/multi-planet-configurations/prod.cfg
- Создайте папку
edge-dc1и скопируйте содержимое файлаapigee/scripts/ansible/edge-dc1в файлedge-dc1:mkdir ~/.ansible/inventory/prodvi ~/.ansible/inventory/prod/edge-dc1
- Скопируйте содержимое файла
- Обновите внутренние IP-адреса узлов Apigee в
edge-dc1:apigee_000 ansible_host=APIGEE_NODE1_INTERNAL_IPapigee_001 ansible_host=APIGEE_NODE2_INTERNAL_IPapigee_002 ansible_host=APIGEE_NODE3_INTERNAL_IPapigee_003 ansible_host=APIGEE_NODE4_INTERNAL_IPapigee_004 ansible_host=APIGEE_NODE5_INTERNAL_IPГде значения APIGEE_NODE*_INTERNAL_IP — это внутренние IP-адреса узлов Apigee, полученные на предыдущем этапе.
- Настройте файл
~/.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.
- Добавьте файл лицензии с действительным файлом лицензии Apigee Edge for Private Cloud. Имя файла должно быть
license.txt. - Скопируйте содержимое файла
~/.apigee-secure/license.txtв только что созданный вами файлlicense.txt. - Настройте следующие значения в файле
~/.apigee/custom-properties.yml:- opdk_version: ' OPDK_VERSION '
- apigee_repo_url: ' APIGEE_REPO_URL '
Где:
- OPDK_VERSION — версия Apigee Edge для частного облака, которую вы хотите установить.
- APIGEE_REPO_URL — URL-адрес репозитория Apigee.
- Экспортируйте файл конфигурации как переменную среды:
export ANSIBLE_CONFIG=~/.ansible/multi-planet-configurations/prod.cfg
- Замените удаленные репозитории 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.ymlsed -i 's/\.git$//g' requirements.yml - Установите требования Ansible:
ansible-galaxy install -r requirements.yml -f
- Исправление ролей Ansible:
sed -i 's/private_address/inventory_hostname/g' ~/.ansible/roles/apigee-opdk-settings-cassandra/tasks/main.ymlsed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-server-self/tasks/main.ymlsed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/tasks/main.ymlcat << 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 EOFsed -i 's/mode: 0700/mode: 0700\n recurse: yes/g' ~/.ansible/roles/apigee-opdk-setup-postgres-config/tasks/main.yml - Замените содержимое файла
install.ymlсодержимым вapigee/scripts/ansible/install.yml. - Запустите плейбук для установки компонентов Apigee:
ansible-playbook install.yml
- Отключите ссылку для сброса пароля пользователя в интерфейсе Edge . Apigee на сервере GDC с воздушным зазором не имеет SMTP-сервера. Следуйте инструкциям в разделе «Отключение ссылки для сброса пароля в интерфейсе Edge» .
- Следуйте инструкциям в разделе Создание экземпляров реестра Harbor , чтобы создать экземпляр Harbor в проекте GDC
dev-apigee. - Следуйте инструкциям в разделе Создание проектов Harbor , чтобы создать проект Harbor с именем
apigee. - Следуйте инструкциям в разделе Настройка контроля доступа , чтобы настроить контроль доступа для проекта Harbor.
- Следуйте инструкциям в разделе Вход в Docker и Helm, чтобы настроить аутентификацию Docker.
- Обновите 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, полученный на предыдущем этапе.
- Поместите файл сертификата 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
- Обновите значение
SSH-PASSWORDдля пользователя root в контейнере загрузчика в файлеapigee/uploader/Dockerfile:RUN echo 'root:SSH_PASSWORD' | chpasswd
- Получите учетные данные для кластера пользователей:
gdcloud clusters get-credentials USER_CLUSTER
Где USER_CLUSTER — имя пользовательского кластера GKE.
- Запустите скрипт развертывания для развертывания модулей и служб:
source venv/bin/activatepython apigee/solution_deploy_user_cluster.py gdc-air-gapped - Получите внешние IP-адреса сервисов:
kubectl get svc -n $PROJECT_ID
- Обновите
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-адрес службы загрузчика, полученный на предыдущем этапе.
- Обновите
FLUENTBIT_EXTERNAL_IPвapigee/helm/scripts/apigee_setup.sh:export FLUENTBIT_EXTERNAL_IP=FLUENTBIT_EXTERNAL_IP
- Остановите виртуальные машины:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTERexport PROJECT=dev-apigeefor i in 1 2 3 4 5; do gdcloud compute instances stop node$i --project $PROJECT done - Повторно разверните диаграмму Helm:
python apigee/solution_deploy.py gdc-air-gapped
- Запустите виртуальные машины:
for i in 1 2 3 4 5; do GDCloud compute instances start node$i --project $PROJECT done
- Обновите следующие значения в
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, полученный на предыдущем этапе.
- Запустите скрипт на узле node1 для подключения организации:
chmod a+x apigee_org_setup.sh./apigee_org_setup.sh - Получите внешний IP-адрес службы
apigee-elb:gdcloud clusters get-credentials USER_CLUSTERexport PROJECT=dev-apigeekubectl get svc apigee-elb -n $PROJECTГде USER_CLUSTER — имя пользовательского кластера GKE.
Эта служба действует как конечная точка для Edge UI, API управления и прокси API.
- APIGEE_ELB_EXTERNAL_IP — внешний IP-адрес службы
apigee-elbполученный на предыдущем этапе. - ORG_NAME — название организации Apigee.
- ENV_NAME — имя среды Apigee.
- Войдите в пользовательский интерфейс Edge .
- На странице «API-прокси» нажмите «Создать» , чтобы создать новый API-прокси.
- На странице сведений о прокси-сервере введите следующие значения:
- Тип прокси: выберите «Нет цели» .
- Имя прокси:
ok - Базовый путь:
/ok - Цель:
http:// APIGEE_ELB_EXTERNAL_IP :9001
- Нажмите «Создать» , чтобы создать API-прокси.
- Отправьте HTTP-запрос на
/ok:curl -i http://APIGEE_ELB_EXTERNAL_IP:9001/ok
- Подтвердите ответ
200 OK. - Следуйте инструкциям в разделе Создание хранилища ключей/доверенного хранилища и псевдонима, чтобы создать самоподписанный сертификат со следующими значениями:
- KeyStore: myTestKeystore
- KeyAlias: myKeyAlias
- Распространенное имя: apigeetest.com
- Выполните вызов 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, в которой должен быть создан виртуальный хост.
- APIGEE_ELB_EXTERNAL_IP — внешний IP-адрес службы
- Создайте API-прокси, используя защищенный виртуальный хост.
- На маршрутизаторах настройте разрешение DNS для виртуальных хостов:
echo '127.0.0.1 api.apigeetest.com' | sudo tee -a /etc/hosts
- Убедитесь, что виртуальные хосты работают локально, отправив HTTPS-запрос на конечную точку:
curl https://api.apigeetest.com:9005/ok -v -k
- Настройте разрешение DNS для конечной точки:
echo 'APIGEE_ELB_EXTERNAL_IP apigeetest.com' | sudo tee -a /etc/hosts
Где APIGEE_ELB_EXTERNAL_IP — внешний IP-адрес службы
apigee-elbполученный на предыдущем этапе. - Перейдите по адресу
https://apigeetest.com/okв веб-браузере и убедитесь, что он работает. - Создайте файл хранилища ключей из файла SSL-сертификата и файла ключа:
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out keystore.pkcs12keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks - Поместите файл хранилища ключей в папку 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, полученный на предыдущем этапе.
- Подключитесь по SSH к узлу node1 и переместите файл хранилища ключей в папку Apigee:
sudo mv keystore.jks /opt/apigee/customer/application/
- Создайте файл конфигурации SSL:
sudo vi /tmp/sslConfigFile
- Обновите значение
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
- Настройте SSL с помощью файла конфигурации:
sudo chown apigee:apigee /tmp/sslConfigFile/opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f /tmp/sslConfigFile - Настройте разрешение DNS для Edge UI:
echo 'APIGEE_ELB_EXTERNAL_IP ui.apigeetest.com' | sudo tee -a /etc/hosts
Где APIGEE_ELB_EXTERNAL_IP — внешний IP-адрес службы
apigee-elbполученный на предыдущем этапе. - Откройте
https://ui.apigeetest.com:9443в веб-браузере и убедитесь, что всё работает. Подробнее см. в руководстве. - Настройте владельца файла хранилища ключей (используйте того же, что и в Edge UI):
sudo chown apigee:apigee /opt/apigee/customer/application/keystore.jks
- Создайте файл свойств:
sudo vi /opt/apigee/customer/application/management-server.properties
- Перезагрузите сервер управления, чтобы изменения вступили в силу:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Убедитесь, что HTTPS работает локально:
curl -u "opdk@apigee.com:Apigee123!" "https://localhost:8443/v1/users" -k
- С клиентского компьютера откройте в браузере страницу https://apigeetest.com:8443/v1/users . Введите имя пользователя и пароль администратора, чтобы убедиться, что учётные данные настроены правильно.
Дополнительную информацию о предоставлении изолированных ролей и разрешений GDC см. в разделе Предоставление и отзыв доступа .
Ограничения
К Apigee на GDC с воздушным зазором применяются следующие ограничения:
Получите необходимые файлы
Чтобы получить установочные файлы, необходимо сначала настроить подключенный узел, а затем загрузить файлы.
Настройте подключенный узел
Подключённый узел — это отдельная виртуальная машина вне GDC, которую вы используете для загрузки установочных файлов. Эта виртуальная машина требует доступа к интернету и используется только для процесса установки.
Подключенный узел требует следующую емкость и конфигурацию:
Чтобы создать подключенный узел, следуйте инструкциям в разделе Создание и запуск экземпляра виртуальной машины . После создания виртуальной машины следуйте инструкциям в разделе Подключение к виртуальным машинам Linux , чтобы подключиться к ней. Список поддерживаемых операционных систем см. в разделе Поддерживаемые GDC операционные системы.
Загрузить установочные файлы
Чтобы загрузить установочные файлы:
Настройте хранилище
На этом этапе оператор GDC настраивает контейнер хранилища в проекте GDC для хранения файлов резервных копий Apigee Edge для частного облака.
Создайте контейнер для хранения
Чтобы создать контейнер хранилища в проекте GDC:
Настроить доступ к ведру
Чтобы настроить доступ к контейнеру хранилища:
Настройте узел репозитория
На этом этапе оператор GDC настраивает узел репозитория для размещения зеркального репозитория Apigee Edge для частного облака.
Создать узел репозитория
Чтобы создать узел репозитория:
Настроить доступ к узлу репозитория
Чтобы настроить доступ к узлу репозитория:
Загрузить установочные файлы
На этом этапе оператор GDC загружает последнюю версию следующих файлов на узел репозитория:
Чтобы загрузить установочные файлы:
Настройте зеркальный репозиторий
Чтобы настроить зеркальный репозиторий:
Развертывание узлов Apigee
На этом этапе оператор GDC развертывает узлы управления API Apigee.
Создать узлы Apigee
Чтобы создать узлы управления API Apigee:
Настройте доступ к узлу Apigee
Настройте доступ к узлам управления API Apigee:
Настройте узел управления
На этом этапе оператор GDC настраивает узел управления для управления установками Apigee.
Создать узел управления
Чтобы создать узел управления:
Настроить доступ к узлу управления
Чтобы настроить доступ к узлу управления:
Настроить Ansible
На этом этапе оператор GDC настраивает среда на узле управления.
Чтобы настроить среду Ansible:
Установка компонентов Apigee
На этом этапе оператор GDC устанавливает компоненты Apigee с помощью Ansible.
Чтобы установить компоненты Apigee:
Развертывание модулей и служб
На этом этапе вы развернете загрузчик, обратный прокси-сервер, балансировщик нагрузки, а также модули и службы ведения журналов.
Чтобы развернуть модули и службы:
Обновление IP-адресов загрузчика и пересылки Fluent Bit
На этом этапе вы обновите IP-адреса загрузчика и сервера пересылки Fluent Bit в скриптах резервного копирования и настройки Apigee.
Обновление скрипта запуска требует перезапуска узлов Apigee. Чтобы перезапустить узлы:
На борту организации Apigee
На этом этапе оператор GDC подключается к организации Apigee, запуская сценарий настройки на узле node1 .
Чтобы присоединиться к организации Apigee:
Тестовое HTTP-подключение
На этом этапе вы протестируете HTTP-подключение для API управления и прокси-сервера API.
Чтобы проверить HTTP-соединение:
Протестируйте API управления
Чтобы протестировать API управления, отправьте HTTP-запрос на конечную точку:
curl -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e/ENV_NAME/provisioning/axstatus"
Где:
Тестирование API-прокси
Чтобы протестировать API-прокси:
Настройте TLS и протестируйте HTTPS
На этом этапе оператор GDC настраивает Transport Layer Security (TLS) для прокси-сервера API, Edge UI и API управления.
Настройте TLS для API-прокси
Настройте TLS для Edge UI
Чтобы настроить TLS для Edge UI:
Настройте TLS для API управления
Чтобы настроить TLS для API управления:
Замените значение 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