将 Edge Microgate 部署为服务

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。
info

简介

本主题介绍如何在 Kubernetes 集群中以独立服务 形式运行 Edge Microgateway。

如需了解详情,请参阅将 Edge Microgateway 与 Kubernetes 集成概览。

准备工作

完成前提条件中所述的步骤。

配置 Edge Microgateway

以下命令会为您的 Apigee 组织配置 Edge Microgateway 并部署代理 edgemicro-auth。

  1. 执行以下命令:

    edgemicro configure -o [org] -e [env] -u [username]

    其中:

    • org:您的 Edge 组织名称(您必须是组织管理员)。

    • env:您组织中的环境(例如 test 或 prod)。

    • 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 - 您在 edgemicro configure 命令中指定的 Apigee 组织。
    • env - 您在 edgemicro configure 命令中指定的环境。
    • edgemicro-key - 从 edgemicro configure 命令返回的密钥。
    • edgemicro-secret - 从 edgemicro configure 命令返回的密钥。
    • file path of org-env-config.yaml - 从 edgemicro configure 命令返回的 Edge Micro 配置文件路径。

    例如:

    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 以代理该服务

获取 helloworld 服务的内部 IP ,并将其添加为“Microgateway 感知”代理的目标。创建“Microgateway 感知”代理是 Edge Microgateway 的标准要求。

另请参阅 有关 Microgateway 感知 代理的注意事项。

获取测试服务的内部 IP

  1. 获取 helloworld 服务的内部集群 IP 和端口:

    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 上创建 Microgateway 感知代理

  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. 在向导的“安全性”页面中,选择通过 (none) 。

  10. 点击下一步 。

  11. 在向导的“虚拟主机”页面中,接受默认值。

  12. 点击下一步 。

  13. 在向导的“构建”页面中,查看代理设置。确保选择 test 环境。

  14. 点击构建和部署 。

创建开发者

您可以使用现有开发者进行测试,也可以按如下步骤创建新的开发者:

  1. 在侧边导航菜单中选择发布 > 开发者。
  2. 点击 + 开发者。
  3. 填写对话框以创建新开发者。您可以根据需要使用任何开发者名称/电子邮件。

创建 API 产品

按照以下说明创建 API 产品。您将向该产品添加两个代理:edgemicro-auth 和 edgemicro_hello 。

时,系统会部署 edgemicro-auth 代理。

如需详细了解 产品配置选项,请参阅有关 API 产品 配置的注意事项。

  1. 在侧边导航菜单中选择发布 > API 产品 。
  2. 点击 + API 产品。此时会显示“产品详情”页面。
  3. 根据下表填写“产品详情”页面。在系统提示保存之前请勿点击“保存”。

    名称 hello-world-product
    显示名称 Edge Micro hello product
    环境 test
    访问权限 Public
    密钥审批类型 Automatic
  4. 在该页面的下半部分,点击 + 自定义资源。

  5. 将资源设置为 / (单个斜杠)。

  6. 再次选择 + 自定义资源 ,然后添加路径 /**。

  7. 在该页面的下半部分,点击 + API 代理。

  8. 选择名为 edgemicro-auth 的代理。

  9. 再次点击 + API 代理 。

  10. 选择名为 edgemicro_hello 的 Microgateway 感知代理。

  11. 点击保存 。

创建开发者应用

  1. 在侧边导航菜单中选择发布 > 应用 。
  2. 点击 + 应用 。此时会显示“开发者应用详情”页面。
  3. 根据下表填写“开发者应用”页面。在系统提示保存之前请勿保存。

    名称 hello-world-app
    显示名称 Edge Micro hello app
    开发者 选择您创建的测试开发者,或者选择任何开发者。
  4. 在“凭据”部分中,点击 + 产品 ,然后选择您 创建的产品:hello-world-product.

  5. 点击保存 。

  6. 您将返回到列出所有开发者应用的页面。

  7. 选择您刚刚创建的应用 hello-world-app 。

  8. 点击 Consumer Key 旁边的显示 。

  9. 复制使用方密钥的值 。此值是您将用于对 /hello 进行安全 API 调用的 API 密钥 。

  10. 等待几分钟。您在 Apigee Edge 上所做的更改需要几分钟才能与集群中部署的 Edge Microgateway 实例同步。

测试代理

获取 Ingress IP 地址

借助 Ingress 的外部 IP,您可以从集群外部调用 Edge Microgateway 服务。

  1. 获取 Ingress 控制器的外部 IP 地址:

    kubectl get ing -o wide

    输出示例:

    NAME                        HOSTS     ADDRESS          PORTS     AGE
    edge-microgateway-ingress   *         35.238.249.62    80        37m
    
  2. 复制 Ingress 的 ADDRESS 值,并将其导出到变量。您可以手动设置变量:

    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

将配置更改提取到 Microgateway 后,您可以尝试调用该 API。您可以使用 Ingress 控制器 IP(您保存在变量 GATEWAY_IP 中)来调用该 API,因为此 IP 可让您从 Kubernetes 集群外部调用代理。当您 将 Edge Microgateway 部署到集群时,系统会创建从 Ingress 到 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 以调用 Kubernetes 集群内的 helloworld 服务。

接下来怎么做?

如需了解如何添加自定义插件、扩缩部署、进行配置更改以及您可能希望执行的其他任务,请参阅任务部分。