Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Введение
В этом разделе объясняется, как запустить Edge Microgateway в кластере Kubernetes в качестве дополнительного прокси . У вас есть два варианта развертывания коляски: ручной и автоматический впрыск. В этом разделе описаны оба варианта.
Дополнительные сведения см. в разделе Знакомство с Edge Microgateway в Kubernetes .
Прежде чем начать
Выполните действия, описанные в разделе «Предварительные требования» .
Развертывание тестовой службы
Разверните простой сервис «hello» и проверьте развертывание:
Разверните образец:
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Убедитесь, что служба работает. Возможно, вам придется подождать несколько минут, пока модуль не перейдет в рабочее состояние:
kubectl get pods --namespace=default
Пример вывода:
NAME READY STATUS RESTARTS AGE helloworld-569d6565f9-lwrrv 1/1 Running 0 17m
Удалите развертывание тестовой службы. Вы переустановите его позже, после того как включите внедрение боковой машины:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
Использование ручного впрыска коляски
Из двух вариантов внедрения Sidecar внедрение вручную является более простым и понятным подходом, и его можно выполнить с помощью одной команды kubectl
.
Настройка Edge Microgateway
Следующая команда настраивает Edge Microgateway для вашей организации Apigee и развертывает прокси-сервер edgemicro-auth
.
Выполните следующую команду:
edgemicro configure -o [org] -e [env] -u [username]
Где:
org
: название вашей организации Edge (вы должны быть администратором организации).env
: среда в вашей организации (например, тестовая или производственная).username
: адрес электронной почты, связанный с вашей учетной записью Apigee.
Пример
edgemicro configure -o myorg -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 в сервисный модуль в качестве дополнительного прокси-сервера, выполните следующую команду:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -svc=service_deployment_file)
где:
-
your_org
— организация Apigee, указанная вами в командеedgemicro configure
. -
your_env
— среда, указанная вами в командеedgemicro configure
. -
your_key
— ключ, возвращенный командойedgemicro configure
. -
your_secret
— секрет, возвращаемый командойedgemicro configure
. -
config_file_path
— путь к файлу конфигурации Edge Micro, возвращенному командойedgemicro configure
. -
service_deployment_file
— путь к файлу развертывания службы, модуль которой получит сопутствующий дополнительный сервис. Например:samples/helloworld/helloworld.yaml
.
Например:
kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -svc=samples/helloworld/helloworld.yaml)
Проверьте конфигурацию
Проверьте развертывание службы:
kubectl get services -n default
Пример вывода:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloworld NodePort 10.15.254.163 <none> 8081:32401/TCP 56s kubernetes ClusterIP 10.15.240.1 <none> 443/TCP 41m
Теперь вы готовы протестировать дополнительное развертывание Edge Microgateway. Подробные инструкции см. в разделе «Проверка прокси» .
Использование автоматического впрыска коляски
На следующих шагах вы настроите автоматическое внедрение дополнительных функций для вашего кластера Kubernetes. Эта настройка позволяет внедрить Edge Microgateway в качестве дополнительного прокси-сервера в Kubernetes.
Установить инжектор коляски
Установите ConfigMap , который позволяет внедрить Sidecar Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
Выполните следующий сценарий, чтобы установить службу веб-перехватчика . Служба веб-перехватчика необходима для автоматического внедрения коляски:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certs
Добавьте пакет CA в установочный файл веб-перехватчика. API-сервер Kubernetes использует этот файл для вызова веб-перехватчика:
cat install/kubernetes/edgemicro-sidecar-injector.yaml | \ ./install/kubernetes/webhook-patch-ca-bundle.sh > \ install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
Установите веб-хук инжектора коляски Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
Пример вывода:
service "edgemicro-sidecar-injector" created serviceaccount "edgemicro-sidecar-injector-service-account" created deployment "edgemicro-sidecar-injector" created mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
Убедитесь, что веб-перехватчик Sidecar Injector Edge Microgateway работает:
kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
Пример вывода:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edgemicro-sidecar-injector 1 1 1 1 12m
Убедитесь, что модуль внедрения коляски работает в вашем кластере. В пространстве имен
edgemicro-system
устанавливаются системные службы, включая контроллер Ingress, серверную часть HTTP по умолчанию и инжектор боковой панели:kubectl get pods -n edgemicro-system
Пример вывода:
NAME READY STATUS RESTARTS AGE default-http-backend-55c6c69b88-gfnfd 1/1 Running 0 1h edgemicro-ingress-controller-64444469bf-jhn8b 1/1 Running 3 1h edgemicro-sidecar-injector-7d95698fbf-cq84q 1/1 Running 0 3m
Настройка и внедрение Edge Microgateway
На следующем шаге вы запустите интерактивный скрипт для создания конфигурации Edge Microgateway, связанной с пространством имен Kubernetes. Затем вы внедрите конфигурацию в свой кластер Kubernetes.
Запустите следующий интерактивный скрипт и укажите запрошенные параметры. Команда генерирует профиль конфигурации, который вы будете использовать на следующем шаге.
./install/kubernetes/webhook-edgemicro-patch.sh
Для получения информации о входных параметрах см. Справочник .
Примеры входных данных:
Namespace to deploy application [default]:
Нажмите Enter .
Authenticate with OAuth Token ("n","Y") [N/y]
Введите н .
Apigee username [required]:
Введите свое имя пользователя Apigee (адрес электронной почты). Например:
jdoe@google.com
.Apigee password [required]:
Введите пароль Apigee.
Apigee organization [required]:
Введите название вашей организации Apigee.
Apigee environment [required]:
Введите имя среды для вашей организации. Например, «тест».
Virtual Host [default]:
Нажмите Enter .
Is this Private Cloud ("n","y") [N/y]:
Введите n , если вы находитесь в общедоступном облаке.
Edgemicro Key. Press Enter to generate:
Нажмите Enter .
Edgemicro Secret. Press Enter to generate:
Нажмите Enter .
Edgemicro org-env-config.yaml. Press Enter to generate:
Нажмите Enter .
Пример вывода:
current nodejs version is v6.9.1 current edgemicro version is 2.5.25 config initialized to /Users/jdoe/.edgemicro/default.yaml Configure for Cloud ****************************************************************************************** Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory. Please make changes as desired. *****************************************************************************************
Do you agree to proceed("n","y") [N/y]:
Введите y .
Пример вывода:
Configuring Microgateway with key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84 secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0 config:~/.edgemicro/jdoe-test-config.yaml ******************************************************************************************************** kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml ********************************************************************************************************
Выполните команду, указанную в последней строке вывода. Эта команда
kubectl
внедряет сгенерированный профиль конфигурации Edge Microgateway в Kubernetes:kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
Просмотр статуса внедрения веб-перехватчика. Обратите внимание, что в настоящее время он не включен:
kubectl get namespace -L edgemicro-injection
Пример вывода:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
Запустите эту команду, чтобы включить внедрение веб-перехватчика:
kubectl label namespace default edgemicro-injection=enabled
Еще раз просмотрите статус внедрения веб-перехватчика. Обратите внимание, что теперь он включен:
kubectl get namespace -L edgemicro-injection
Пример вывода:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d enabled edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
Развертывание тестовой службы
Теперь повторно разверните тестовую службу. Edge Microgateway будет автоматически добавлен в модуль службы.
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Убедитесь, что Edge Microgateway был внедрен в модуль вместе с тестовым сервисом:
kubectl get pods --namespace=default --watch
Пример вывода:
NAME READY STATUS RESTARTS AGE
helloworld-6987878fc4-pkw8h 0/2 PodInitializing 0 12s
helloworld-6987878fc4-pkw8h 2/2 Running 0 26s
Когда статус изменится на Running
, нажмите ctrl-c
, чтобы выйти из команды.
Теперь вы готовы протестировать автоматическое развертывание дополнительного модуля Edge Microgateway. Подробные инструкции см. в разделе «Проверка прокси» .
Тестирование прокси
При развертывании вспомогательного устройства автоматически создается прокси-сервер API для вашего сервиса. Вам не нужно создавать прокси-сервер с поддержкой Edge Microgateway.
Получить входной IP-адрес
Используя внешний IP-адрес для входа, вы можете вызывать службу из-за пределов кластера.
Получите внешний IP-адрес Ingress-контроллера:
kubectl get ing -o wide
Пример вывода:
NAME HOSTS ADDRESS PORTS AGE gateway * 35.238.13.54 80 1m
Скопируйте значение
EXTERNAL-IP
для Ingress и экспортируйте его в переменную. Вы можете установить переменную вручную:export GATEWAY_IP=external_ip
Например:
export GATEWAY_IP=35.238.249.62
Или используйте эту команду, чтобы установить его для себя:
export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
Убедитесь, что переменная была экспортирована. Например:
echo $GATEWAY_IP
Пример вывода:
35.238.249.62
Позвоните в службу:
curl $GATEWAY_IP
Выход:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Далее вы устраните недостающую ошибку авторизации, настроив продукт API и приложение разработчика в Edge, чтобы вы могли получить действительный ключ API. Если вы добавите ключ в заголовок авторизации для вызова API, вызов будет успешным, и вы не увидите эту ошибку.
Создание компонентов в Apigee Edge
Затем создайте продукт API и приложение для разработчиков в Apigee Edge.
Создать продукт API
- Войдите в Apigee Edge.
- Выберите «Опубликовать» > «Продукты API» в боковом меню навигации.
- Нажмите + Продукт API . Появится страница продукта.
Заполните страницу продукта следующим образом. Для полей, которые не упомянуты ниже, вы можете использовать значения по умолчанию. Не сохраняйте данные до тех пор, пока не будет получено соответствующее указание.
Имя hello-world-product
Отображаемое имя Edge Micro hello product
Среда test
В разделе «Путь» нажмите + Пользовательский ресурс .
Добавьте путь
/
.Нажмите + Custom Resource еще раз и добавьте путь
/**
В разделе API-прокси нажмите + API-прокси и добавьте Edgemicro-auth .
Сохраните продукт API.
Создать приложение для разработчика
- Выберите «Приложения» в боковом меню навигации.
- Нажмите + Приложение . Появится страница сведений о приложении разработчика.
Заполните страницу приложения разработчика следующим образом. Не сохраняйте данные до тех пор, пока не будет получено соответствующее указание.
Имя hello-world-app
Отображаемое имя Edge Micro hello app
Разработчик Выберите разработчика из раскрывающегося меню. В разделе «Учетные данные» нажмите + Продукт и выберите только что созданный
hello-world-product
.Нажмите Сохранить .
Вы вернулись на страницу со списком всех приложений для разработчиков.
Выберите приложение, которое вы только что создали,
hello-world-app
.Нажмите «Показать» рядом с ключом потребителя .
Скопируйте значение ключа потребителя. Это значение представляет собой ключ API , который вы будете использовать для безопасных вызовов API к службе
helloworld
.Подождите несколько минут. Синхронизация изменений, внесенных вами в Apigee Edge, с экземпляром Edge Microgateway, развернутым в кластере, занимает несколько минут.
Вызов API
После того как изменения конфигурации будут перенесены в микрошлюз, вы можете выполнить следующие тесты.
Вызовите API без ключа API. Вы получите сообщение об ошибке, как показано ниже:
curl $GATEWAY_IP
Ожидаемый результат:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Для успешных вызовов API вам понадобится ключ API.
Получите ключ потребителя из созданного вами приложения разработчика. Это значение является ключом API, который вам нужен для вызова тестового прокси:
curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP
Например:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP
Выход:
Hello world
Ответ «Hello world» возвращается службой helloworld, развернутой в модуле. Вызов этой службы сначала проходил через Edge Microgateway, где выполнялась аутентификация. Если вы видите ответ «Hello world», значит, вы успешно настроили Edge Microgateway для работы в качестве дополнительного прокси-сервера в сервисном модуле helloworld.
Что дальше?
См. раздел «Задачи» для получения информации о добавлении пользовательских плагинов, масштабировании развертывания, внесении изменений в конфигурацию и других задачах, которые вы, возможно, захотите выполнить.