新增授權網路以存取叢集主要執行個體

本頁說明如何授予授權網路權限,以存取 Google Kubernetes Engine 叢集中的叢集主要執行個體。如需 GKE 網路的一般相關資訊,請造訪網路總覽頁面。

總覽

「授權網路」可讓您將特定 CIDR 範圍加入許可清單,並允許這些範圍內的 IP 位址使用 HTTPS 存取您的叢集主要執行個體端點。授權網路與所有叢集都相容。

GKE 使用傳輸層安全標準 (TLS) 和驗證機制,以確保從公開網際網路存取叢集主要執行個體端點的安全,可讓您自由選擇要從哪個位置來管理叢集。您可以透過授權網路進一步限制特定 IP 位址的存取權。

優點

新增授權網路可以為您的叢集提供多一層的安全保護。授權網路會將存取權授予一組您指定的特定位址,例如來自您環境的位址。這樣的做法可在叢集的驗證或授權機制出現安全漏洞時,有效保護叢集的存取安全。

私人叢集的優點

私人叢集會執行沒有外部 IP 位址的節點,以及在沒有可公開存取的端點情況下視需要執行叢集主要執行個體。此外,私人叢集預設不允許 GCP IP 位址存取叢集主要執行個體端點。搭配授權網路使用私人叢集時,只有加入許可清單的 CIDR、叢集虛擬私人雲端 (VPC) 中的節點,以及管理主要執行個體的 Google 內部生產工作可連上叢集主要執行個體。

限制

  • 一個叢集最多可有 20 個授權網路 CIDR 範圍。

事前準備

如要準備這項工作,請執行下列步驟:

  • 確認您已啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 確認您已安裝 Cloud SDK
  • 設定預設的專案 ID
    gcloud config set project [PROJECT_ID]
  • 如果您使用區域叢集,請設定預設的運算區域
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 如果您使用地區叢集,請設定預設的運算地區
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud 更新到最新版本:
    gcloud components update

建立具有授權網路的叢集

您可以使用 gcloud 指令列工具或 [Google Cloud Platform 主控台] 建立具有一或多個授權網路的私人叢集。

gcloud

執行下列指令:

gcloud container clusters create [CLUSTER_NAME] \
    --enable-master-authorized-networks \
    --master-authorized-networks [CIDR],[CIDR]...

透過 --master-authorized-networks 標記,您最多可以指定 20 個以逗點分隔的 CIDR (如 8.8.8.0/24),以授予這些位址可透過 HTTPS 存取叢集主要執行個體端點的權限。

例如:

gcloud container clusters create example-cluster \
    --enable-master-authorized-networks \
    --master-authorized-networks 8.8.8.8/32,8.8.8.0/24

主控台

  1. 造訪 GCP 主控台的 Google Kubernetes Engine 選單。

    造訪 Google Kubernetes Engine 選單

  2. 按一下 [建立叢集]

  3. 視需要設定您的叢集。然後按一下 [進階選項]

  4. 在「網路安全性」區段中,選取 [啟用主要授權網路]

  5. 按一下 [新增授權網路]

  6. 在「名稱」中,填入需要的網路名稱。

  7. 在「網路」中填入您要授予叢集主要執行個體許可存取權的 CIDR 範圍。

  8. 按一下 [完成]。視需要新增額外的授權網路。

  9. 按一下選單底部的 [建立]

API

在叢集 create 要求中指定 masterAuthorizedNetworksConfig 物件:

"masterAuthorizedNetworksConfig": {
  "enabled": true,
  "cidrBlocks": [
  {
      "displayName": string,
      "cidrBlock": string
  }
]
}

詳情請參閱 MasterAuthorizedNetworksConfig

建立具有授權網路的私人叢集

如要瞭解如何建立具有一或多個授權網路的私人叢集,請參閱私人叢集

將授權網路新增至現有的叢集

