共用方式為


設定 Bridge to Kubernetes

注意

Microsoft計劃不再主動維護 Kubernetes 專案的 Bridge。 在接下來的幾個月里,我們將將項目轉換為封存狀態。 同時,專案仍可供使用和 下載。 在此期間,我們希望探索並建議社群專案,這些專案提供與 Bridge to Kubernetes 類似的優點,以供您日後使用。 如果您有問題,請在 GitHub 的問題面板上與我們連絡。

您可以使用兩種方法來設定本機 Bridge to Kubernetes 流程。 您可以在叢集上標註服務,並提供本機設定。

Kubernetes 設定

Kubernetes 組態 (kubeconfig) 檔案預設儲存在 ~/.kube/config,但使用 KUBECONFIG 環境變數即可設定。

如果您使用的是 Visual Studio,使用偵錯屬性中的偵錯啟動設定檔 UI,即可在 整合式開發環境 (IDE) 編輯 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 下,為您想要下載的每個磁碟區指定 namevaluename 是環境變數,會在您的開發電腦上使用。 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下,為每個特定位置指定 namelocalPathname 是您想要相符的磁碟區名稱,而 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-1111default-token-1234-5678-90abcdef。 如果有多個磁碟區相符,則會使用第一個相符的磁碟區。 所有檔案都會使用 volumeMounts 中的項目下載到開發電腦上的 /var/run/secrets/kubernetes.io/serviceaccountKUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE 環境變數會設為 /var/run/secrets/kubernetes.io/serviceaccount

讓服務可供使用

env下,為您想要在開發電腦上提供的每項服務指定 namevaluename 是環境變數,會在您的開發電腦上使用。 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 路徑之 myapp1 服務的本機 IP 位址 (亦即 127.1.1.4/api/v1)。 您可以使用環境變數、myapp1myapp1.svc.cluster.local 來存取 myapp1 服務。

注意

無論您設定的路徑為何,在您的開發電腦上提供服務都會讓所有服務可供使用。 路徑只會用來設定環境變數,以供開發電腦上使用。 您也可以透過 $(services:SERVICE_NAME.NAMESPACE_NAME),使特定 Kubernetes 命名空間中的服務可供使用。 例如:

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

上述範例會使 mynamespace 命名空間中的 myapp2 可在您的開發電腦上使用, ,並將 MYAPP2_SERVICE_HOST 環境變數設為 mynamespace 命名空間之 myapp2 中的本機 IP 位址。。

建立具有常數值的環境變數

env下,為您想要在開發電腦上建立的每個環境變數指定 namevaluename 是環境變數,會在您的開發電腦上使用,而 value 就是值。 例如:

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」(而不是「重新導向」或「預設」)。

範例 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