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

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

Введение

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

Дополнительные сведения см. в разделе Знакомство с Edge Microgateway в Kubernetes .

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

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

Развертывание тестовой службы

Разверните простой сервис «hello» и проверьте развертывание:

  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

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

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

Настройка Edge Microgateway

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

Использование автоматического впрыска коляски

На следующих шагах вы настроите автоматическое внедрение дополнительных функций для вашего кластера Kubernetes. Эта настройка позволяет внедрить Edge Microgateway в качестве дополнительного прокси-сервера в 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:

    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. Убедитесь, что веб-перехватчик 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
    
  6. Убедитесь, что модуль внедрения коляски работает в вашем кластере. В пространстве имен 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.

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

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

    Для получения информации о входных параметрах см. Справочник .

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

    1. Namespace to deploy application [default]:

      Нажмите Enter .

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

      Введите н .

    3. Apigee username [required]:

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

    4. Apigee password [required]:

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

    5. Apigee organization [required]:

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

    6. Apigee environment [required]:

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

    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 , чтобы выйти из команды.

Теперь вы готовы протестировать автоматическое развертывание дополнительного модуля Edge Microgateway. Подробные инструкции см. в разделе «Проверка прокси» .

Тестирование прокси

При развертывании вспомогательного устройства автоматически создается прокси-сервер API для вашего сервиса. Вам не нужно создавать прокси-сервер с поддержкой Edge Microgateway.

Получить входной IP-адрес

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

  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 . Появится страница продукта.
  4. Заполните страницу продукта следующим образом. Для полей, которые не упомянуты ниже, вы можете использовать значения по умолчанию. Не сохраняйте данные до тех пор, пока не будет получено соответствующее указание.

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

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

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

  7. Нажмите + Custom Resource еще раз и добавьте путь /**

  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. Получите ключ потребителя из созданного вами приложения разработчика. Это значение является ключом 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.

Что дальше?

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