Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Введение
В этой теме объясняется, как запустить Edge Microgateway в кластере Kubernetes в качестве прокси-сервера-сайдкара . Для развертывания сайдкара у вас есть два варианта: ручное и автоматическое внедрение. В этой теме описаны оба варианта.
Для получения более подробной информации см. раздел «Введение в Edge Microgateway в Kubernetes» .
Прежде чем начать
Выполните действия, описанные в разделе «Предварительные условия» .
Разверните тестовую службу.
Разверните простой сервис "привет" и проверьте его работу:
Разверните пример:
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
Использование ручного впрыска через боковую коляску
Из двух вариантов внедрения сайдкара, ручное внедрение сайдкара является более простым и понятным подходом и может быть выполнено с помощью одной команды kubectl .
Настройка микрошлюза Edge
Следующая команда настраивает 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Теперь вы готовы протестировать развертывание sidecar-контейнера Edge Microgateway. Подробные инструкции см. в разделе «Тестирование прокси» .
Использование автоматической системы впрыска топлива в боковую коляску.
На следующих шагах вы настроите автоматическое внедрение sidecar-контейнеров в ваш кластер Kubernetes. Эта настройка позволяет внедрить Edge Microgateway в качестве sidecar-прокси в 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 sidecar injector:
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Убедитесь, что веб-перехватчик Edge Microgateway sidecar injector запущен:
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Убедитесь, что под внедрения sidecar запущен в вашем кластере. Пространство имен
edgemicro-system— это место, где установлены системные службы, включая контроллер Ingress, HTTP-бэкенд по умолчанию и инжектор sidecar: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]Введите n .
Apigee username [required]:Введите ваше имя пользователя Apigee (адрес электронной почты). Например:
jdoe@google.com.Apigee password [required]:Введите свой пароль Apigee.
Apigee organization [required]:Введите название вашей организации в Apigee.
Apigee environment [required]:Введите название среды для вашей организации. Например, "test".
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 , чтобы выйти из команды.
Теперь вы готовы протестировать автоматическое развертывание sidecar-контейнера Edge Microgateway. Подробные инструкции см. в разделе «Тестирование прокси» .
Проверьте прокси.
При использовании sidecar-развертывания API-прокси для вашего сервиса создается автоматически. Вам не нужно создавать прокси, совместимый с Edge Microgateway.
Получите IP-адрес входящего трафика.
Используя внешний IP-адрес для Ingress, вы можете вызывать сервис извне кластера.
Получите внешний 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 Product . Откроется страница продукта.
Заполните страницу товара следующим образом. Для полей, не указанных ниже, используйте значения по умолчанию. Не сохраняйте изменения, пока не получите соответствующее указание.
Имя hello-world-productОтображаемое имя Edge Micro hello productСреда testВ разделе «Путь» нажмите « + Пользовательский ресурс» .
Добавьте путь
/.Снова нажмите + Пользовательский ресурс и добавьте путь
/**В разделе «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-ключ.
Получите ключ Consumer из созданного вами приложения разработчика. Это значение — ключ 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.
Что дальше?
Информацию о добавлении пользовательских плагинов, масштабировании развертывания, внесении изменений в конфигурацию и других задачах, которые вы можете захотеть выполнить, см. в разделе «Задачи».