您可以使用 gcloud 指令列工具或 [GCP 主控台],將授權網路新增至現有的叢集。

gcloud

執行下列指令:

gcloud container clusters update [CLUSTER_NAME] \
    --enable-master-authorized-networks \
    --master-authorized-networks [CIDR],[CIDR]...

透過 --master-authorized-networks 標記,您最多可以指定 20 個以逗點分隔的 CIDR (如 8.8.8.0/24),以授予這些位址可透過 HTTPS 存取叢集主要執行個體端點的權限。

例如:

gcloud container clusters update example-cluster \
    --enable-master-authorized-networks \
    --master-authorized-networks 8.8.8.8/32,8.8.8.0/24

主控台

  1. 造訪 GCP 主控台的 Google Kubernetes Engine 選單。

    造訪 Google Kubernetes Engine 選單

  2. 選取需要的叢集。

  3. 按一下 [編輯]

  4. 在「主要授權網路」下拉式選單中,選取 [已啟用] (如果尚未啟用)。

  5. 按一下 [新增授權網路]

  6. 在「名稱」中,填入需要的網路名稱。

  7. 在「網路」中填入您要授予叢集主要執行個體許可存取權的 CIDR 範圍。

  8. 按一下 [完成]。視需要新增額外的授權網路。

  9. 按一下選單底部的 [儲存]

API

在叢集 update 要求 中指定 desiredMasterAuthorizedNetworksConfig 欄位。在該欄位中指定 MasterAuthorizedNetworksConfig 物件:

"desiredMasterAuthorizedNetworksConfig": {
    object(MasterAuthorizedNetworksConfig)
  }

確認授權網路

您可以使用 gcloud 指令列工具或 [GCP 主控台] 驗證現有叢集中的授權網路。

gcloud

執行下列指令:

gcloud container clusters describe [CLUSTER_NAME]

在指令輸出中,找出 masterAuthorizedNetworksConfig 欄位:

  ...
masterAuthorizedNetworksConfig:
  cidrBlocks:
  - cidrBlock: 8.8.8.8/32
  - cidrBlock: 8.8.4.4/32
  enabled: true
  ...

主控台

  1. 造訪 GCP 主控台的 Google Kubernetes Engine 選單。

    造訪 Google Kubernetes Engine 選單

  2. 選取需要的叢集。

「主要授權網路」欄位會顯示加入許可清單的 CIDR。

API

傳送 get 要求。尋找 masterAuthorizedNetworksConfig 欄位下的 CIDR 區塊。例如:

"masterAuthorizedNetworksConfig": {
"enabled": true,
"cidrBlocks": [
  {
    "displayName": "Office",
    "cidrBlock": "192.0.2.0/24"
  }
]
}

停用授權網路

您可以使用 gcloud 或 [GCP 主控台] 停用現有叢集的授權網路。

gcloud

執行下列指令:

gcloud container clusters update [CLUSTER_NAME] \
--no-enable-master-authorized-networks

主控台

  1. 造訪 GCP 主控台的 Google Kubernetes Engine 選單。

    造訪 Google Kubernetes Engine 選單

  2. 選取需要的叢集。

  3. 按一下 [編輯]

  4. 在「主要授權網路」下拉式選單中,選取 [Disabled](已停用)

  5. 按一下 [儲存]

疑難排解

下列各節說明如何解決授權網路的常見問題。

CIDR 區塊過多

gcloud 嘗試建立或更新的叢集具有超過 20 個 CIDR 區塊時,會傳回下列錯誤:

ERROR: (gcloud.container.clusters.update) argument --master-authorized-networks: too many args

如要解決這個問題,請確保指定的 CIDR 區塊少於 20 個。

無法連線至主要執行個體

kubectl 指令因 CIDR 區塊設定錯誤而發生逾時:

Unable to connect to the server: dial tcp MASTER_IP: getsockopt: connection timed out

當您建立或更新叢集時,請確保指定正確的 CIDR 區塊

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件