参考资料

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

apigee-remote-service-cli 命令行界面 (CLI) 可帮助您预配和管理 Envoy 的 Apigee 适配器。

绑定命令

绑定会将部署到 Istio 网格的服务与 Apigee API 产品相关联。您可以利用 CLI 创建、移除和列出绑定。

注意:在“创建产品”界面中,您可以用产品指定一种或多种服务。这样做的效果等同于使用 CLI 创建绑定。

添加绑定

将远程目标绑定添加到 API 产品

用法

对于 Edge Public Cloud:

apigee-remote-service-cli bindings add [service_name] [product_name]  -o [organization] -e [environment] -u [username] -p [password] -c [config]

对于 Edge Private Cloud:

apigee-remote-service-cli bindings add [service_name] [product_name]  -o [organization] -e [environment] -u [username] -p [password] -r [runtime] -c [config]

对于 Apigee Hybrid:

apigee-remote-service-cli bindings add [service_name] [product_name]  -o [organization] -e [environment] -t [token]

参数

参数 类型 说明
-c, --config 字符串 (必需)Apigee 远程服务配置文件的路径。提示:指定此选项时,您可以省略大多数其他命令参数。请参阅 使用 --config 选项
-e, --env 字符串 (必需)您的组织中的环境。
-h, --help 显示命令参数的帮助。
--insecure 使用 SSL 时允许不安全的服务器连接
--legacy 如果您使用的是 Apigee Edge Cloud,请设置此标志。为 Edge Cloud 设置管理和运行时网址。
--opdk 如果您使用的是 Apigee Edge for Private Cloud,请设置此标志。
-o, --org 字符串 (必需)Apigee 组织。您必须是组织管理员。
-p, --password 字符串 (仅进行基本身份验证时必须提供)您的 Apigee 密码。您可以选择在 .netrc 文件中指定密码。如果您这样做,则无需在命令行中提供密码。另请参阅 使用 .netrc 作为凭据
-r, --runtime 字符串 Apigee 运行时基准网址(用于混合或 opdk)。
-t, --token 字符串 (仅 OAuth 令牌身份验证是必需的)您通过 Apigee 账号信息生成的 OAuth 或 SAML 令牌。如需了解如何生成令牌,请参阅 使用 get_token利用 SAML 访问 Management API
-u, --username 字符串 (仅进行基本身份验证时是必需的)您的 Apigee 用户名(通常是电子邮件地址)。您可以选择在 .netrc 文件中指定用户名。如果您这样做,则无需在命令行中提供用户名。另请参阅 使用 .netrc 作为凭据
-v, --verbose (可选)生成详细输出。

示例

./apigee-remote-service-cli bindings add httpbin.org envoy-test -o myorg -e test -u user@example.com -c config.yaml -p xxxxxx
product envoy-test is now bound to: httpbin.org

列出绑定

列出绑定到远程服务的所有 API 产品。

用量

对于 Edge Public Cloud:

apigee-remote-service-cli bindings list -o [organization] -e [environment] -u [username] -p [password]

对于 Edge Private Cloud:

apigee-remote-service-cli bindings list -o [organization] -e [environment] -u [username] -p [password] -r [runtime] 

参数

参数 类型 说明
-c, --config 字符串 (必需)Apigee 远程服务配置文件的路径。提示:指定此选项时,您可以省略大多数其他命令参数。请参阅 使用 --config 选项
-e, --env 字符串 (必需)您的组织中的环境。
-h, --help 显示命令参数的帮助。
--insecure 使用 SSL 时允许不安全的服务器连接
--legacy 如果您使用的是 Apigee Edge Cloud,请设置此标志。为 Edge Cloud 设置管理和运行时网址。
--opdk 如果您使用的是 Apigee Edge for Private Cloud,请设置此标志。
-o, --org 字符串 (必需)Apigee 组织。您必须是组织管理员。
-p, --password 字符串 (仅进行基本身份验证时必须提供)您的 Apigee 密码。您可以选择在 .netrc 文件中指定密码。如果您这样做,则无需在命令行中提供密码。另请参阅 使用 .netrc 作为凭据
-r, --runtime 字符串 Apigee 运行时基准网址(用于混合或 opdk)。
-t, --token 字符串 (仅 OAuth 令牌身份验证是必需的)您通过 Apigee 账号信息生成的 OAuth 或 SAML 令牌。如需了解如何生成令牌,请参阅 使用 get_token利用 SAML 访问 Management API
-u, --username 字符串 (仅进行基本身份验证时是必需的)您的 Apigee 用户名(通常是电子邮件地址)。您可以选择在 .netrc 文件中指定用户名。如果您这样做,则无需在命令行中提供用户名。另请参阅 使用 .netrc 作为凭据
-v, --verbose (可选)生成详细输出。

