В этом руководстве описывается установка и развертывание 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-files
cd apigee-files
for file in /opt/apigee/data/apigee-mirror/apigee-4.53.01.tar.gz /tmp/ansible-rpms.tar /tmp/apigee-nginx/apigee-nginx.tar /tmp/fluentbit/fluentbit.tar /tmp/postgresql14/postgresql14.tar /tmp/apigee-repos.tar; do scp -i SSH_PRIVATE_KEY_FILE USER@CONNECTED_NODE_IP:$file . done
Где:
- SSH_PRIVATE_KEY_FILE — путь к файлу закрытого ключа SSH.
- USER — имя пользователя подключенного узла.
- CONNECTED_NODE_IP — IP-адрес подключенного узла.
- Выполните аутентификацию с помощью кластера администратора организации:
gdcloud auth login --login-config-cert WEB_TLS_CERT
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
Где:
- WEB_TLS_CERT — путь к веб-сертификату TLS.
- ORG_ADMIN_CLUSTER — имя кластера GKE администратора организации.
- Задайте переменные среды проекта и контейнера:
export PROJECT=PROJECT
export 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=repo
kubectl create -n $PROJECT -f - <<EOF apiVersion: virtualmachine.GDC.goog/v1 kind: VirtualMachineAccessRequest metadata: generateName: $NODE- spec: ssh: key: | "cat SSH_PUBLIC_KEY_FILE" ttl: 24h user: admin vm: $NODE EOF
Где SSH_PUBLIC_KEY_FILE — имя файла, содержащего ваш открытый ключ SSH.
- Получите внешний 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.sh
curl 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_IP
export REPO_USER=REPO_USER_NAME
export REPO_PASSWORD=REPO_PASSWORD
- Включите
apigee_node
вapigee/helm/values-cookie-air-gapped.yaml
как показано::apigee_node: enabled: true
- Запустите скрипт развертывания для создания узлов Apigee:
source venv/bin/activate
python 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/activate
python 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/admin
cp -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.yml
sed -i 's/\.git$//g' requirements.yml
- Install Ansible requirements:
sudo chown -R admin /home/admin/apigee-repos
ansible-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/setup
ansible-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/prod
vi ~/.ansible/inventory/prod/edge-dc1
- Скопируйте содержимое файла
- Обновите внутренние IP-адреса узлов Apigee в
edge-dc1
:apigee_000 ansible_host=APIGEE_NODE1_INTERNAL_IP
apigee_001 ansible_host=APIGEE_NODE2_INTERNAL_IP
apigee_002 ansible_host=APIGEE_NODE3_INTERNAL_IP
apigee_003 ansible_host=APIGEE_NODE4_INTERNAL_IP
apigee_004 ansible_host=APIGEE_NODE5_INTERNAL_IP
Где значения APIGEE_NODE*_INTERNAL_IP — это внутренние IP-адреса узлов Apigee, полученные на предыдущем этапе.
- Настройте файл
~/.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.yml
sed -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.yml
sed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-server-self/tasks/main.yml
sed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/tasks/main.yml
cat << EOF >> ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/templates/response-file-template.conf.j2 QPID_MGMT_USERNAME= opdk_qpid_mgmt_username QPID_MGMT_PASSWORD= opdk_qpid_mgmt_password EOF
sed -i 's/mode: 0700/mode: 0700\n recurse: yes/g' ~/.ansible/roles/apigee-opdk-setup-postgres-config/tasks/main.yml
- Замените содержимое файла
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/activate
python 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_CLUSTER
export PROJECT=dev-apigee
for 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_CLUSTER
export PROJECT=dev-apigee
kubectl 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.pkcs12
keytool -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