設定 Bridge to Kubernetes
注意
Bridge to Kubernetes 將於 2025 年 4 月 30 日淘汰。 如需淘汰和開放原始碼替代方案的詳細資訊,請參閱 GitHub 問題。
您可以使用兩種方法來設定本機 Bridge to Kubernetes 進程。 您可以在叢集上標註服務,並提供本機設定。
Kubernetes 組態
Kubernetes 組態 (kubeconfig) 檔案預設儲存在 ~/.kube/config
,但您可以使用 KUBECONFIG 環境變數加以設定。
如果您使用 Visual Studio,您可以使用偵錯屬性中的 偵錯啟動設定檔 UI,在 IDE 中編輯 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下,為您想要下載的每個磁碟區指定一個 名稱 和一個 值。 名稱 是將在開發計算機上使用的環境變數。 值 是您開發電腦上的磁碟區名稱和路徑。 的值 以格式 為 $(volumeMounts:VOLUME_NAME)/PATH/TO/FILES。
例如:
version: 0.1
env:
- name: ALLOW_LIST_PATH
value: $(volumeMounts:allow-list)/allow-list
此範例會從容器中下載 允許清單 卷,並將其位置與路徑設置到環境變數 ALLOW_LIST_PATH。 默認行為是將檔案下載到您在開發電腦上的暫存目錄下指定的路徑。 在上述範例中,ALLOW_LIST_PATH 設定為 /TEMPORARY_DIR/allow-list
。
注意
不論您設定的路徑為何,下載磁碟區都會下載該磁碟區的整個內容。 路徑只會用來設定環境變數,以供開發計算機上使用。 將 /allow-list 或 /path/to/files 新增至令牌結尾,實際上不會影響磁碟區保存的位置。 如果您的應用程式需要該磁碟區內特定檔案的參考,則環境變數只是一種便利性。
您也可以選擇指定要在開發計算機上下載磁碟區掛接的位置,而不是使用暫存目錄。 在 volumeMounts下,為每個特定位置指定 名稱 和 localPath。 名稱 是您想要比對的磁碟區名稱,而 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。 如果有多個磁碟區相符,則會使用第一個相符的磁碟區。 所有檔案將會透過 /var/run/secrets/kubernetes.io/serviceaccount
中的項目,下載到您的開發電腦上的 。
KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE 環境變數會設定為 /var/run/secrets/kubernetes.io/serviceaccount
。
讓服務可供使用
在 env下,針對您想要在開發計算機上提供的每個服務,指定 名稱 和 值。 名稱 是將在開發計算機上使用的環境變數。 值 是您叢集和路徑中的服務名稱。 的值 會以 $(services:SERVICE_NAME)/PATH的形式呈現。
例如:
version: 0.1
env:
- name: MYAPP1_SERVICE_HOST
value: $(services:myapp1)/api/v1/
上述範例會讓 myapp1 服務可供開發計算機使用,而 MYAPP1_SERVICE_HOST 環境變數會設定為具有 路徑的 /api/v1
服務的本機 IP 位址(也就是 127.1.1.4/api/v1
)。
myapp1 服務可以使用環境變數、myapp1或 myapp1.svc.cluster.local來存取。
注意
無論您設定的路徑為何,在您的開發計算機上提供服務,都會讓整個服務可供使用。 路徑只會用來設定環境變數,以供開發計算機上使用。 您也可以從特定的 Kubernetes 命名空間使用 $(services:SERVICE_NAME.NAMESPACE_NAME)使服務可用。 例如:
version: 0.1
env:
- name: MYAPP2_SERVICE_HOST
value: $(services:myapp2.mynamespace)
上述範例會使命名空間 mynamespace 中的 myapp2 在您的開發計算機上可用,並將環境變數 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 Database,您應該將連線原則設定為 “Proxy” (而不是 “Redirect” 或 “Default”。
範例 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 將本機開發電腦連線至叢集,請參閱 在 Visual Studio Code 上使用 Bridge to Kubernetes 和 在 Visual Studio 上使用 Bridge to Kubernetes。