示例

apigee-remote-service-cli bindings list -o myorg -e test -u user@example.com -c config.yaml -p abc123
PI Products
============
Bound
-----
envoy-test:
  Quota: 5 requests every 1 minute
  Target bindings:
    httpbin.org
  Paths:
httpbin:
  Quota: 5 requests every 1 minute
  Target bindings:
    httpbin.org
  Paths:
    /httpbin
    /

Unbound
-------
product-1:
  Quota: 100 requests every 1 hour
product-2:
  Quota: 1000 requests every 1 month
product-3:
product-4:

移除绑定

从 API 产品中移除 Envoy 远程服务的绑定。

注意:您还可以通过在 Edge 界面中从产品中移除服务名称来移除用于 Envoy 绑定的远程服务。

用量

对于 Edge Public Cloud:

apigee-remote-service-cli bindings remove [service_name] [product_name]  -o [organization] -e [environment] -u [username] -p [password] -c [config]

对于 Edge Private Cloud:

apigee-remote-service-cli bindings remove [service_name] [product_name]  -o [organization] -e [environment] -u [username] -p [password] -r [runtime] -c [config]

对于 Apigee Hybrid:

apigee-remote-service-cli bindings remove [service_name] [product_name]  -o [organization] -e [environment] -t [token]

参数

参数 类型 说明
-c, --config 字符串 (必需)Apigee 远程服务配置文件的路径。提示:指定此选项时,您可以省略大多数其他命令参数。请参阅 使用 --config 选项
-e, --env 字符串 (必需)您的组织中的环境。
-h, --help 显示命令参数的帮助。
--insecure 使用 SSL 时允许不安全的服务器连接
--legacy 如果您使用的是 Apigee Edge Cloud,请设置此标志。为 Edge Cloud 设置管理和运行时网址。
--opdk 如果您使用的是 Apigee Edge for Private Cloud,请设置此标志。
-o, --org 字符串 (必需)Apigee 组织。您必须是组织管理员。
-p, --password 字符串 (仅进行基本身份验证时必须提供)您的 Apigee 密码。您可以选择在 .netrc 文件中指定密码。如果您这样做,则无需在命令行中提供密码。另请参阅 使用 .netrc 作为凭据
-r, --runtime 字符串 Apigee 运行时基准网址(用于混合或 opdk)。
-t, --token 字符串 (仅 OAuth 令牌身份验证是必需的)您通过 Apigee 账号信息生成的 OAuth 或 SAML 令牌。如需了解如何生成令牌,请参阅 使用 get_token利用 SAML 访问 Management API
-u, --username 字符串 (仅进行基本身份验证时是必需的)您的 Apigee 用户名(通常是电子邮件地址)。您可以选择在 .netrc 文件中指定用户名。如果您这样做,则无需在命令行中提供用户名。另请参阅 使用 .netrc 作为凭据
-v, --verbose (可选)生成详细输出。

示例

./apigee-remote-service-cli bindings remove httpbin.org envoy-test -o myorg -e test -u user@example.com -c config.yaml -p xxxxxx
product envoy-test is no longer bound to: httpbin.org

帮助命令

所有 apigee-remote-service-cli 命令都会提供在线帮助。只需输入:

apigee-remote-service-cli help

如需任何命令的相关帮助,请输入以下命令:

apigee-remote-service-cli [command] help

例如:

apigee-remote-service-cli provision help

预配命令

apigee-remote-service-cli provision 命令会在 Apigee Edge 组织中安装代理,设置证书,并且需要您配置 Envoy 的 Apigee 适配器。

用法

如果您使用的是 Edge Public Cloud:

apigee-remote-service-cli provision -o $ORG -e $ENV -u $USERNAME -p $PASSWORD

如果您使用的是 Edge Private Cloud:

apigee-remote-service-cli provision --opdk -o $ORG -e $ENV -u $USERNAME --management $MGMT_SERVER_URL --runtime $RUNTIME_URL -p $PASSWORD

