Развертывание Edge Microgateway как услуги

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

Введение

В этой статье объясняется, как запустить Edge Microgateway в кластере Kubernetes в качестве автономного сервиса .

Для получения более подробной информации см. обзор интеграции Edge Microgateway с Kubernetes .

Прежде чем начать

Выполните действия, описанные в разделе «Предварительные условия» .

Настройка микрошлюза Edge

Следующая команда настраивает Edge Microgateway для вашей организации Apigee и развертывает прокси-сервер edgemicro-auth .

  1. Выполните следующую команду:

    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 как сервис.

  1. Выполните следующую команду, чтобы развернуть 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
    
  2. Скопируйте и вставьте следующий код в свой терминал. Этот код настраивает контроллер 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 .

  1. Разверните пример сервиса helloworld . Поскольку Ingress не знает об этом сервисе, его нельзя вызвать извне кластера.

    kubectl apply -f samples/helloworld/helloworld-service.yaml

    Пример выходных данных:

    service "helloworld" created deployment "helloworld" created
    
  2. Убедитесь, что развертывание прошло успешно. Обратите внимание, что для сервиса 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-адрес для тестового сервиса.

  1. Получите внутренний 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
    
  2. Скопируйте значения CLUSTER-IP и PORT . Например, в приведенном выше примере это значения: 10.55.254.255 и 8081 Значения для вашей системы будут другими.

Создайте прокси-сервер с поддержкой микрошлюзов на Edge.

  1. Войдите в пользовательский интерфейс Edge.
  2. Выберите ту же организацию, которую вы указали ранее при настройке Edge Microgateway.
  3. В боковом навигационном меню выберите «Разработка» > «API-прокси» .
  4. Нажмите кнопку + Прокси . Откроется мастер создания прокси.
  5. На первой странице мастера выберите «Обратный прокси (наиболее распространенный вариант)» .
  6. Нажмите «Далее» .
  7. На странице «Подробности» мастера настройте параметры следующим образом. Убедитесь, что все поля мастера заполнены точно так, как показано. Убедитесь, что имя прокси-сервера имеет префикс edgemicro_ .

    1. Имя прокси: edgemicro_hello
    2. Базовый путь прокси: /hello

    3. Существующий API: http://<cluster_ip>:<port>

      Например: http://10.55.254.255:8081

  8. Нажмите «Далее» .

  9. На странице «Безопасность» мастера выберите «Сквозная передача (нет)» .

  10. Нажмите «Далее» .

  11. На странице «Виртуальные хосты» мастера установки примите значения по умолчанию.

  12. Нажмите «Далее» .

  13. На странице «Сборка» мастера проверьте настройки прокси-сервера. Убедитесь, что выбрана тестовая среда.

  14. Нажмите «Сборка и развертывание» .

Создать разработчика

Для тестирования можно использовать уже существующего разработчика или создать нового следующим образом:

  1. В боковом навигационном меню выберите «Опубликовать» > «Разработчики» .
  2. Click + Developer.
  3. Заполните диалоговое окно, чтобы создать нового разработчика. Вы можете использовать любое имя/адрес электронной почты разработчика по своему усмотрению.

Создать API-продукт

Создайте API-продукт, как описано ниже. Добавьте к продукту два прокси: edgemicro-auth и edgemicro_hello .

Более подробную информацию о параметрах конфигурации продукта можно найти в разделе «Что нужно знать о конфигурации продукта API» .

  1. В боковом навигационном меню выберите «Публикация» > «Продукты API» .
  2. Нажмите + API Product . Откроется страница с подробной информацией о продукте.
  3. Заполните страницу с подробными сведениями о товаре следующим образом. Не нажимайте кнопку «Сохранить», пока вам не будет дано соответствующее указание.

    Имя hello-world-product
    Отображаемое имя Edge Micro hello product
    Среда test
    Доступ Public
    Тип утверждения ключа Automatic
  4. В нижней половине страницы нажмите кнопку «+ Пользовательский ресурс» .

  5. Укажите в качестве ресурса символ / (одну косую черту).

  6. Снова выберите + Пользовательский ресурс и добавьте путь /** .

  7. В нижней части страницы нажмите кнопку + API Proxy .

  8. Выберите прокси-сервер с именем edgemicro-auth .

  9. Снова нажмите + API Proxy .

  10. Выберите прокси-сервер с поддержкой микрошлюзов под названием edgemicro_hello .

  11. Нажмите « Сохранить ».

Создайте приложение для разработчиков.

  1. В боковом навигационном меню выберите «Публикация» > «Приложения» .
  2. Нажмите кнопку «+ Приложение» . Откроется страница с подробной информацией о приложении для разработчика.
  3. Заполните страницу приложения разработчика следующим образом. Не сохраняйте изменения, пока не получите соответствующее указание.

    Имя hello-world-app
    Отображаемое имя Edge Micro hello app
    Разработчик Выберите созданного вами разработчика тестов, или подойдёт любой другой разработчик.
  4. В разделе «Учетные данные» нажмите «+ Продукт» и выберите созданный вами продукт: hello-world-product.

  5. Нажмите « Сохранить ».

  6. Вы снова на странице со списком всех приложений для разработчиков.

  7. Выберите только что созданное вами приложение hello-world-app .

  8. Нажмите кнопку «Показать» рядом с полем «Ключ потребителя» .

  9. Скопируйте значение ключа потребителя. Это значение представляет собой ключ API , который вы будете использовать для безопасных вызовов API к /hello .

  10. Подождите несколько минут. Для синхронизации изменений, внесенных вами в Apigee Edge, с экземпляром Edge Microgateway, развернутым в кластере, потребуется несколько минут.

Проверьте прокси.

Получите IP-адрес входящего трафика.

Используя внешний IP-адрес для входящего трафика, вы можете вызывать службу Edge Microgateway извне кластера.

  1. Получите внешний IP-адрес контроллера Ingress:

    kubectl get ing -o wide

    Пример выходных данных:

    NAME                        HOSTS     ADDRESS          PORTS     AGE
    edge-microgateway-ingress   *         35.238.249.62    80        37m
    
  2. Скопируйте значение 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:]")
  3. Убедитесь, что переменная была экспортирована. Например:

    echo $GATEWAY_IP

    Пример выходных данных:

    35.238.249.62
    

Вызовите API

После того, как изменения конфигурации будут внесены в микрошлюз, вы можете попробовать вызвать API. Для вызова API используйте IP-адрес контроллера Ingress (который вы сохранили в переменной GATEWAY_IP , поскольку этот IP-адрес позволяет обращаться к прокси-серверу извне кластера Kubernetes. Сопоставление Ingress и Edge Microgateway было создано при развертывании Edge Microgateway в кластере.

  1. При попытке вызова 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-ключ.

  2. Получите ключ 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.

Что дальше?

Информацию о добавлении пользовательских плагинов, масштабировании развертывания, внесении изменений в конфигурацию и других задачах, которые вы можете захотеть выполнить, см. в разделе «Задачи».