将 Edge Microgate 部署为 Sidecar 代理

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

简介

本主题介绍如何在 Kubernetes 集群中运行 Edge Microgateway, 辅助信息文件代理。辅助信息文件部署有两种选项:手动和自动 注入。本主题介绍了这两种方法。

如需了解详情,请参阅 Kubernetes 上的 Edge Microgateway 简介

准备工作

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

部署测试服务

部署一个简单的“hello”服务并验证部署:

  1. 部署该示例:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. 验证服务是否正在运行。您可能需要稍等片刻, Pod 会启动并进入运行状态:

    kubectl get pods --namespace=default

    输出示例:

    NAME                          READY     STATUS    RESTARTS   AGE
    helloworld-569d6565f9-lwrrv   1/1       Running   0          17m
    
  3. 删除测试服务部署。启用后,您稍后将重新安装它 Sidecar 注入:

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

使用手动 Sidecar 注入

在两个 Sidecar 注入选项中,手动 Sidecar 注入更简单、更直接 方法,只需使用一个 kubectl 命令即可。

配置 Edge Microgateway

以下命令为您的 Apigee 组织配置 Edge Microgateway 并部署代理 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 作为 Sidecar 代理添加到服务 Pod 中,请执行以下命令: 此命令:

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 - 您在 edgemicro configure 命令中指定的 Apigee 组织。
  • your_env - 您在 edgemicro configure 命令中指定的环境。
  • your_key - edgemicro configure 命令返回的键。
  • your_secret - edgemicro configure 命令返回的 Secret。
  • config_file_path - edgemicro configure 命令返回的 Edge Micro 配置文件的路径。
  • service_deployment_file - 将要创建的 Pod 的服务的部署文件的路径 获取配套的 Sidecar 服务。例如: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 的 Sidecar 部署。前往 如需了解详细步骤,请测试代理

使用自动 Sidecar 注入

在以下步骤中,您将为 Kubernetes 集群此设置允许将 Edge Microgateway 作为 Sidecar 注入 连接到 Kubernetes

安装 Sidecar 注入器

  1. 安装 ConfigMap 实现 Edge Microgateway 的 Sidecar 注入:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. 执行以下脚本以安装 webhook 服务。以下项目需要 Webhook 服务: 自动 Sidecar 注入:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. 将 CA 软件包添加到 Webhook 安装文件。Kubernetes api-server 使用此文件来调用 webhook:

    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 注入器 webhook:

    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 注入器 webhook 正在运行:

    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 注入 Pod 是否正在集群中运行。命名空间 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. 查看 webhook 注入的状态。请注意,此功能目前尚未启用:

    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. 运行以下命令,为 webhook 启用 webhook 注入:

    kubectl label namespace default edgemicro-injection=enabled
  5. 再次查看 webhook 注入的状态。请注意,它现在已启用:

    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 服务的 Pod

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

确认 Edge Microgateway 已随测试一起注入到 Pod 中 服务:

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 的自动 Sidecar 部署。前往 如需了解详细步骤,请测试代理

测试代理

通过 Sidecar 部署,系统会自动为您的服务创建 API 代理。您负责 无需创建“Edge Microgateway-aware”代理。

获取 Ingress IP 地址

借助 Ingress 的外部 IP,您可以调用该服务 从集群外部访问

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

    kubectl get ing -o wide

    输出示例:

    NAME      HOSTS     ADDRESS        PORTS     AGE
    gateway   *         35.238.13.54   80        1m
    
  2. 复制 Ingress 的 EXTERNAL-IP 值并将其导出到变量中。您 可以手动设置该变量:

    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 产品和开发者应用,以解决授权缺失错误 ,以便获取有效的 API 密钥。将密钥添加到授权后 标头,则调用会成功,并且您不会看到此错误。

在 Apigee Edge 上创建组件

接下来,在 Apigee Edge 上创建 API 产品和开发者应用。

创建 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. 点击 Consumer Key(使用方密钥)旁边的 Show(显示)。

  9. 复制使用方键值的值。该值是 API 密钥,您将用来对 helloworld 服务。

  10. 请稍等几分钟。您在 Apigee 上所做的更改需要几分钟时间 要与 集群。

调用该 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 服务会返回 发送到 Pod对该服务的调用首先通过 Edge Microgateway, 执行身份验证的位置。如果您看到“Hello world” 则表示您已成功将 Edge Microgateway 配置为 充当 helloworld 服务 Pod 中的 Sidecar 代理。

后续操作

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