Как развернуть Edge Microgateway в качестве сервиса

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

Введение

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

Подробнее об интеграции Edge Microgateway с Kubernetes…

Подготовка

Выполните инструкции из раздела Требования.

Как настроить Edge Microgateway

Следующая команда настраивает 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. Возможно, после вставки команды в терминал вам потребуется нажать клавишу Ввод:

    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. В меню навигации слева выберите Develop (Разработка) > API Proxies (Прокси API).
  4. Нажмите + Прокси. Откроется мастер создания прокси.
  5. На первой странице мастера выберите Reverse proxy (Обратный прокси-сервер).
  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. На странице Build (Создание) мастера проверьте настройки прокси-сервера. Убедитесь, что выбрана среда test.

  14. Нажмите Создать и развернуть.

Создание разработчика

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

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

Создание продукта API

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

Подробнее о вариантах конфигурации продукта можно узнать в статье Что нужно знать о конфигурации продукта API.

  1. В меню навигации слева выберите Publish > API Products (Публикация > Продукты API).
  2. Нажмите + Продукт API. Откроется страница "Сведения о товаре".
  3. Заполните страницу "Сведения о товаре" следующим образом: Не нажимайте "Сохранить", пока не получите инструкции.

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

  5. Укажите ресурс / (один косой слеш).

  6. Ещё раз нажмите + Специальный ресурс и добавьте путь /**.

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

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

  9. Ещё раз нажмите + API Proxy (Прокси API).

  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-адрес Ingress

Используя внешний IP-адрес для Ingress, вы можете вызывать сервис 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. Вы используете IP-адрес контроллера Ingress (который вы сохранили в переменной GATEWAY_IP), чтобы вызывать API, поскольку этот 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. Получите идентификатор клиента из созданного вами приложения для разработчиков. Это ключ 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.

Что дальше?

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