将 Edge Microgate 部署为服务

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

简介

本主题介绍如何在 Kubernetes 集群中将 Edge Microgate 作为独立服务运行。

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

准备工作

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

配置 Edge Microgate

以下命令为您的 Apigee 组织配置 Edge Microgate,并部署代理 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 Microgate 部署为服务

  1. 执行以下命令,将 Edge Microgate 作为服务部署到 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 命令返回的 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 Microgate,使其以该服务作为目标来调用该服务。Ingress 控制器允许从外部访问 edge-microgateway 服务。

  1. 部署示例 helloworld 服务。由于 Ingress 不知道此服务,因此无法从集群外部调用该服务。

    kubectl apply -f samples/helloworld/helloworld-service.yaml

    输出示例:

    service "helloworld" created deployment "helloworld" created
    
  2. 验证部署是否成功。请注意,helloworld 服务没有外部 IP。在以下步骤中,您将配置 Edge Microgate 以访问服务的内部 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 Microgate 配置为服务代理

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

另请参阅关于 Microgate 感知代理的注意事项

获取测试服务的内部 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 上创建微网关感知型代理

  1. 登录 Edge 界面。
  2. 选择您之前配置 Edge Microgate 时指定的组织。
  3. 在侧边导航菜单中,依次选择 Develop > API Proxies
  4. 点击 + 代理。系统随即会打开“构建代理”向导。
  5. 在第一个向导页面中,选择反向代理(最常见)
  6. 点击下一步
  7. 在向导的“Details”(详细信息)页面中,进行如下配置。请务必完全按照所示内容填写向导。请确保代理名称具有前缀 edgemicro_

    1. 代理名称:edgemicro_hello
    2. 代理基本路径:/hello

    3. 现有 API:http://<cluster_ip>:<port>

      例如:http://10.55.254.255:8081

  8. 点击下一步

  9. 在向导的“Security”页面中,选择 Passthrough (none)

  10. 点击下一步

  11. 在向导的 Virtual Hosts 页面中,接受默认值。

  12. 点击下一步

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

  14. 点击构建和部署

创建开发者

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

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

创建 API 产品

按照下文所述创建 API 产品。您将向 Product 添加两个代理: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 的 microgate 感知型代理。

  11. 点击保存

创建开发者应用

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

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

  5. 点击保存

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

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

  8. 点击 Consumer Key 旁边的 Show

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

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

测试代理

获取 Ingress IP 地址

使用 Ingress 的外部 IP 后,您可以从集群外部调用 Edge Microgate 服务。

  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 集群外部调用代理。从 Ingress 到 Edge Microgate 的映射是在将 Edge Microgate 部署到集群时创建的。

  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 Microgate 配置为在 Kubernetes 集群内调用 checkout 服务。

后续操作

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