将 Edge Microgate 部署为服务

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

简介

本主题介绍如何在 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. 执行以下命令,以便在 Kubernetes 集群中将 Edge Microgateway 部署为服务:

    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 命令返回的 Secret。
    • 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 感知”代理是 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-IPPORT 的值。例如,在上面的示例中,这些值为 10.55.254.2558081。您系统的值会有所不同。

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

  10. 点击下一步

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

  12. 点击下一步

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

  14. 点击构建和部署

创建开发者

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

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

创建 API 产品

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

如需详细了解产品配置选项,请参阅 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 的微网关感知代理。

  11. 点击保存

创建开发者应用

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

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

  5. 点击保存

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

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

  8. 点击使用方密钥旁边的显示

  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

将配置更改拉取到微网关后,您可以尝试调用 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 服务。

后续操作

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