您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档。 信息
简介
本主题介绍如何在 Kubernetes 集群中将 Edge Microgate 作为辅助信息文件代理运行。Sidecar 部署有两种方法:手动注入和自动注入。本主题介绍了这两种方式。
如需了解详情,请参阅 Kubernetes 上的 Edge Microgate 简介。
准备工作
完成前提条件中所述的步骤。
部署测试服务
部署一个简单的“hello”服务并验证部署:
部署该示例:
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
验证服务正在运行。您可能需要等待片刻,直到 Pod 启动到运行状态:
kubectl get pods --namespace=default
输出示例:
NAME READY STATUS RESTARTS AGE helloworld-569d6565f9-lwrrv 1/1 Running 0 17m
删除测试服务部署。您将在启用 Sidecar 注入后重新安装:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
使用手动 Sidecar 注入
在两种 Sidecar 注入选项中,手动 Sidecar 注入是更简单、更直接的方法,可通过单个 kubectl
命令完成。
配置 Edge Microgate
以下命令为您的 Apigee 组织配置 Edge Microgate,并部署代理 edgemicro-auth
。
执行以下命令:
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 Microgate 注入为 Sidecar
如需将 Edge Microgate 作为 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)
测试配置
检查服务部署:
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
现在,您可以测试 Edge Microgate 的 Sidecar 部署了。如需了解详细步骤,请转到测试代理。
使用自动 Sidecar 注入
在以下步骤中,您将为 Kubernetes 集群配置自动 Sidecar 注入功能。此设置允许将 Edge Microgate 作为 Sidecar 代理注入 Kubernetes。
安装 Sidecar 注入器
安装用于启用 Edge Microgate 的 Sidecar 注入的 ConfigMap:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
执行以下脚本,以安装 webhook 服务。如需自动 Sidecar 注入,必须使用网络钩子服务:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certs
将 CA 软件包添加到网络钩子安装文件中。Kubernetes API 服务器使用此文件调用 webhook:
cat install/kubernetes/edgemicro-sidecar-injector.yaml | \ ./install/kubernetes/webhook-patch-ca-bundle.sh > \ install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
安装 Edge Microgate 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
验证 Edge Microgate 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
验证 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 Microgate
在下一步中,您将运行交互式脚本,以创建与 Kubernetes 命名空间关联的 Edge Microgate 配置。然后,将配置注入 Kubernetes 集群中。
运行以下交互式脚本并提供请求的参数。该命令会生成您在下一步中使用的配置文件。
./install/kubernetes/webhook-edgemicro-patch.sh
如需了解输入参数,请参阅参考文档。
输入示例:
Namespace to deploy application [default]:
按 Enter 键。
Authenticate with OAuth Token ("n","Y") [N/y]
输入 n。
Apigee username [required]:
输入您的 Apigee 用户名(电子邮件地址)。例如:
jdoe@google.com
。Apigee password [required]:
输入您的 Apigee 密码。
Apigee organization [required]:
输入您的 Apigee 组织名称。
Apigee environment [required]:
输入贵组织的环境名称。例如“test”。
Virtual Host [default]:
按 Enter 键。
Is this Private Cloud ("n","y") [N/y]:
如果您在公有云上,请输入 n。
Edgemicro Key. Press Enter to generate:
按 Enter 键。
Edgemicro Secret. Press Enter to generate:
按 Enter 键。
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. *****************************************************************************************
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 ********************************************************************************************************
执行输出最后一行中提供的命令。此
kubectl
命令会将生成的 Edge Microgate 配置文件注入 Kubernetes:kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
查看 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
运行以下命令,为 webhook 启用 webhook 注入:
kubectl label namespace default edgemicro-injection=enabled
请再次查看 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 Microgate 将自动注入服务的 Pod 中。
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
确认 Edge Microgate 是否已与测试服务一起注入到 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 Microgate 的自动 Sidecar 部署了。如需了解详细步骤,请转到测试代理。
测试代理
通过 Sidecar 部署,系统会自动为您的服务创建 API 代理。您无需创建“Edge Microgate-aware”代理。
获取 Ingress IP 地址
使用 Ingress 的外部 IP 后,您可以从集群外部调用该服务。
获取 Ingress 控制器的外部 IP 地址:
kubectl get ing -o wide
输出示例:
NAME HOSTS ADDRESS PORTS AGE gateway * 35.238.13.54 80 1m
复制 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:]")
验证变量是否已导出。例如:
echo $GATEWAY_IP
输出示例:
35.238.249.62
调用该服务:
curl $GATEWAY_IP
输出:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
接下来,您将通过在 Edge 上配置 API 产品和开发者应用来解决缺少授权错误,以便获得有效的 API 密钥。将密钥添加到 API 调用的授权标头后,调用会成功,而您不会看到此错误。
在 Apigee Edge 上创建组件
接下来,在 Apigee Edge 上创建 API 产品和开发者应用。
创建 API 产品
- 登录 Apigee Edge。
- 在侧边导航菜单中选择发布 > API 产品。
- 点击 + API 产品。商品页面随即显示。
在“产品”页面中填写相应信息,如下所示。对于下文未提及的字段,您可以使用默认值。除非收到指示,否则请勿保存。
名称 hello-world-product
显示名 Edge Micro hello product
环境 test
在“路径”部分中,点击 + 自定义资源。
添加路径
/
。再次点击 + 自定义资源,然后添加路径
/**
。在“API 代理”部分中,点击 + API 代理,然后添加 edgemicro-auth。
保存 API 产品。
创建开发者应用
- 在侧边导航菜单中选择应用。
- 点击 + 应用。系统随即会显示“开发者应用详情”页面。
根据下表填写开发者应用页面。除非收到指示,否则请勿保存。
名称 hello-world-app
显示名 Edge Micro hello app
开发者 从下拉菜单中选择开发者。 在“凭据”部分中,点击 + 产品,然后选择您刚刚创建的
hello-world-product
。点击保存。
您将返回到列出所有开发者应用的页面。
选择您刚刚创建的应用
hello-world-app
。点击 Consumer Key 旁边的 Show。
复制使用方键值的值。此值是用于对
helloworld
服务进行安全的 API 调用的 API 密钥。请稍等几分钟。您在 Apigee Edge 上所做的更改需要几分钟时间才能与集群中部署的 Edge Microgate 实例同步。
调用该 API
将配置更改提取到微网关后,您可以执行以下测试。
在不使用 API 密钥的情况下调用该 API。您会收到一条错误消息,如下所示:
curl $GATEWAY_IP
预期输出:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
要成功进行 API 调用,您需要 API 密钥。
从您创建的开发者应用中获取使用方密钥。此值是调用测试代理所需的 API 密钥:
curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP
例如:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP
输出:
Hello world
部署到 pod 的 Queue 服务会返回“Hello world”响应。对该服务的调用首先通过 Edge Microgate(执行身份验证)进行传递。如果您看到“Hello world”响应,则表示您已成功将 Edge Microgate 配置为在 Avro 服务 Pod 中充当辅助信息文件代理。
后续操作
如需了解如何添加自定义插件、扩缩部署、进行配置更改以及您希望执行的其他任务,请参阅任务部分。