Развертывание Edge Microgateway в качестве дополнительного прокси-сервера

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

Введение

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

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

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

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

Разверните тестовую службу.

Разверните простой сервис "привет" и проверьте его работу:

  1. Разверните пример:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. Убедитесь, что служба запущена. Возможно, вам потребуется подождать несколько минут, пока под запустится и перейдет в рабочее состояние:

    kubectl get pods --namespace=default

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

    NAME                          READY     STATUS    RESTARTS   AGE
    helloworld-569d6565f9-lwrrv   1/1       Running   0          17m
    
  3. Удалите развертывание тестовой службы. Вы переустановите его позже, после включения внедрения сайдкара:

     kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default

Использование ручного впрыска через боковую коляску

Из двух вариантов внедрения сайдкара, ручное внедрение сайдкара является более простым и понятным подходом и может быть выполнено с помощью одной команды kubectl .

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

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

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

    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)

Проверьте конфигурацию

  1. Проверьте развертывание сервисов:

    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
    
  2. Теперь вы готовы протестировать развертывание sidecar-контейнера Edge Microgateway. Подробные инструкции см. в разделе «Тестирование прокси» .

Использование автоматической системы впрыска топлива в боковую коляску.

На следующих шагах вы настроите автоматическое внедрение sidecar-контейнеров в ваш кластер Kubernetes. Эта настройка позволяет внедрить Edge Microgateway в качестве sidecar-прокси в Kubernetes.

Установите инжектор для коляски.

  1. Установите ConfigMap , который обеспечивает внедрение sidecar-контейнера в Edge Microgateway:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. Выполните следующий скрипт для установки службы веб-перехватчиков . Служба веб-перехватчиков необходима для автоматической инъекции сайдкаров:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. Добавьте пакет 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
    
  4. Установите веб-перехватчик 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
    
  5. Убедитесь, что веб-перехватчик 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
    
  6. Убедитесь, что под внедрения 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.

  1. Запустите следующий интерактивный скрипт и укажите необходимые параметры. Команда сгенерирует профиль конфигурации, который вы будете использовать на следующем шаге.

    ./install/kubernetes/webhook-edgemicro-patch.sh

    Информацию о входных параметрах см. в Справочнике .

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

    1. Namespace to deploy application [default]:

      Нажмите Enter .

    2. Authenticate with OAuth Token ("n","Y") [N/y]

      Введите n .

    3. Apigee username [required]:

      Введите ваше имя пользователя Apigee (адрес электронной почты). Например: jdoe@google.com .

    4. Apigee password [required]:

      Введите свой пароль Apigee.

    5. Apigee organization [required]:

      Введите название вашей организации в Apigee.

    6. Apigee environment [required]:

      Введите название среды для вашей организации. Например, "test".

    7. Virtual Host [default]:

      Нажмите Enter .

    8. Is this Private Cloud ("n","y") [N/y]:

      Введите n, если вы используете публичное облако.

    9. Edgemicro Key. Press Enter to generate:

      Нажмите Enter .

    10. Edgemicro Secret. Press Enter to generate:

      Нажмите Enter .

    11. 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.
      *****************************************************************************************
      
    12. 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
      ********************************************************************************************************
      
  2. Выполните команду, указанную в последней строке вывода. Эта команда kubectl внедряет сгенерированный профиль конфигурации Edge Microgateway в Kubernetes:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. Просмотрите статус внедрения веб-хуков. Обратите внимание, что в данный момент эта функция отключена:

    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
    
  4. Выполните эту команду, чтобы включить внедрение веб-перехватчика для веб-перехватчика:

    kubectl label namespace default edgemicro-injection=enabled
  5. Ещё раз проверьте статус внедрения веб-хуков. Обратите внимание, что теперь он включен:

    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, вы можете вызывать сервис извне кластера.

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

    kubectl get ing -o wide

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

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

    echo $GATEWAY_IP

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

    35.238.249.62
    
  4. Позвоните в службу:

    curl $GATEWAY_IP

    Выход:

    {"error":"missing_authorization","error_description":"Missing Authorization header"}
    

    Далее вам нужно будет устранить ошибку отсутствия авторизации, настроив продукт API и приложение разработчика в Edge таким образом, чтобы получить действительный ключ API. Когда вы добавите ключ в заголовок авторизации для вызова API, вызов будет успешным, и вы не увидите эту ошибку.

Создание компонентов в Apigee Edge

Далее создайте API-продукт и приложение для разработчиков в Apigee Edge.

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

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

    Имя hello-world-product
    Отображаемое имя Edge Micro hello product
    Среда test

  5. В разделе «Путь» нажмите « + Пользовательский ресурс» .

  6. Добавьте путь / .

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

  8. В разделе «API-прокси» нажмите «+ API-прокси» и добавьте edgemicro-auth .

  9. Сохраните продукт API.

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

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

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

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

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

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

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

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

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

Вызовите API

После того, как изменения конфигурации будут внесены в микрошлюз, вы можете выполнить следующие тесты.

  1. При попытке вызова API без ключа API вы получите сообщение об ошибке, как показано ниже:

    curl $GATEWAY_IP

    Ожидаемый результат:

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    Для успешного выполнения API-запросов вам необходим API-ключ.

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

Что дальше?

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