配置 Bridge to Kubernetes

注意

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

可以使用两种方法配置本地 Bridge to Kubernetes 进程。 可以在群集上批注服务,并提供本地配置。

Kubernetes 配置

Kubernetes 配置 (kubeconfig) 文件默认存储在 ~/.kube/config,但可以使用 KUBECONFIG 环境变量对其进行设置。

如果你使用的是 Visual Studio,则可以在 IDE 中通过使用“调试”属性中的“调试启动配置文件 UI”来编辑 Bridge to Kubernetes 启动配置文件。 请参阅编辑启动配置文件

显示调试启动配置文件 UI 的屏幕截图。

在此处,可以打开以下屏幕,该屏幕提供了编辑一些最常见的配置属性的方法。

屏幕截图,显示编辑一些最常见的 Bridge to Kubernetes 配置文件属性。

防止 Bridge to Kubernetes 转发特定端口

将 Bridge to Kubernetes 配置为忽略将 Kubernetes 服务上的特定端口映射到计算机,方法是在服务上添加 bridgetokubernetes/ignore-ports 注释。

apiVersion: v1
kind: Service
metadata:
  annotations:
    bridgetokubernetes/ignore-ports:445,23

使用 (KubernetesLocalProcessConfig.yaml) 的本地配置

借助 KubernetesLocalProcessConfig.yaml 文件,可以将可用的环境变量和装载的文件复制到群集中的 Pod。 可以在 KubernetesLocalProcessConfig.yaml 文件中指定以下操作:

  • 下载卷并将该卷的路径设置为环境变量。
  • 使群集上运行的服务可供开发计算机上运行的进程使用。
  • 创建具有常量值的环境变量。

不会自动创建默认 KubernetesLocalProcessConfig.yaml 文件,因此必须在项目的根目录中手动创建该文件。

下载卷

在“env”下,为要下载的每个卷指定“name”和“value”。 “name”是将在开发计算机上使用的环境变量。 “value”是卷的名称和开发计算机上的路径。 value 的值采用 $(volumeMounts:VOLUME_NAME)/PATH/TO/FILES 的形式。

例如:

version: 0.1
env:
  - name: ALLOW_LIST_PATH
    value: $(volumeMounts:allow-list)/allow-list

上面的示例从容器下载 allow-list 卷,并设置该位置加上环境变量 ALLOW_LIST_PATH 的路径。 默认行为是将文件下载到开发计算机上的临时目录下指定的路径。 在上面的示例中,ALLOW_LIST_PATH 设置为 /TEMPORARY_DIR/allow-list

注意

当您下载一个卷时,无论设置的路径如何,都会下载该卷的全部内容。 该路径仅用于设置环境变量,以便在开发计算机上使用。 向令牌末尾添加 /allow-list 或 /path/to/files 实际上并不会影响卷的保留位置。 如果应用需要引用该卷内的特定文件,则环境变量只是一种便利。

还可以选择指定一个位置来下载要在开发计算机上装载的卷,而不是使用临时目录。 在 volumeMounts下,为每个特定位置指定 名称localPath。 name 是要匹配的卷名称,localPath 是开发计算机上的绝对路径。 例如:

version: 0.1
volumeMounts:
  - name: default-token-*
    localPath: /var/run/secrets/kubernetes.io/serviceaccount
env:
  - name: KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE
    value: $(volumeMounts:default-token-*)

上面的示例使用 env 中的条目来下载与 default-token-* 匹配的卷,如 default-token-1111 或 default-token-1234-5678-90abcdef。 如果多个卷匹配,则使用第一个匹配卷。 使用 volumeMounts 中的条目将所有文件下载到开发计算机上的 /var/run/secrets/kubernetes.io/serviceaccount 将 KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE 环境变量设置为 /var/run/secrets/kubernetes.io/serviceaccount

使服务可用

在 env 下,为你需要在开发计算机上提供的每个服务指定 name 和 value。 “name”是将在开发计算机上使用的环境变量。 “value”是群集中服务的名称和路径。 value 的值采用 $(services:SERVICE_NAME)/PATH 的形式。

例如:

version: 0.1
env:
  - name: MYAPP1_SERVICE_HOST
    value: $(services:myapp1)/api/v1/

上面的示例使 myapp1 服务可供开发计算机使用,MYAPP1_SERVICE_HOST 环境变量设置为具有 /api/v1 路径(即 127.1.1.4/api/v1myapp1 服务的本地 IP 地址。 使用环境变量 myapp1 或 myapp1.svc.cluster.local 都可以访问 myapp1 服务。

注意

在您的开发计算机上提供服务将使整个服务都可用,而不论您设置的路径。 该路径仅用于设置环境变量,以便在开发计算机上使用。 你还可以通过使用 $(services:SERVICE_NAME.NAMESPACE_NAME)来提供特定 Kubernetes 命名空间中的服务。 例如:

version: 0.1
env:
  - name: MYAPP2_SERVICE_HOST
    value: $(services:myapp2.mynamespace)

上面的示例使 myapp2mynamespace 命名空间可在开发计算机上访问,并将 MYAPP2_SERVICE_HOST 环境变量设置为 mynamespace 命名空间中 myapp2 的本地 IP 地址。

创建具有常量值的环境变量

env下,为要在开发计算机上创建的每个环境变量指定 名称名称 是将在开发计算机上使用的环境变量, 为值。 例如:

version: 0.1
env:
  - name: DEBUG_MODE
    value: "true"

上面的示例创建一个名为 DEBUG_MODE 的环境变量,其值为 true

添加服务依赖项

可以使用泛型依赖项字段指定服务依赖项,例如数据库或缓存,这类似于服务的声明方式。 当您调试的服务需要连接到不在您的群集上运行的资源时,请在此处指定依赖项。 如以下示例所示声明依赖项:

version: 0.1
volumeMounts:
env:
  - name: DB_HOST
    value: $(externalendpoints:server-bridgetest123.database.windows.net:1433)

为依赖项提供主机 DNS 名称(server-bridgetest13.database.windows.net 示例)和端口(1433)。

指定依赖项(如数据库)时,重定向身份验证模型将不起作用。 例如,对于 Azure SQL 数据库,应将连接策略设置为“代理”(而不是“重定向”或“默认”)。

示例 KubernetesLocalProcessConfig.yaml

下面是完整 KubernetesLocalProcessConfig.yaml 文件的示例:

version: 0.1
volumeMounts:
  - name: default-token-*
    localPath: /var/run/secrets/kubernetes.io/serviceaccount
env:
  - name: KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE
    value: $(volumeMounts:default-token-*)
  - name: ALLOW_LIST_PATH
    value: $(volumeMounts:allow-list)/allow-list
  - name: MYAPP1_SERVICE_HOST
    value: $(services:myapp1)/api/v1/
  - name: MYAPP2_SERVICE_HOST
    value: $(services:myapp2.mynamespace)
  - name: DEBUG_MODE 
    value: "true"

后续步骤

若要开始使用 Bridge to Kubernetes 将本地开发计算机连接到群集,请参阅将 Bridge to Kubernetes 与 Visual Studio Code 配合使用将 Bridge to Kubernetes 与 Visual Studio 配合使用