В этом руководстве описано, как установить и развернуть Apigee Edge для частного облака и прокси API в изолированной среде Google Distributed Cloud (GDC). GDC air-gapped, в том числе 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, или в среде непрерывного развертывания вашей организации. - Получите учетные данные, необходимые для использования
gdcloudCLI иkubectlAPI. Подробнее о том, как подтвердить аккаунт, чтобы получить доступ… - Подтвердите имя пользователя и пароль Apigee, полученные от менеджера аккаунта Apigee.
- Убедитесь, что у вас есть названия административного и пользовательского кластеров GKE.
Требования к емкости
Для установки Apigee Edge для частного облака на GDC требуется несколько виртуальных машин с определенным распределением ресурсов. За эти ВМ взимается плата в зависимости от их вычислительных ресурсов (ОЗУ, ядер vCPU) и локального дискового хранилища. Подробнее о ценах…
В таблице ниже приведены требования к ресурсам для каждой виртуальной машины.
| Тип ВМ | ОЗУ | Ядра ВЦП | Место на диске |
|---|---|---|---|
| Узел репозитория | 8 ГБ | 2 ядра ВЦП | 64 ГБ |
| Управляющий узел | 8 ГБ | 2 ядра ВЦП | 64 ГБ |
| Узлы управления API Apigee 1, 2 и 3 | 16 ГБ ОЗУ | 8 ядер ВЦП. | 670 ГБ |
| Узлы управления API Apigee 4 и 5 | 16 ГБ ОЗУ | 8 ядер ВЦП. | 500 ГБ – 1 ТБ |
Роли и разрешения
Для развертывания Apigee Edge для частного облака в изолированной среде GDC требуются следующие роли и разрешения:
- Администратор платформы (PA): назначьте роль
IAM Admin. - Оператор приложений (AO): назначьте следующие роли:
Harbor Instance Admin: полный доступ к управлению экземплярами Harbor в проекте.LoggingTarget Creator: создаетLoggingTargetспециальных ресурсов в пространстве имен проекта.LoggingTarget Editor– редактируетLoggingTargetспециальные ресурсы в пространстве имен проекта.Project Bucket Admin– управление сегментами хранилища и объектами в них.Project Grafana Viewer: доступ к экземпляру мониторинга в пространстве имен проекта.Project NetworkPolicy Admin– управляет правилами сети проекта в пространстве имен проекта.Project VirtualMachine Admin– управляет виртуальными машинами в пространстве имен проекта.Secret Admin: управление секретными ключами Kubernetes в проектах.Service Configuration Admin– доступ для чтения и записи к конфигурациям сервисов в пространстве имен проекта.Namespace Admin: управляет всеми ресурсами в пространствах имен проекта.
- Apigee в изолированной среде GDC не поставляется с DNS-серверами и использует локальное DNS-преобразование в качестве временного решения. Если Apigee на GDC с воздушным зазором развернут в среде с внешними DNS-серверами, замените шаги, которые настраивают локальный DNS, на настройку записей DNS на DNS-серверах.
- Apigee в изолированной среде GDC не включает отдельный SMTP-сервер. Вы можете в любое время настроить SMTP-сервер, чтобы включить исходящие уведомления по электронной почте о создании аккаунта и сбросе пароля с сервера управления и из интерфейса управления. API управления по-прежнему доступны для управления аккаунтами пользователей Apigee. Подробнее о настройке SMTP-сервера Edge…
- Apigee в изолированной среде GDC не реализует обнаружение и предотвращение вторжений. Установите и настройте систему предотвращения вторжений (СПВ), например Snort, чтобы обнаруживать и предотвращать вредоносные действия.
- Операционная система: Rocky Linux 8
- Размер машины: 8 ГБ ОЗУ, 2 ядра ВЦП, 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 для частного облака, которую вы хотите установить на GDC, например 4.53.01.
- Скачайте последнюю версию файла Apigee Edge для частного облака
bootstrap_VERSION.shв/tmp/bootstrap_VERSION.sh:curl https://software.apigee.com/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh
где VERSION – последняя версия Apigee Edge для частного облака, которую вы хотите установить на GDC, например 4.53.01.
- Установите утилиту Edge
apigee-serviceи зависимости:sudo bash /tmp/bootstrap_VERSION.sh apigeeuser=APIGEE_USER apigeepassword=APIGEE_PASSWORD
Где:
- APIGEE_USER – имя пользователя, полученное для организации Apigee.
- APIGEE_PASSWORD – это пароль, который вы получили для организации Apigee.
- VERSION – это версия Apigee Edge для частного облака, которую вы хотите установить на GDC.
- Запустите скрипт настройки на подключенном узле:
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 для частного облака.
- Примените конфигурацию сегмента:
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.01apigee-nginx.tarpostgresql14.tarfluentbit.taransible-rpms.tarapigee-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 для частного облака, которую хотите установить.
- Замените
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 для частного облака. Файл должен называться
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. - Запустите playbook, чтобы установить компоненты Apigee:
ansible-playbook install.yml
- Отключите ссылку для сброса пароля пользователя в интерфейсе Edge. Apigee в изолированной среде GDC не включает SMTP-сервер. Выполните инструкции из раздела Как отключить ссылку для сброса пароля в интерфейсе Edge.
- Следуйте инструкциям в разделе
Создание экземпляров реестра Harbor, чтобы создать экземпляр Harbor в проекте GDC
dev-apigee. - Следуйте инструкциям в разделе
Создание проектов Harbor, чтобы создать проект Harbor с названием
apigee. - Настройте контроль доступа для проекта Harbor, следуя инструкциям в разделе Настройка управления доступом.
- Чтобы настроить аутентификацию Docker, следуйте инструкциям в разделе Войдите в Docker и Helm.
- Обновите IP-адреса в файле
apigee/apigee_user_cluster.toml, как показано ниже.mgmt-server-proxy = "APIGEE_NODE1_EXTERNAL_IP" router-proxy1 = "APIGEE_NODE2_EXTERNAL_IP" router-proxy2 = "APIGEE_NODE3_EXTERNAL_IP"
Где:
- APIGEE_NODE1_EXTERNAL_IP – внешний IP-адрес узла Apigee node1, полученный на предыдущем шаге.
- APIGEE_NODE2_EXTERNAL_IP – внешний IP-адрес узла Apigee 2, полученный на предыдущем шаге.
- APIGEE_NODE3_EXTERNAL_IP – внешний IP-адрес узла Apigee 3, полученный на предыдущем шаге.
- Поместите файл 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 1, полученный на предыдущем шаге.
- APIGEE_NODE2_EXTERNAL_IP – внешний IP-адрес узла Apigee 2, полученный на предыдущем шаге.
- APIGEE_NODE3_EXTERNAL_IP – внешний IP-адрес узла Apigee 3, полученный на предыдущем шаге.
- Запустите скрипт на 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, Management API и прокси-сервера API.
- APIGEE_ELB_EXTERNAL_IP – внешний IP-адрес сервиса
apigee-elb, полученный на предыдущем шаге. - ORG_NAME – название организации Apigee.
- ENV_NAME – название среды Apigee.
- Войдите в интерфейс Edge.
- На странице API Proxies (Прокси API) нажмите Create (Создать), чтобы создать новый прокси-сервер 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, полученный на предыдущем шаге.
- Подключитесь к node1 по протоколу SSH и переместите файл хранилища ключей в папку 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. Введите имя пользователя и пароль администратора, чтобы подтвердить правильность настроек учетных данных.
- Другие варианты развертывания Apigee
- Подробнее о GDC…
Подробнее о предоставлении ролей и разрешений GDC в изолированной среде читайте в этой статье.
Ограничения
Для Apigee в изолированной среде GDC действуют следующие ограничения:
Как получить необходимые файлы
Чтобы получить установочные файлы, сначала настройте подключенный узел, а затем скачайте файлы.
Как настроить подключенный узел
Подключенный узел – это одна виртуальная машина вне GDC, которую вы используете для скачивания установочных файлов. Для этой виртуальной машины требуется доступ к интернету. Она используется только в процессе установки.
Подключенному узлу требуются следующие ресурсы и конфигурация:
Чтобы создать подключенный узел, следуйте инструкциям в статье Как создать и запустить экземпляр ВМ. После создания ВМ следуйте инструкциям в разделе Подключение к ВМ Linux. для подключения к ВМ. Список поддерживаемых операционных систем приведен в статье Поддерживаемые ОС для GDC.
Как скачать установочные файлы
Чтобы скачать установочные файлы:
Как настроить сегмент хранилища
На этом этапе оператор GDC настраивает сегмент хранилища в проекте GDC для хранения файлов резервных копий Apigee Edge для частного облака.
Как создать сегмент хранилища
Чтобы создать сегмент хранилища в проекте GDC:
Как настроить доступ к сегменту
Чтобы настроить доступ к сегменту хранилища:
Как настроить узел репозитория
На этом этапе оператор GDC настраивает узел репозитория для размещения зеркального репозитория Apigee Edge для 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, запустив скрипт настройки на node1.
Чтобы подключить организацию Apigee:
Как проверить подключение по протоколу HTTP
На этом шаге вы проверите подключение по протоколу HTTP для Management API и прокси-сервера API.
Чтобы проверить подключение по протоколу HTTP:
Как протестировать Management API
Чтобы протестировать Management API, отправьте HTTP-запрос в конечную точку:
curl -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e/ENV_NAME/provisioning/axstatus"
Где:
Как протестировать прокси-сервер API
Чтобы протестировать прокси-сервер API:
Как настроить TLS и проверить HTTPS
На этом этапе оператор GDC настраивает протокол TLS для прокси-сервера API, интерфейса Edge и Management API.
Как настроить TLS для прокси-сервера API
Как настроить TLS для интерфейса Edge
Чтобы настроить TLS для интерфейса Edge:
Как настроить TLS для Management API
Чтобы настроить TLS для Management 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