Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Введение
В этой статье объясняется, как запустить Edge Microgateway в кластере Kubernetes в качестве автономного сервиса .
Для получения более подробной информации см. обзор интеграции Edge Microgateway с Kubernetes .
Прежде чем начать
Выполните действия, описанные в разделе «Предварительные условия» .
Настройка микрошлюза Edge
Следующая команда настраивает 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. Возможно, вам потребуется нажать Enter после вставки команды в терминал: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.
- В боковом навигационном меню выберите «Разработка» > «API-прокси» .
- Нажмите кнопку + Прокси . Откроется мастер создания прокси.
- На первой странице мастера выберите «Обратный прокси (наиболее распространенный вариант)» .
- Нажмите «Далее» .
На странице «Подробности» мастера настройте параметры следующим образом. Убедитесь, что все поля мастера заполнены точно так, как показано. Убедитесь, что имя прокси-сервера имеет префикс
edgemicro_.- Имя прокси: edgemicro_hello
Базовый путь прокси: /hello
Существующий API:
http://<cluster_ip>:<port>Например: http://10.55.254.255:8081
Нажмите «Далее» .
На странице «Безопасность» мастера выберите «Сквозная передача (нет)» .
Нажмите «Далее» .
На странице «Виртуальные хосты» мастера установки примите значения по умолчанию.
Нажмите «Далее» .
На странице «Сборка» мастера проверьте настройки прокси-сервера. Убедитесь, что выбрана тестовая среда.
Нажмите «Сборка и развертывание» .
Создать разработчика
Для тестирования можно использовать уже существующего разработчика или создать нового следующим образом:
- В боковом навигационном меню выберите «Опубликовать» > «Разработчики» .
- Click + Developer.
- Заполните диалоговое окно, чтобы создать нового разработчика. Вы можете использовать любое имя/адрес электронной почты разработчика по своему усмотрению.
Создать API-продукт
Создайте API-продукт, как описано ниже. Добавьте к продукту два прокси: edgemicro-auth и edgemicro_hello .
Более подробную информацию о параметрах конфигурации продукта можно найти в разделе «Что нужно знать о конфигурации продукта API» .
- В боковом навигационном меню выберите «Публикация» > «Продукты API» .
- Нажмите + API Product . Откроется страница с подробной информацией о продукте.
Заполните страницу с подробными сведениями о товаре следующим образом. Не нажимайте кнопку «Сохранить», пока вам не будет дано соответствующее указание.
Имя hello-world-productОтображаемое имя Edge Micro hello productСреда testДоступ PublicТип утверждения ключа AutomaticВ нижней половине страницы нажмите кнопку «+ Пользовательский ресурс» .
Укажите в качестве ресурса символ
/(одну косую черту).Снова выберите + Пользовательский ресурс и добавьте путь
/**.В нижней части страницы нажмите кнопку + API Proxy .
Выберите прокси-сервер с именем edgemicro-auth .
Снова нажмите + API Proxy .
Выберите прокси-сервер с поддержкой микрошлюзов под названием edgemicro_hello .
Нажмите « Сохранить ».
Создайте приложение для разработчиков.
- В боковом навигационном меню выберите «Публикация» > «Приложения» .
- Нажмите кнопку «+ Приложение» . Откроется страница с подробной информацией о приложении для разработчика.
Заполните страницу приложения разработчика следующим образом. Не сохраняйте изменения, пока не получите соответствующее указание.
Имя hello-world-appОтображаемое имя Edge Micro hello appРазработчик Выберите созданного вами разработчика тестов, или подойдёт любой другой разработчик. В разделе «Учетные данные» нажмите «+ Продукт» и выберите созданный вами продукт:
hello-world-product.Нажмите « Сохранить ».
Вы снова на странице со списком всех приложений для разработчиков.
Выберите только что созданное вами приложение
hello-world-app.Нажмите кнопку «Показать» рядом с полем «Ключ потребителя» .
Скопируйте значение ключа потребителя. Это значение представляет собой ключ API , который вы будете использовать для безопасных вызовов API к
/hello.Подождите несколько минут. Для синхронизации изменений, внесенных вами в Apigee Edge, с экземпляром Edge Microgateway, развернутым в кластере, потребуется несколько минут.
Проверьте прокси.
Получите IP-адрес входящего трафика.
Используя внешний IP-адрес для входящего трафика, вы можете вызывать службу 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. Для вызова API используйте IP-адрес контроллера Ingress (который вы сохранили в переменной GATEWAY_IP , поскольку этот 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-ключ.
Получите ключ Consumer из созданного вами приложения разработчика. Это значение — ключ 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.
Что дальше?
Информацию о добавлении пользовательских плагинов, масштабировании развертывания, внесении изменений в конфигурацию и других задачах, которые вы можете захотеть выполнить, см. в разделе «Задачи».