您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
简介
本主题介绍如何在 Kubernetes 集群中将 Edge Microgateway 作为独立服务运行。
如需了解详情,请参阅将 Edge Microgateway 与 Kubernetes 集成概览。
准备工作
完成前提条件中所述的步骤。
配置 Edge Microgateway
以下命令会为您的 Apigee 组织配置 Edge Microgateway 并部署代理 edgemicro-auth
。
执行以下命令:
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 部署为服务
执行以下命令,以便在 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
将以下代码复制并粘贴到终端中。该代码会设置 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
服务。
部署示例
helloworld
服务。由于 Ingress 不知道此服务,因此无法从集群外部调用此服务。kubectl apply -f samples/helloworld/helloworld-service.yaml
输出示例:
service "helloworld" created deployment "helloworld" created
验证部署是否成功。请注意,
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 地址
获取
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
复制
CLUSTER-IP
和PORT
的值。例如,在上面的示例中,这些值为10.55.254.255
和8081
。您系统的值会有所不同。
在 Edge 上创建 Microgateway 感知代理
- 登录 Edge 界面。
- 选择您之前在配置 Edge Microgateway 时指定的组织。
- 在侧边导航菜单中,依次选择开发 > API 代理。
- 点击 + 代理。系统会打开“构建代理”向导。
- 在向导的第一个页面中,选择反向代理(最常见)。
- 点击下一步。
在向导的“详细信息”页面中,按如下方式进行配置。请务必完全按照显示的内容填写向导。请确保代理名称带有前缀
edgemicro_
。- 代理名称:edgemicro_hello
代理基本路径:/hello
现有 API:
http://<cluster_ip>:<port>
例如:http://10.55.254.255:8081
点击下一步。
在向导的“安全”页面中,选择直通(无)。
点击下一步。
在向导的“虚拟主机”页面中,接受默认值。
点击下一步。
在向导的“Build”页面中,查看您的代理设置。确保选择 test 环境。
点击构建和部署。
创建开发者
您可以使用现有开发者进行测试,也可以按如下步骤创建新的开发者:
- 在侧边导航菜单中选择发布 > 开发者。
- 点击 + 开发者。
- 填写对话框以创建新开发者。您可以根据需要使用任何开发者名称/电子邮件。
创建 API 产品
按照以下说明创建 API 产品。您将向该产品添加两个代理:edgemicro-auth 和 edgemicro_hello。
如需详细了解产品配置选项,请参阅 API 产品配置须知。
- 在侧边导航菜单中选择发布 > API 产品。
- 点击 + API 产品。系统随即会显示“商品详情”页面。
根据下表填写“产品详情”页面。在系统提示保存之前请勿点击“保存”。
名称 hello-world-product
显示名称 Edge Micro hello product
环境 test
访问 Public
密钥审批类型 Automatic
在页面下半部分,点击 + 自定义资源。
将资源设置为
/
(一个斜线)。再次选择 + 自定义资源,然后添加路径
/**
。在页面底部,点击 + API 代理。
选择名为 edgemicro-auth 的代理。
再次点击 + API 代理。
选择名为 edgemicro_hello 的微网关感知代理。
点击保存。
创建开发者应用
- 在侧边导航菜单中选择发布 > 应用。
- 点击 + 应用。系统随即会显示“开发者应用详情”页面。
根据下表填写开发者应用页面。在系统提示保存之前请勿保存。
名称 hello-world-app
显示名称 Edge Micro hello app
开发者 选择您创建的测试开发者或任何开发者即可。 在“凭据”部分,点击 + 产品,然后选择您创建的产品:
hello-world-product.
点击保存。
您会返回到列出所有开发者应用的页面。
选择您刚刚创建的应用
hello-world-app
。点击使用方密钥旁边的显示。
复制使用方密钥的值。此值是您将用于对
/hello
进行安全 API 调用的 API 密钥。请稍等几分钟。您对 Apigee Edge 所做的更改需要几分钟才能与部署在集群中的 Edge Microgateway 实例同步。
测试代理
获取 Ingress IP 地址
借助 Ingress 的外部 IP 地址,您可以从集群外部调用 Edge Microgateway 服务。
获取 Ingress 控制器的外部 IP 地址:
kubectl get ing -o wide
输出示例:
NAME HOSTS ADDRESS PORTS AGE edge-microgateway-ingress * 35.238.249.62 80 37m
复制 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:]")
验证是否已导出变量。例如:
echo $GATEWAY_IP
输出示例:
35.238.249.62
调用该 API
将配置更改拉取到微网关后,您可以尝试调用 API。您使用 Ingress 控制器 IP(已保存在变量 GATEWAY_IP
中)调用 API,因为此 IP 可让您从 Kubernetes 集群外部调用代理。在您将 Edge Microgateway 部署到集群时,系统会创建从 Ingress 到 Edge Microgateway 的映射。
在没有 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 密钥。
从您创建的开发者应用中获取使用方密钥。此值是您调用测试代理所需的 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 服务。
后续操作
如需了解如何添加自定义插件、扩缩部署、进行配置更改以及执行您可能希望执行的其他任务,请参阅任务部分。