参数

参数 类型 说明
-c, --config 字符串 Apigee 远程服务配置文件的路径。提示:指定此选项时,您可以省略大多数其他命令参数。请参阅 使用 --config 选项
-e, --environment 字符串 (必需)您的组织中的环境。
-f, --force-proxy-install (可选)如果已在您的组织中重新安装 remote-service 代理,则强制重新安装。
-h, --help 显示命令参数的帮助。
-k, --key 字符串 指定从 apigee-remote-service-cli provision 命令返回的密匙。
--legacy Apigee SaaS(设置管理和运行时网址)
-m, --management 字符串 (如果您使用的是 Apigee Private Cloud)您的 Apigee 管理基准网址。默认:https://api.enterprise.apigee.com
-n, --namespace 字符串 在指定命名空间中将配置作为 Envoy ConfigMap
--opdk 字符串 Apigee OPDK。
-o, --organization 字符串 (必需)您的 Apigee 组织。您必须是组织管理员。
-p, --password 字符串 (仅进行基本身份验证时必须提供)您的 Apigee 密码。您可以选择在 .netrc 文件中指定密码。如果您这样做,则无需在命令行中提供密码。另请参阅 使用 .netrc 作为凭据
--rotate-int 整数 如果 n > 0,则生成新的私钥并保留 n个 公钥(仅限混合密钥)
-r, --runtime 字符串 Apigee 运行时基准网址(用于混合或 opdk)
-s, --secret 字符串 指定从 apigee-remote-service-cli provision 命令返回的密匙。
--strength 整数 (可选)指定预配适配器中使用的 SSL 证书的加密强度。默认 2048
-t, --token 字符串 (仅限混合式)Apigee OAuth 或 SAML 令牌。
-u, --username 字符串 (仅进行基本身份验证时是必需的)您的 Apigee 用户名(通常是电子邮件地址)。您可以选择在 .netrc 文件中指定用户名。另请参阅 使用 .netrc 作为凭据
-v, --verbose (可选)生成详细输出。
--virtual-hosts 字符串 替换“default,secure”的默认虚拟主机。如果您为 Edge 组织环境指定的虚拟主机除外,请使用此选项。请参阅 Edge 文档,了解虚拟主机。
--years 整数 (可选)配置中使用的 SSL 证书的到期时间。默认:1

示例

请务必在文件中捕获 provision 命令的输出,该文件将用作其他 Apigee Adapter for Envoy 操作的输入。

Edge 公有云示例:

apigee-remote-service-cli provision --legacy --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml

Apigee Hybrid 示例

apigee-remote-service-cli provision --organization $ORG --environment $ENV --runtime $RUNTIME --namespace $NAMESPACE --token $TOKEN > config.yaml

令牌命令

您可以使用 JWT 令牌(而不是使用 API 密钥)进行经过身份验证的 API 代理调用。您可以使用令牌命令创建、检查并轮替 JWT 令牌以实现此目的。

创建 JWT 令牌

您可以使用 JWT 令牌对远程服务目标进行经过身份验证的 API 代理调用。另请参阅 使用基于 JWT 的身份验证

用法

对于 Edge 公有云:
apigee-remote-service-cli token create -c [config_file] --id [consumer_key] --secret [consumer_secret] -o [org] -e [env]
对于 Edge Private Cloud:
apigee-remote-service-cli token create -c [config_file] --id [consumer_key] --secret [consumer_secret] -r [runtime] -o [org] -e [env]
对于 Apigee Hybrid:
apigee-remote-service-cli token create -c [config_file] --id [consumer_key] --secret [consumer_secret] -r [runtime] -o [org] -e [env]

参数

参数 类型 说明
-c, --config 字符串 (必需)Apigee 远程服务配置文件的路径。提示:指定此选项时,您可以省略大多数其他命令参数。请参阅 使用 --config 选项
-e, --env 字符串 (必需)您的组织中的环境。
-h, --help 显示命令参数的帮助。
--insecure 使用 SSL 时允许不安全的服务器连接。
-o, --org 字符串 (必需)Apigee 组织。您必须是组织管理员。
-r, --runtime 字符串 Apigee 运行时基准网址(仅用于混合或 opdk)。
-v, --verbose (可选)生成详细输出。

示例

