Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Введение
В этой статье рассказывается, как запустить Edge Microgateway в кластере Kubernetes в качестве отдельного сервиса.
Подробнее об интеграции Edge Microgateway с Kubernetes…
Подготовка
Выполните инструкции из раздела Требования.
Как настроить Edge Microgateway
Следующая команда настраивает Edge Microgateway для организации Apigee
и развертывает прокси-сервер edgemicro-auth.
Выполните следующую команду:
edgemicro configure -o [org] -e [env] -u [username]
Где:
org– название организации Edge (требуются права администратора организации).env– среда в вашей организации (например, тестовая или производственная).username– адрес электронной почты, связанный с вашим аккаунтом Apigee.
Пример
edgemicro configure -o docs -e test -u jdoe@example.com
Выходные данные (пример ниже) сохраняются в файле:
.$HOME/.edgemicro/org_name-env_name-config.yaml
current nodejs version is v6.9.1 current edgemicro version is 2.5.25 password: file doesn't exist, setting up Give me a minute or two... this can take a while... App edgemicro-auth deployed. checking org for existing KVM KVM already exists in your org configuring host edgemicroservices.apigee.net for region us-west1 saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml vault info: -----BEGIN CERTIFICATE----- MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8 1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH 6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn 8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4 w+e3Z3F7IKI= -----END CERTIFICATE----- The following credentials are required to start edge micro key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4 secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef edgemicro configuration complete!
Как развернуть Edge Microgateway в качестве сервиса
Выполните следующую команду, чтобы развернуть Edge Microgateway как сервис в кластере Kubernetes:
kubectl apply -f <(edgemicroctl -org=org -env=env -key=edgemicro-key -sec=edgemicro-secret -conf=file path of org-env-config.yaml)
где:
org– организация Apigee, указанная в командеedgemicro configure.env– среда, указанная в командеedgemicro configure.edgemicro-key– ключ, возвращенный командойedgemicro configure.edgemicro-secret– секрет, возвращенный командойedgemicro configure.file path of org-env-config.yaml– путь к файлу конфигурации Edge Micro, возвращенный командойedgemicro configure.
Пример:
kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=989cce9d41cac94e72626d906562a1d76a19445f8901b3508858bb064988eccb -sec=ec92b793178de7b7e88e346f55a951e3fdae05e700e3ddea7d63977826379784 -conf=/Users/jdoe/.edgemicro/jdoe-test-config.yaml)
Примеры результатов:
config/myorg-test-config.yaml) service "edge-microgateway" created deployment "edge-microgateway" created secret "mgwsecret" createdСкопируйте и вставьте в терминал следующий код: Этот код настраивает контроллер Ingress, чтобы разрешить внешний доступ к сервису
edge-microgateway. Возможно, после вставки команды в терминал вам потребуется нажать клавишу Ввод:cat <<EOF | kubectl apply -f - apiVersion: extensions/v1beta1 kind: Ingress metadata: name: edge-microgateway-ingress annotations: kubernetes.io/ingress.class: "nginx" spec: rules: - http: paths: - path: / backend: serviceName: edge-microgateway servicePort: 8000 EOFЕсли все пройдет успешно, вы увидите следующее сообщение:
ingress "edge-microgateway-ingress" createdТеперь контроллер Ingress настроен так, чтобы разрешить внешний доступ к сервису
edge-microgateway.
Как развернуть тестовый сервис
Ниже описано, как развернуть в кластере простой тестовый сервис. Контроллер Ingress не позволяет вызывать сервис извне кластера.
Позже вы настроите Edge Microgateway так, чтобы он вызывал этот сервис в качестве целевого.
Контроллер Ingress разрешает внешний доступ к сервису edge-microgateway.
Разверните образец сервиса
helloworld. Поскольку Ingress не знает об этом сервисе, его нельзя вызвать извне кластера.kubectl apply -f samples/helloworld/helloworld-service.yaml
Примеры результатов:
service "helloworld" created deployment "helloworld" createdУбедитесь, что развертывание прошло успешно. Обратите внимание, что у сервиса
helloworldнет внешнего IP-адреса. На следующих шагах вы настроите Edge Microgateway для доступа к внутреннему IP-адресу сервиса.kubectl get services -n default
Примеры результатов:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE edge-microgateway NodePort 10.35.247.222 <none> 8000:32000/TCP 12m helloworld NodePort 10.35.245.103 <none> 8081:30294/TCP 47s kubernetes ClusterIP 10.35.240.1 <none> 443/TCP 47m
Как настроить Edge Microgateway для проксирования сервиса
Получите внутренний IP-адрес для сервиса helloworld и добавьте его в качестве цели прокси-сервера, поддерживающего микрошлюз. Создание прокси-сервера, совместимого с микрошлюзом, – стандартное требование Edge Microgateway.
Также ознакомьтесь с разделом Что нужно знать о прокси-серверах, поддерживающих Microgateway.
Как получить внутренний IP-адрес для тестового сервиса
Получите внутренний IP-адрес кластера и порт для сервиса
helloworld:kubectl get services helloworld
Примеры результатов:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloworld NodePort 10.55.254.255 <none> 8081:30329/TCP 3mСкопируйте значения
CLUSTER-IPиPORT. Например, в приведенном выше примере это значения10.55.254.255и8081. Значения для вашей системы будут другими.
Как создать прокси-сервер с поддержкой микрошлюза в Edge
- Войдите в интерфейс Edge.
- Выберите ту же организацию, которую вы указали ранее при настройке Edge Microgateway.
- В меню навигации слева выберите Develop (Разработка) > API Proxies (Прокси API).
- Нажмите + Прокси. Откроется мастер создания прокси.
- На первой странице мастера выберите Reverse proxy (Обратный прокси-сервер).
- Нажмите Далее.
На странице "Сведения" мастера настройте следующие параметры: Заполните все поля мастера в точности так, как показано на скриншоте. Убедитесь, что имя прокси-сервера начинается с префикса
edgemicro_.- Название прокси-сервера: edgemicro_hello
Базовый путь прокси: /hello
Существующий API:
http://<cluster_ip>:<port>Пример: http://10.55.254.255:8081.
Нажмите Далее.
На странице "Безопасность" мастера выберите Пропустить (нет).
Нажмите Далее.
На странице "Виртуальные хосты" мастера оставьте значения по умолчанию.
Нажмите Далее.
На странице Build (Создание) мастера проверьте настройки прокси-сервера. Убедитесь, что выбрана среда test.
Нажмите Создать и развернуть.
Создание разработчика
Вы можете использовать существующего разработчика для тестирования или создать нового, выполнив следующие действия:
- В меню навигации слева выберите Публикация > Разработчики.
- Нажмите + Разработчик.
- Заполните диалоговое окно, чтобы создать нового разработчика. Вы можете указать любое имя разработчика и адрес электронной почты.
Создание продукта API
Создайте продукт API, как описано ниже. Вы добавите в продукт два прокси-сервера: edgemicro-auth и edgemicro_hello.
Подробнее о вариантах конфигурации продукта можно узнать в статье Что нужно знать о конфигурации продукта API.
- В меню навигации слева выберите Publish > API Products (Публикация > Продукты API).
- Нажмите + Продукт API. Откроется страница "Сведения о товаре".
Заполните страницу "Сведения о товаре" следующим образом: Не нажимайте "Сохранить", пока не получите инструкции.
Название hello-world-productОтображаемое название Edge Micro hello productСреда testДоступ PublicТип одобрения ключа AutomaticВ нижней части страницы нажмите + Собственный ресурс.
Укажите ресурс
/(один косой слеш).Ещё раз нажмите + Специальный ресурс и добавьте путь
/**.В нижней части страницы нажмите + Прокси API.
Выберите прокси-сервер с названием edgemicro-auth.
Ещё раз нажмите + API Proxy (Прокси API).
Выберите прокси-сервер с поддержкой микрошлюза edgemicro_hello.
Нажмите Сохранить.
Создание приложения разработчика
- В меню навигации слева выберите Публикация > Приложения.
- Нажмите + Приложение. Откроется страница приложения разработчика.
Заполните страницу приложения разработчика следующим образом: Не нажимайте "Сохранить", пока не получите инструкции.
Название hello-world-appОтображаемое название Edge Micro hello appРазработчик Выберите созданного вами тестового разработчика или любого другого. В разделе "Учетные данные" нажмите + Продукт и выберите созданный вами продукт:
hello-world-product.Нажмите Сохранить.
Вы вернетесь на страницу со списком приложений разработчика.
Выберите созданное приложение
hello-world-app.Нажмите Показать рядом с Ключом потребителя.
Скопируйте значение ключа потребителя. Это ключ API, который вы будете использовать для безопасных вызовов API к
/hello.Подождите несколько минут. Изменения, внесенные в Apigee Edge, синхронизируются с экземпляром Edge Microgateway, развернутым в кластере, в течение нескольких минут.
Как проверить прокси-сервер
Как получить IP-адрес Ingress
Используя внешний IP-адрес для Ingress, вы можете вызывать сервис Edge Microgateway извне кластера.
Получите внешний IP-адрес контроллера Ingress:
kubectl get ing -o wide
Примеры результатов:
NAME HOSTS ADDRESS PORTS AGE edge-microgateway-ingress * 35.238.249.62 80 37mСкопируйте значение
ADDRESSдля Ingress и экспортируйте его в переменную. Вы можете задать переменную вручную:export GATEWAY_IP=external_ip
Пример:
export GATEWAY_IP=35.238.249.62
Или используйте следующую команду:
export GATEWAY_IP=$(kubectl describe ing edge-microgateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
Убедитесь, что переменная была экспортирована. Пример:
echo $GATEWAY_IP
Примеры результатов:
35.238.249.62
Вызов API
После того как изменения конфигурации будут перенесены в микрошлюз, вы можете попробовать вызвать API. Вы используете IP-адрес контроллера Ingress (который вы сохранили в переменной GATEWAY_IP), чтобы вызывать API, поскольку этот IP-адрес позволяет вызывать прокси-сервер извне кластера Kubernetes. Сопоставление Ingress с Edge Microgateway было создано, когда вы развернули Edge Microgateway в кластере.
Вызов API без ключа API. Вы увидите сообщение об ошибке, как показано ниже:
curl $GATEWAY_IP:80/hello/
Ожидаемый результат
{"error":"missing_authorization","error_description":"Missing Authorization header"}Если вы видите это сообщение, возможно, вам нужно подождать, пока синхронизация не будет завершена:
{"message":"no match found for /hello/","status":404}Чтобы успешно выполнять вызовы API, вам понадобится ключ API.
Получите идентификатор клиента из созданного вами приложения для разработчиков. Это ключ API, который нужен для вызова тестового прокси-сервера:
curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP:80/hello/
Пример:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP:80/hello/
Вывод:
Hello worldЕсли вы увидите ответ "Hello world", значит вы успешно настроили Edge Microgateway для вызова сервиса helloworld в кластере Kubernetes.
Что дальше?
В разделе Задачи вы найдете информацию о том, как добавлять специальные плагины, масштабировать развертывание, вносить изменения в конфигурацию и выполнять другие задачи.