В этом руководстве описывается, как установить и развернуть 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 оператору необходимо выполнить следующие шаги:
- Получите установочные файлы Apigee Edge для частного облака.
- Установите емкость для хранения.
- Настройте узел репозитория.
- Разверните узлы Apigee.
- Настройте управляющий узел.
- Настройте Ansible.
- Установите компоненты Apigee.
- Разверните модули и сервисы.
- Обновите IP-адреса загрузчика и переадресатора Fluent Bit.
- Присоединяйтесь к организации Apigee.
- Проверьте HTTP-соединение.
- Настройте TLS и протестируйте HTTPS.
Прежде чем начать
Перед началом установки обязательно выполните следующие шаги:
- Если у вас его еще нет, создайте проект GDC для установки. Дополнительную информацию см. в разделе «Создание проекта» .
- Загрузите, установите и настройте интерфейс командной строки
gdcloudна рабочей станции, подключенной к GDC, или в среде непрерывного развертывания вашей организации. - Получите учетные данные, необходимые для использования CLI
gdcloudи APIkubectl. Подробные инструкции см. в разделе «Аутентификация учетной записи для доступа» . - Подтвердите имя пользователя и пароль Apigee, полученные от вашего менеджера по работе с клиентами Apigee.
- Подтвердите имя вашего кластера администраторов 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 не поставляется с DNS-серверами и использует локальное разрешение DNS в качестве обходного пути. Если Apigee в среде, изолированной от GDC, развернут в среде с внешними DNS-серверами, замените шаги по настройке локального DNS на настройку записей DNS на самих DNS-серверах.
- В конфигурации Apigee на GDC с изолированной сетью отсутствует автономный SMTP-сервер. Вы можете в любое время настроить SMTP-сервер, чтобы включить исходящие уведомления по электронной почте о создании учетных записей и сбросе паролей с сервера управления и пользовательского интерфейса управления. API управления остаются доступными для управления учетными записями пользователей Apigee. Дополнительную информацию см. в разделе «Настройка пограничного SMTP-сервера» .
- В среде GDC Air-Gappee не реализована система обнаружения и предотвращения вторжений. Для обнаружения и предотвращения вредоносных действий установите и настройте систему предотвращения вторжений (IPS), например Snort .
- Операционная система: Rocky Linux 8
- Характеристики системы: 8 ГБ ОЗУ; 2 виртуальных ядра ЦП; 64 ГБ локального дискового пространства.
- Подключение:
- Входящий трафик: TCP 22 (SSH)
- Выход: Интернет
- Чтобы узнать о последней официальной версии, поддерживаемой для GDC, ознакомьтесь с примечаниями к выпуску Apigee Edge for Private Cloud , указанными в столбце Edge for Private Cloud.
- Скачайте установочный файл 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 for Private Cloud, которую вы хотите установить.
- 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. - Следуйте инструкциям в разделе «Настройка контроля доступа» , чтобы настроить контроль доступа для проекта «Гавань».
- Следуйте инструкциям в разделе «Вход в 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, полученный на предыдущем шаге.
- Запустите скрипт на узле 1 , чтобы подключить организацию:
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, 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 на узле 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, полученный на предыдущем шаге.
- Подключитесь по SSH к узлу 1 и переместите файл хранилища ключей в папку 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:
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):
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 for Private Cloud.
Создайте хранилище (сумку для хранения).
Чтобы создать хранилище данных в проекте GDC:
Настройка доступа к хранилищу
Для настройки доступа к хранилищу:
Настройте узел репозитория.
На этом этапе оператор GDC настраивает узел репозитория для размещения зеркального репозитория Apigee Edge for Private Cloud.
Создайте узел репозитория.
Для создания узла репозитория:
Настройка доступа к узлу репозитория
Для настройки доступа к узлу репозитория:
Загрузите установочные файлы
На этом этапе оператор 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, запуская скрипт настройки на узле 1 .
Чтобы присоединиться к организации 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 и API управления.
Настройте TLS для прокси-сервера API.
Настройте TLS для пользовательского интерфейса Edge.
Чтобы настроить TLS для пользовательского интерфейса Edge:
Настройте 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