apigee-remote-service-cli token create -o myorg -e test -i YUmlZAcBKNsTAelJqPZFl3sh58ObATX9 -s icTARgaKHqvUH1dq -c config.yaml

输出

成功完成后,您将看到如下所示的 JST 令牌输出:
eyJraWQiOiIxIiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJhY2Nlc3NfdG9rZW4iOiJ0a2tlVzVKQTY2a0pZYTB4bFV1cVBsUW1BMU43IiwiYXVkIjoiaXN0aW8iLCJuYmYiOjE1MzAxMzg1OTEsImFwaV9wcm9kdWN0X2xpc3QiOlsiaXN0aW8tcHJvZHVjdCJdLCJhcHBsaWNhdGlvbl9uYW1lIjoiaXN0aW8tYXBwIiwiZGV2ZWxvcGVyX2VtYWlsIjoicFluZ2Zsb3lkQGdvb2dsZS5jb20iLCJpc3MiOiJodHRwczovL2FwaWdlZXNlYXJjaC10ZXN0LmFwaWdlZS5uZXQvaXN0aW8tYXV0aC90b2tlbiIsImV4cCI6MTUzMDEzOTQ5MSwiaWF0IjoxNTMwMTM4NTkxLCJqdGkiOiIxODgzMzViZi0wMmE4LTRjZGUsOGFkOS0yMWJmNDZjNmRjZDkiLCJjbGllbnRfaWQiOiJZVW1sWkFjQktOc1RBZWxKcVBZRmwzc2g1OE9iQVRYOSJ9.AL7pKSTmond-NSPRNNHVbIzTdAnZjOXcjQ-BbOJ_8lsQvF7PuiOUrGIhY5XTcJusisKgbCdtIxBl8Wq1EiQ_fKnUc3JYYOqzpTB5bGoFy0Yqbfu96dneuWyzgZnoQBkqwZkbQTIg7WNTGx1TJX-UTePvBPxAefiAbaEUcigX9tTsXPoRJZOTrm7IOeKpxpB_gQYkxQtV1_NbERxjTPyMbHdMWal9_xRVzSt7mpTGudMN9OR-VtQ1uXA67GOqhZWcOzq57qImOiCMbaoKnKUADevyWjX_VscN5ZZUtzQUQhTrmv8aR69-uVhMIPKp9juMyYKaYn2IsYZEeCWfhfV45Q

检查 JWT 令牌

您可以使用此命令检查 JWT 令牌。另请参阅 检查令牌

用法

对于 Edge 公有云:
apigee-remote-service-cli token inspect -o [organization] -e [environment] -f [token_file]
对于 Edge Private Cloud:
apigee-remote-service-cli token inspect -o [organization] -e [environment] -f [token_file] --runtime [host_alias]
对于 Apigee Hybrid:
apigee-remote-service-cli token inspect -o [organization] -e [environment] -f [token_file] --runtime [host_alias]

参数

参数 类型 说明
-c, --config 字符串 (必需)Apigee 远程服务配置文件的路径。提示:指定此选项时,您可以省略大多数其他命令参数。请参阅 使用 --config 选项
-e, --env 字符串 (必需)您的组织中的环境。
-h, --help 显示命令参数的帮助。
--insecure 使用 SSL 时允许不安全的服务器连接。
-o, --org 字符串 (必需)Apigee 组织。您必须是组织管理员。
-r, --runtime 字符串 Apigee 运行时基准网址(仅用于混合或 opdk)。
-v, --verbose (可选)生成详细输出。

示例

apigee-remote-service-cli token inspect -c config.yaml <<< $TOKEN

输出

成功后,您将看到类似于以下内容的输出:
{
	"aud": [
		"remote-service-client"
	],
	"exp": 1591741549,
	"iat": 1591740649,
	"iss": "https://apigee-docs-test.apigee.net/remote-service/token",
	"jti": "99325d2e-6440-4278-9f7f-b252a1a79e53",
	"nbf": 1591740649,
	"access_token": "VfzpXzBGAQ07po0bPMKY4JgQjus",
	"api_product_list": [
		"httpbin"
	],
	"application_name": "httpbin",
	"client_id": "GYDGHy5TRpV8AejXCOlreP7dPVepA8H",
	"developer_email": "user@example.com",
	"scope": ""
}
verifying...
token ok.

