将 Bridge to Kubernetes 与 AKS 配合使用

注意

Bridge to Kubernetes 将于 2025 年 4 月 30 日停用。 有关停用和开源替代项的详细信息,请参阅 GitHub 问题

在本教程中,你将使用特定的 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 中打开统计信息 API。

code ./stats-api

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

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

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

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

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

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

选择 stats-api 服务。

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

重要

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

选择服务后,系统会提示输入本地应用程序的 TCP 端口。 对于此示例,请输入 3001。

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

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

显示选择调试器启动任务窗口的屏幕截图。

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

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

注意

在后续启动时,只需单击调试图标,无需完成此设置,也不会被提示输入服务名称、端口、启动任务或是否隔离运行。 这些值保存在 .vscode/tasks.json中。 若要稍后更改这些设置,请打开命令面板(CTRL+SHIFT+PCmd+Cmd+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 工作原理