在 AKS 中使用 Bridge to Kubernetes

在本教程中,你将使用特定的 AKS 示例微服务 Web 应用来了解如何使用 Bridge to Kubernetes 在属于 Azure Kubernetes 服务 (AKS) 群集的单个 Pod 中进行本地调试。

开始之前

本指南使用 Todo App 示例应用程序来演示如何将开发计算机连接到 AKS 中运行的 Kubernetes 群集。 如果你已在 Kubernetes 群集上运行自己的应用程序,请参阅使用 Kubernetes 进行开发。 如果你使用的是另一个群集,例如在本地运行的 MiniKube,请参阅通过示例来使用 Bridge to Kubernetes

必备条件

创建 Kubernetes 群集

支持的区域中创建 AKS 群集。 以下命令创建一个名为 MyResourceGroup 的资源组,以及一个名为 MyAKS 的 AKS 群集。

az group create \
    --name MyResourceGroup \
        --location eastus
az aks create \
    --resource-group MyResourceGroup \
    --name MyAKS \
    --location eastus \
    --node-count 3 \
    --generate-ssh-keys

安装示例应用程序

下载代码并安装依赖项

git clone https://github.com/hsubramanianaks/b2k-samples
cd b2k-samples/todo-app
npm install stats-api\

连接到群集并部署应用

在开发计算机上,下载并配置 Kubernetes CLI 以使用 az aks get-credentials 连接到 Kubernetes 群集。

az aks get-credentials --resource-group MyResourceGroup --name MyAKS
kubectl create namespace todo-app
kubectl config set-context --current --namespace=todo-app
kubectl apply -f deployment.yaml --namespace todo-app

试用应用

在之前使用的终端上,运行以下命令,并在外部 IP 列下复制前端服务的 IP。

kubectl get services

若要试用应用,请打开 url:{your external IP from above command goes here}.nip.io

调试 stats-api 服务

在之前使用的终端上,键入以下命令,以在 VS Code 中打开 stats-api。

code ./stats-api

首先,在 server.js 的第 17 行上放置一个断点。

然后,确保将 todo-app 群集中的 MyAKS 命名空间设为默认(如果它旁边有 *)。 如果未设置为默认,请右键单击 todo-app 节点,然后选择“使用命名空间”。

显示“Bridge to Kubernetes”命名空间的屏幕截图。

接下来,配置网桥:打开命令面板(CTRL+SHIFT+P 或 Cmd+Shift+P (Mac)),并键入 Bridge to Kubernetes。 选择“Bridge to Kubernetes: 配置”选项。

显示“Bridge to Kubernetes”配置命令窗口的屏幕截图。

系统将提示你配置要替换的服务、要从开发计算机转发的端口,以及要使用的启动任务。

选择 stats-api 服务。

显示“选择要连接的服务”窗口的屏幕截图。

重要

只能重定向仅有一个 pod 的服务。

选择服务后,系统会提示你输入本地应用程序的 TCP 端口。 在本例中,输入 3001。

显示“输入端口号”窗口的屏幕截图。

选择“运行脚本: 开发”作为启动任务。

显示“选择调试程序启动任务”窗口的屏幕截图。

可以选择在隔离或非隔离模式下运行。 如果在隔离模式下运行,则只有你的请求被路由到你的本地进程;其他开发人员可以使用群集而不受影响。 如果在非隔离模式下运行,则所有流量都被重定向到本地进程。 有关此选项的详细信息,请参阅使用路由功能进行独立开发。 在本例中,我们将继续使用非隔离模式。 如果选择了隔离,task.json 具有将请求路由到计算机所应使用的前缀。

显示“选择隔离选项”窗口的屏幕截图。

注意

在后续启动时,只需单击调试图标,无需完成此设置,也不会被提示输入服务名称、端口、启动任务或是否隔离运行。 这些值都保存在 .vscode/tasks.json 中。 若要稍后更改这些设置,请打开命令面板(CTRL+SHIFT+P 或 Cmd+Shift+P (Mac)),然后运行命令“Bridge to Kubernetes: 配置”。

Bridge to Kubernetes 调试配置文件就已经配置成功了。

若要开始调试,请选择左侧的“调试”图标,然后选择“运行脚本: 使用 Kubernetes 开发”。 单击“运行脚本: 使用 Kubernetes 开发”旁边的“开始”按钮。

显示“选择调试启动配置文件”窗口的屏幕截图。

注意

系统将提示你允许 EndpointManager 在提升的权限下运行并修改主机文件。

当 VS Code 状态栏变为橙色且 Kubernetes 扩展显示已连接时,表示你的开发计算机已连接。 连接开发计算机后,流量将开始重定向到你要替换的 stats-api 的开发计算机。

显示“选择使用 Bridge to Kubernetes 进行调试”窗口的屏幕截图。

通过之前找到的外部 IP {your external IP from get services command}.nip.io 导航到应用程序的前端入口点。 请注意,如果选择隔离模式,则需要使用 {your prefix - can be found in task.json}.{your external IP from get services command}.nip.io

通过选择“统计信息”链接向 stats-api 发出请求。

显示“选择正在运行的网站 - 选择状态链接”的屏幕截图。

请注意,最初在群集中启动的流量已重定向到在其中触发了断点的本地运行的版本(在群集外)。

按下“播放”,让请求以透明的方式继续完成。

清理

停用调试程序时会还原对群集的所有更改。 请注意,如果在启用了隔离的情况下运行,路由管理器 pod 将保留,以便下次快速启动调试程序。

可以将 AKS 群集保持为开启状态以便后续调试,也可以使用以下命令将其删除。

az aks delete --name MyAKS --resource-group MyResourceGroup

后续步骤

若要详细了解 Bridge to Kubernetes,请参阅 Bridge to Kubernetes 工作原理