設定 Bridge to Kubernetes

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

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