在 AKS 中使用 Bridge to Kubernetes
注意
Microsoft 计划不再积极维护 Bridge to Kubernetes 项目。 在接下来的几个月里,我们将项目转换为存档状态。 与此同时,该项目仍然可以使用和下载。 在此期间,我们希望探索并推荐能够提供与 Bridge to Kubernetes 类似好处的社区项目,供你将来使用。 如果你有任何疑问,请在 GitHub 的问题面板上与我们联系。
在本教程中,你将使用特定的 AKS 示例微服务 Web 应用来了解如何使用 Bridge to Kubernetes 在属于 Azure Kubernetes 服务 (AKS) 群集的单个 Pod 中进行本地调试。
开始之前
本指南使用 Todo App 示例应用程序来演示如何将开发计算机连接到 AKS 中运行的 Kubernetes 群集。 如果你已在 Kubernetes 群集上运行自己的应用程序,请参阅使用 Kubernetes 进行开发。 如果你使用的是另一个群集,例如在本地运行的 MiniKube,请参阅通过示例来使用 Bridge to Kubernetes。
必备条件
- Azure 订阅。 如果没有 Azure 订阅,可以创建一个免费帐户。
- 已安装 Azure CLI。
- 在 macOS、Windows 10 或 Linux 上运行的 Visual Studio Code。
- 已在 Visual Studio Code 中安装 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 节点,然后选择“使用命名空间”。
接下来,配置网桥:打开命令面板(CTRL+SHIFT+P 或 Cmd+Shift+P (Mac)),并键入 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 的开发计算机。
通过之前找到的外部 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 工作原理。