轮替 JWT 令牌

在最初生成 JWT 之后的一段时间内,您可能需要更改在加密键值对映射(KVM)中由 Apigee Edge 存储的私钥/公钥对。生成新密钥对的过程称为密钥轮替。轮替密钥时,会生成一个新的私钥/公钥对,并将其存储在 Apigee Edge 组织/环境中的“istio”KVM 中。此外,旧的公钥及其原始密钥 ID 值会保留下来。

用法

如果您使用 Edge 公有云:
apigee-remote-service-cli token rotate-cert -c [config_file] -o [organization] -e [environment] -k [provision_key] -s [provision_secret] --kid [new_key_id]
如果您使用的是 Edge Private Cloud:
apigee-remote-service-cli token rotate-cert -o [organization] -e [environment] -u [username] -p [password] -k [provision_key] -s [provision_secret] --kid [new_key_id]

参数

参数 类型 说明
-c, --config 字符串 (必需)Apigee 远程服务配置文件的路径。提示:指定此选项时,您可以省略大多数其他命令参数。请参阅 使用 --config 选项
-e, --env 字符串 (必需)您的组织中的环境。
-h, --help 显示命令参数的帮助。
--insecure 使用 SSL 时允许不安全的服务器连接
--truncate 整数 jwk 中的证书数量(默认值为 2)
-o, --org 字符串 (必需)Apigee 组织。您必须是组织管理员。
-r, --runtime 字符串 Apigee 运行时基准网址(用于混合或 opdk)。
-v, --verbose (可选)生成详细输出。

示例

apigee-remote-service-cli token rotate-cert -c config.yaml -o myorg -e test -k 2e238ffa15dc5ab6a1e97868e7581f6c60ddb8575478582c256d8b7e5b2677a8 -s 51058077223fa7b683c3bea845c5cca138340d1d5583922b6d465f9f918a4b08

输出

certificate successfully rotated

使用 .netrc 凭据

如果您使用的是 Edge Public Cloud,并且 apigee-remote-service-cli 会从您的主目录中的 .netrc 文件中自动选取 usernamepassword(用于基本身份验证)并且有机器 api.enterprise.apigee.com 的条目。如果您在使用 Apigee Private Cloud,则机器值与您的 management 网址相同(例如:http://192.162.55.100)。 例如,在 Edge 公有云上:
machine api.enterprise.apigee.com
login jdoe@google.com
password abc123
例如,在 Edge Private Cloud 上:
machine http://192.162.55.100
login jdoe@google.com
password abc123

版本命令

打印 CLI 版本

apigee-remote-service-cli version

使用 --config 命令选项

--config 选项可指定 provision 命令生成的配置文件的位置。此选项的优点是,它允许您跳过大多数其他命令参数,而 CLI 会从配置文件中拉取。这些选项包括:
  • 组织
  • 环境
  • 运行时
  • management
  • 不安全
  • 命名空间
  • 旧版
  • opdk

例如,您可以像下面这样执行 provision 命令:

apigee-remote-service-cli provision --config='old-config.yaml' > new-config.yaml

配置文件

本部分介绍了一个示例配置文件,其中包含所有可用选项。

global:
  temp_dir: /tmp/apigee-istio
  keep_alive_max_connection_age: 10m
  api_address: :5000
  metrics_address: :5001
  tls:
    cert_file: tls.crt
    key_file: tls.key
tenant:
  internal_api: https://istioservices.apigee.net/edgemicro
  remote_service_api: https://org-test.apigee.net/remote-service
  org_name: org
  env_name: env
  key: mykey
  secret: mysecret
  client_timeout: 30s
  allow_unverified_ssl_cert: false
products:
  refresh_rate: 2m
analytics:
  legacy_endpoint: false
  file_limit: 1024
  send_channel_size: 10
  collection_interval: 10s
  fluentd_endpoint: apigee-udca-myorg-test.apigee.svc.cluster.local:20001
  tls:
    ca_file: /opt/apigee/tls/ca.crt
    cert_file: /opt/apigee/tls/tls.crt
    key_file: /opt/apigee/tls/tls.key
    allow_unverified_ssl_cert: false
auth:
  api_key_claim: claim
  api_key_cache_duration: 30m
  api_key_header: x-api-key
  api_target_header: :authority
  reject_unauthorized: true
  jwks_poll_interval: 0s