標準 Google Cloud 用戶端可讓您建立管理員叢集,管理使用者叢集的生命週期。 Google Cloud 控制台和 Google Cloud CLI (gcloud CLI) 都會呼叫 GKE On-Prem API 來佈建叢集。
什麼是 GKE On-Prem API?
GKE On-Prem API 是 Google Cloud代管的 API,可讓您使用 Terraform 和標準Google Cloud 應用程式,管理地端部署叢集的生命週期。GKE On-Prem API 會在 Google Cloud的基礎架構中執行。Terraform、控制台和 gcloud CLI 都是 API 的用戶端,會使用 API 在資料中心建立叢集。
如要管理叢集的生命週期,GKE On-Prem API 必須使用您在建立叢集時指定的Google Cloud 區域,將叢集狀態的中繼資料儲存在 Google Cloud中。API 會使用這項中繼資料管理叢集生命週期,不含工作負載專屬資料。
使用 GKE On-Prem API 用戶端建立叢集時,您必須指定Google Cloud 專案。叢集建立後,會自動註冊至指定專案的機群。這項專案稱為機群主專案。叢集建立後,即無法變更機群主專案。
您也可以建立管理員叢集設定檔,並使用 bmctl 建立管理員叢集,詳情請參閱「建立管理員叢集」。
如要使用控制台或 gcloud CLI 管理透過 bmctl 建立的叢集生命週期,請參閱「設定由 GKE On-Prem API 管理的叢集」。
IAM 權限
如果您不是 Google Cloud 專案擁有者,必須由專案擁有者授予下列角色:
如要存取控制台中的 Google Kubernetes Engine 頁面,您也必須具備 roles/container.viewer。
如要瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
指令列存取權
叢集建立完成後,如要使用連結閘道,在管理員工作站以外的電腦上對叢集執行 kubectl 指令,請在要使用的電腦上安裝下列指令列工具。
最新版 gcloud CLI。
kubectl:用於對 Kubernetes 叢集執行指令。如需安裝kubectl,請按照這些操作說明進行。
選擇要用來建立管理員叢集的用戶端
您可以使用控制台或 gcloud CLI,建立由 GKE On-Prem API 管理的管理員叢集。如果這是您第一次安裝 Distributed Cloud 軟體 (僅限裸機),可能會發現控制台比 gcloud CLI 更容易使用。
熟悉建立叢集時需要提供的資訊後,您可能會發現 gcloud CLI 更方便,因為您可以將指令及其引數儲存至文字檔。如果您使用 CI/CD 工具 (例如 Cloud Build),可以使用 gcloud 指令建立叢集,並指定 --impersonate-service-account 旗標來自動建立。
必要條件
控制台
在控制台中,前往「Create a bare metal cluster」(建立裸機叢集) 頁面。
選取要建立叢集的 Google Cloud 專案。所選專案也會做為機群主專案。
「Prerequisites」(必要條件) 頁面會顯示管理員工作站和叢集節點機器的需求條件。「網路需求」一節中的 IP 位址規劃工具,可協助您規劃安裝一個管理員叢集和一個使用者叢集所需的最少 IP 位址。
設定管理員工作站的必要步驟
展開這個部分,即可查看管理員工作站的硬體、作業系統和連線能力需求。
設定叢集節點機器的必要步驟
展開這個部分,即可查看叢集節點機器的硬體、作業系統和連線能力需求。
網路需求
本節可協助您規劃最精簡環境所需的 IP 位址。您也可以在「Node IP and Virtual IP addresses」(節點 IP 和虛擬 IP 位址) 區段中,提供起始節點 IP 位址和虛擬 IP 位址 (VIP),控制台就會顯示所需 IP 位址的表格。這些 IP 位址不會套用至管理員叢集設定。這些範例僅供參考,可協助您規劃安裝所需的 IP 位址。您可以將表格下載為 CSV 檔案,並匯入試算表或 IP 位址規劃工具,做為追蹤叢集所需 IP 位址的起點。
檢查 Google Cloud 資源:
確認機群主專案已啟用所有必要的 Google API。此外,您必須啟用 GKE On-Prem API:
gcloud services enable --project FLEET_HOST_PROJECT_ID \ gkeonprem.googleapis.com
將 FLEET_HOST_PROJECT_ID 替換為機群主專案的專案 ID。
建立叢集前,請按照「準備啟動環境」一文所述,在管理員工作站上執行 bmctl register bootstrap 指令。這個指令可以建立必要的服務帳戶,並授予建立管理員叢集所需的最低 IAM 權限。您也可以手動設定服務帳戶。
準備好開始時,請按一下左側導覽列中的「Install bootstrap environment」(安裝啟動環境)。
gcloud CLI
硬體、網路和作業系統必要條件
使用 GKE On-Prem API 用戶端建立管理員叢集時,硬體、網路和作業系統的必要條件與使用 bmctl 建立叢集時相同。詳情請參閱「安裝必要條件」。
必要的 Google API
確認機群主專案已啟用所有必要的 Google API。此外,您必須啟用 GKE On-Prem API:
gcloud services enable --project FLEET_HOST_PROJECT_ID \ gkeonprem.googleapis.com
將 FLEET_HOST_PROJECT_ID 替換為機群主專案的專案 ID。
必要的服務帳戶和權限
建立叢集前,請按照「準備啟動環境」一文所述,在管理員工作站上執行 bmctl register bootstrap 指令。這個指令可以建立必要的服務帳戶,並授予建立管理員叢集所需的最低 IAM 權限。您也可以手動設定服務帳戶。
規劃 IP 位址
建立管理員叢集前,您必須先規劃叢集的 IP 位址。請參閱「規劃 IP 位址」,瞭解如何為高可用性 (HA) 管理員叢集和兩個 HA 使用者叢集分配 IP 位址。即使您將使用 gcloud CLI 建立管理員叢集,仍建議按照本節中的控制台步驟,使用 IP 位址規劃工具。
準備啟動環境
建立管理員叢集前,您必須在管理員工作站上執行 bmctl register bootstrap 指令。這個指令會在管理員工作站上部署 Kubernetes in Docker (kind) 叢集。這個啟動叢集會託管建立管理員叢集所需的 Kubernetes 控制器。建立管理員叢集時,啟動叢集上的控制器會佈建節點、執行預檢,並將管理員叢集註冊至機群。叢集建立成功後,系統會自動刪除啟動叢集。
控制台
輸入管理員叢集的名稱。請注意,啟動叢集名稱是在管理員叢集名稱前加上 bootstrap- 衍生而來。
選取管理員叢集的版本。
在「Google Cloud API Location」(Google Cloud API 位置) 欄位中,從清單選取「 Google Cloud」區域。這項設定會指定下列 API 和服務的執行區域:
- GKE On-Prem API (
gkeonprem.googleapis.com) - 機群服務 (
gkehub.googleapis.com) - 連結服務 (
gkeconnect.googleapis.com)
這項設定也會控管下列項目的儲存區域:
- GKE On-Prem API 管理叢集生命週期所需的叢集中繼資料
- 系統元件的 Cloud Logging 和 Cloud Monitoring 資料
- Cloud 稽核記錄建立的管理員稽核記錄
叢集名稱、專案和位置共同構成 Google Cloud中叢集的專屬 ID。
- GKE On-Prem API (
控制台會顯示您需要在管理員工作站上執行的指令。
bmctl指令列工具必須與您建立的叢集版本相符。如果管理員工作站已下載適用版本的bmctl,則不必再次下載。
gcloud CLI
請務必更新元件:
gcloud components update
執行下列指令,使用 Google 帳戶登入:
gcloud auth login
列出可安裝的裸機叢集版本:
您下載來建立啟動環境的
bmctl版本,必須與您要在管理員叢集上安裝的版本相符。gcloud container bare-metal admin-clusters query-version-config \ --location=REGION
將
REGION替換為建立叢集時要使用的 Google Cloud 區域。這是 GKE On-Prem API、Fleet 和 Connect 服務執行的區域。指定us-west1或其他支援的地區。
建立 bootstrap 叢集
請在管理員工作站執行下列步驟。這些指令會顯示在控制台中。
將使用者憑證設為應用程式預設憑證 (ADC):
gcloud auth application-default login
按照提示選取要用於 ADC 的 Google 帳戶。
視需要將
bmctl指令列工具下載至目前使用的目錄。gcloud storage cp gs://anthos-baremetal-release/bmctl/VERSION/linux-amd64/bmctl . chmod a+x ./bmctl
將
VERSION替換為要安裝的 Bare Metal 叢集版本。如果您是從控制台複製指令,指令中就已包含版本。建立 bootstrap 叢集。您可以讓
bmctl建立必要的服務帳戶 (SA),也可以自行建立服務帳戶和金鑰檔案,並傳遞至bmctl register bootstrap指令。
bmctl 建立 SA
如果您希望 bmctl 建立必要的服務帳戶,並授予建立管理員叢集所需的最低權限,請使用下列指令。這個指令假設 bmctl 位於目前使用的目錄。
./bmctl register bootstrap \ --ssh-key=YOUR_PRIVATE_KEY \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=FLEET_HOST_PROJECT_ID
更改下列內容:
YOUR_PRIVATE_KEY:私密安全殼層金鑰的路徑。您在設定節點的根 SSH 存取權時,已建立安全殼層金鑰。
如果您複製控制台中顯示的指令,系統會自動填入下列欄位。
ADMIN_CLUSTER_NAME:管理員叢集的名稱。FLEET_HOST_PROJECT_ID:管理員叢集建立後,會自動註冊至這個專案。
bmctl register bootstrap 指令會建立下列服務帳戶。服務帳戶金鑰會儲存在 bmctl-workspace/.sa-keys 目錄中。
| 服務帳戶 | 目的 | IAM 角色 |
|---|---|---|
| anthos-baremetal-gcr | Google Distributed Cloud 會使用這個服務帳戶,從 Artifact Registry 下載容器映像檔。 | 無 |
| anthos-baremetal-connect | Connect 代理程式會使用這個服務帳戶,維持叢集和 Google Cloud之間的連線。 | roles/gkehub.connect |
| anthos-baremetal-register | Connect 代理程式會使用這個服務帳戶,向Google Cloud 機群註冊叢集。 | roles/gkehub.admin |
| anthos-baremetal-cloud-ops | Stackdriver 代理程式會使用這個服務帳戶,將叢集的記錄檔和指標匯出至 Cloud Logging 和 Cloud Monitoring。 |
roles/logging.logWriter roles/monitoring.metricWriter roles/stackdriver.resourceMetadata.writer roles/opsconfigmonitoring.resourceMetadata.writer roles/monitoring.dashboardEditor roles/monitoring.viewer roles/serviceusage.serviceUsageViewer roles/kubernetesmetadata.publisher |
指定服務帳戶金鑰檔案
您也可以傳遞您建立的服務帳戶金鑰檔案 bmctl。下列指令會使用「手動設定服務帳戶」中的金鑰檔案名稱,並假設 bmctl 和金鑰檔案位於目前使用的目錄中。
./bmctl register bootstrap \ --ssh-key=YOUR_PRIVATE_KEY \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=FLEET_HOST_PROJECT_ID \ --gcr-service-account-key=anthos-baremetal-gcr.json \ --gke-agent-service-account-key=connect-agent.json \ --gke-register-service-account-key=connect-register.json \ --cloud-operation-service-account-key=anthos-baremetal-cloud-ops.json
更改下列內容:
YOUR_PRIVATE_KEY:私密安全殼層金鑰的路徑。您在設定節點的根 SSH 存取權時,已建立安全殼層金鑰。ADMIN_CLUSTER_NAME:管理員叢集的名稱。FLEET_HOST_PROJECT_ID:管理員叢集建立後,會自動註冊至這個專案。
下列旗標會指定金鑰檔案的路徑:
-gcr-service-account-key:提取容器映像檔 (anthos-baremetal-gcr) 的服務帳戶金鑰檔案路徑。--gke-agent-service-account-key:Connect 代理程式服務帳戶 (anthos-baremetal-connect) 的金鑰檔案路徑。--gke-register-service-account-key:Connect 代理程式服務帳戶的金鑰檔案路徑,該帳戶會將叢集註冊至機群 (anthos-baremetal-register)。--cloud-operation-service-account-key:服務帳戶的金鑰檔案路徑,用於稽核記錄及監控專案 (anthos-baremetal-cloud-ops)。
bmctl 成功建立啟動叢集後,您會看到類似以下的輸出內容:
[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
建立管理員叢集
控制台
在「Install bootstrap environment」(安裝 bootstrap 環境) 頁面上,按一下「Check Connection」(檢查連線)。
成功後,控制台會顯示 「Connection established」(已建立連線)。
您必須先建立與 bootstrap 叢集的連線,才能繼續操作。如果未建立連線,請檢查您為
bmctl register bootstrap指令指定的引數:確認
--target-cluster-name的值與「Bootstrap environment basics」(Bootstrap 環境基本資訊) 專區中顯示的「Admin cluster name」(管理員叢集名稱) 相符。請確認
--project-id的值與您在控制台中選取的專案 ID 相符。
如要變更啟動程序叢集名稱或專案 ID,請輸入
Ctrl-C退出bmctl register bootstrap,然後重新執行指令。點選「Next」(下一步),開始設定管理員叢集。控制台中的大部分設定都對應到叢集設定檔中的欄位。
在「Node configuration」(節點設定) 的「Maximum Pods per node」(每個節點的 Pod 數量上限) 中,輸入介於 64 到 250 之間的值,或接受預設值 110。叢集建立後,您就無法更新這個值。
每個節點的 Pod 數量上限 (稱為 Pod 密度) 也受限於叢集的可用 IP 資源。詳情請參閱「Pod 和 Service 網路」。
點選「下一步」。
在「Networking」(網路) 頁面中,定義叢集中的節點和元件如何互相通訊,以及與 Kubernetes 控制層通訊。
如要查看詳細資訊,請將指標懸停在每個欄位旁的 上。
按一下「驗證並建立」。
控制台會顯示狀態訊息,驗證設定並在資料中心建立叢集。
如果設定有問題,控制台會顯示錯誤訊息,說明如何修正設定問題,並再次嘗試建立叢集。
gcloud CLI
建立管理員叢集前,請確認 bootstrap 叢集已註冊為機群成員:
gcloud container fleet memberships list \ --project=FLEET_HOST_PROJECT_ID
如果未列出啟動叢集,請檢查您為 bmctl register bootstrap 指定的啟動叢集名稱和專案 ID。如要變更啟動叢集名稱或專案 ID,請輸入 Ctrl-C 退出 bmctl register bootstrap,然後重新執行指令。
使用下列指令建立管理員叢集:
gcloud container bare-metal admin-clusters create
您為指令指定的大多數旗標,都對應至使用者叢集設定檔中的欄位。
如要使用套裝組合負載平衡器建立管理員叢集,請按照下列步驟操作:
gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --version=VERSION \ --max-pods-per-node=MAX_PODS_PER_NODE \ --control-plane-vip=CONTROL_PLANE_VIP \ --control-plane-load-balancer-port=CONTROL_PLANE_LOAD_BALANCER_PORT \ --control-plane-node-configs 'CONTROL_PLANE_NODE_CONFIG' \ --island-mode-service-address-cidr-blocks=SERVICE_ADDR_CIDR \ --island-mode-pod-address-cidr-blocks=POD_ADDR_CIDR \ --lvp-share-path=/mnt/localpv-share \ --lvp-share-storage-class=local-shared \ --lvp-node-mounts-config-path=/mnt/localpv-disk \ --lvp-node-mounts-config-storage-class=local-disks
如要使用手動負載平衡,請在指令中加入 --enable-manual-lb。
更改下列內容:
ADMIN_CLUSTER_NAME:管理員叢集的名稱。叢集建立後即無法變更名稱。FLEET_HOST_PROJECT_ID:管理員叢集建立後,會自動註冊至這個專案。叢集建立後,即無法變更機群主專案。REGION:GKE On-Prem API 執行的 Google Cloud 區域。指定us-west1或其他支援的地區。叢集建立後即無法變更區域。這項設定會指定下列項目的儲存區域:- GKE On-Prem API 管理叢集生命週期所需的叢集中繼資料
- 系統元件的 Cloud Logging 和 Cloud Monitoring 資料
- Cloud 稽核記錄建立的管理員稽核記錄
叢集名稱、專案和位置共同構成 Google Cloud中叢集的專屬 ID。
VERSION:裸機叢集版本。版本必須與您用來執行bmctl register bootstrap的bmctl版本相符。如要查看bmctl版本,請在管理員工作站上執行bmctl version。MAX_PODS_PER_NODE:管理員叢集的允許值為 32 至 250,非高可用性叢集則為 64 至 250。如果指令中未包含--max-pods-per-node,預設值為 110。叢集建立後,即無法更新這個值。每個節點的 Pod 數量上限 (稱為 Pod 密度) 也受限於叢集的可用 IP 資源。詳情請參閱「Pod 和 Service 網路」。
CONTROL_PLANE_VIP:叢集 Kubernetes API 伺服器負載平衡器上的虛擬 IP (VIP)。填入的控制層 VIP 必須與負載平衡器節點位於相同的子網路。請勿在負載平衡器位址集區中加入控制層 VIP。CONTROL_PLANE_LOAD_BALANCER_PORT:負載平衡器提供控制層的通訊埠。雖然您可以設定其他值,但通訊埠443是 HTTPS 連線使用的標準通訊埠。CONTROL_PLANE_NODE_CONFIG:控制層節點的 IPv4 位址。控制層節點會執行系統工作負載。請為每個控制層節點指定這個旗標。一般來說,如為基本部署項目,控制層會使用 1 個機器,如為高可用性 (HA) 部署項目,則會使用 3 個機器。為確保高可用性,請指定奇數節點,以達到絕對多數。更新或升級叢集時,您隨時可以變更這些位址。旗標值的格式如下:
'node-ip=CP_IP_ADDRESS_1,labels=CP_KEY_1.1=CP_VALUE_1.1;CP_KEY_1.2=CP_VALUE_1.2;...' \
值包含以關鍵字
node-ip和labels開頭的區隔。並以半形逗號分隔。node-ip:控制層節點的 IP 位址。每個旗標只能指定一個node-ip。如需指定多個節點,請為每個節點再次加入旗標。labels:附加至節點的一或多個鍵/值組合。
請注意下列語法規則:
- 請用單引號括住整個值。
- 不得包含空白字元。
- 請使用分號分隔
labels區隔中的每個 key=value 組合。
例如:
--control-plane-node-configs 'node-ip=192.0.2.1' \ --control-plane-node-configs 'node-ip=192.0.2.2,labels=key2.1=value2.1' \ --control-plane-node-configs 'node-ip=192.0.2.3,labels=key3.1=value3.1;key3.2=value3.2' \
SERVICE_ADDR_CIDR:叢集內 Service 的 IPv4 位址範圍,採用 CIDR 格式。CIDR 範圍必須介於 /24 和 /12 之間,其中 /12 可提供最多的 IP 位址。建議您使用 RFC 1918 中定義的私人網際網路 IP 位址空間範圍,例如10.96.0.0/20。POD_ADDR_CIDR:使用者叢集中 Pod 要使用的 IPv4 位址範圍,格式為 CIDR。CIDR 範圍必須介於 /18 和 /8 之間,其中 /8 可提供最多的 IP 位址。建議您使用 RFC 1918 中定義的私人網際網路 IP 位址空間範圍,例如192.168.0.0/16。
您必須指定下列儲存空間旗標。範例指令包含一般值。詳情請參閱「設定本機儲存空間」。
--lvp-share-path:這是可建立子目錄的主體機器路徑。系統會為每個子目錄建立本機 PersistentVolume (PV)。--lvp-share-storage-class:這是用於建立永久磁碟區的 StorageClass。StorageClass 會在建立叢集時建立。--lvp-node-mounts-config-path:這是主機路徑,可找到掛接的磁碟。系統會為每個掛接點建立本機 PersistentVolume (PV)。--lvp-node-mounts-config-storage:建立叢集時,用來建立 PV 的儲存空間類別。
如需旗標和說明的完整清單,請參閱 gcloud CLI 參考資料。
指令會輸出類似以下的結果:
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
在輸出範例中,字串 operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 是長時間執行的作業 OPERATION_ID。您可以使用下列指令,查看作業狀態:
gcloud container bare-metal operations describe OPERATION_ID \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION
詳情請參閱「gcloud container bare-metal 作業」。
修正預檢錯誤
建立叢集前,bmctl 會執行一系列預檢,驗證設定。如果設定有問題,gcloud ... create 指令會結束,並顯示類似以下的錯誤:
ERROR: (gcloud.container.bare-metal.admin-clusters.create) Invalid resource state for "projects/694677185633/locations/us-west1/bareMetalAdminClusters/abm-cluster-1": cluster preflight checks failed
舉例來說,假設預檢失敗的原因是無法連線至控制層節點。在管理員工作站上,您會看到類似下方的內容:
[2023-03-27 20:34:38+0000] Waiting for preflight check job to finish... OK [2023-03-27 20:35:58+0000] - Validation Category: machines and network [2023-03-27 20:35:58+0000] - [PASSED] pod-cidr [2023-03-27 20:35:58+0000] - [FAILED] node-network (log: bmctl-workspace/log/register-bootstrap-20230327-201548/node-network) [2023-03-27 20:35:58+0000] - Failed to connect to the host via ssh: ssh: connect to host 10.100.0.5 port 22: Connection timed out [2023-03-27 20:35:58+0000] Flushing logs... OK [2023-03-27 20:35:58+0000] Error polling the preflight check abm-cluster-mar-27 in the cluster-abm-cluster-mar-27: preflight check failed
在管理員工作站上,確認
bmctl register bootstrap程序仍在執行。如果沒有,請使用相同引數重新執行指令,並新增--reuse-bootstrap-cluster=true旗標。執行
gcloud ... update修正無效的 IP 位址:gcloud container bare-metal admin-clusters update ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --control-plane-node-configs 'node-ip=NEW_NODE_ID_ADDRESS'
管理員工作站會輸出叢集建立程序的詳細資料。如果預檢檢查通過,您會看到類似下方的內容:
[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK [2023-03-22 23:15:47+0000] Writing kubeconfig file [2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig [2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster. [2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK [2023-03-22 23:20:17+0000] Please run [2023-03-22 23:20:17+0000] kubectl --kubeconfig bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes [2023-03-22 23:20:17+0000] to get cluster nodes status. [2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK [2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK [2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK [2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster [2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK [2023-03-22 23:27:41+0000] Flushing logs... OK [2023-03-22 23:27:41+0000] Deleting membership... OK [2023-03-22 23:27:42+0000] Deleting bootstrap cluster.
連線至管理員叢集
bmctl register bootstrap 指令會在管理員工作站上,為管理員叢集建立 kubeconfig 檔案。kubeconfig 所在的目錄和檔案名稱取決於管理員叢集名稱,如下所示:
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
您必須限制這個 kubeconfig 的存取權,因為其中包含叢集的驗證憑證。
如要使用 Google Identity 登入叢集,可以按照下列步驟設定 Connect 閘道:
在管理員工作站上,設定
KUBECONFIG環境變數:export KUBECONFIG=$HOME/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
在環境變數中設定目前的背景資訊:
export CONTEXT="$(kubectl config current-context)"執行下列
gcloud指令。這個指令會執行下列動作:- 將叢集的 Kubernetes
clusterrole/view角色授予使用者帳戶。 - 設定叢集,以便在本機電腦上執行唯讀
kubectl指令,不必透過 SSH 連線至管理員工作站。
將
GOOGLE_ACCOUNT_EMAIL替換為與 Google Cloud 帳戶相關聯的電子郵件地址。例如:--users=alex@example.com。gcloud container fleet memberships generate-gateway-rbac \ --membership=ADMIN_CLUSTER_NAME \ --role=clusterrole/view \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=FLEET_HOST_PROJECT_ID \ --kubeconfig=$KUBECONFIG \ --context=$CONTEXT\ --apply這個指令會輸出類似以下的結果 (為方便閱讀,已截斷):
Validating input arguments. Specified Cluster Role is: clusterrole/view Generated RBAC policy is: -------------------------------------------- ... Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.- 將叢集的 Kubernetes
設定這些 RBAC 政策後,您就能使用 Google Identity,從控制台登入叢集。此外,您可以使用特殊的 kubeconfig,透過 Connect 閘道轉送要求,在管理員工作站以外的電腦上執行唯讀 kubectl 指令。
在管理員工作站以外的電腦上執行下列指令,取得可透過連結閘道存取叢集的
kubeconfig項目。gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID輸出結果會與下列內容相似:
Starting to build Gateway kubeconfig... Current project_id: FLEET_HOST_PROJECT_ID A new kubeconfig entry "connectgateway_FLEET_HOST_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.現在可以透過 Connect 閘道執行
kubectl指令:kubectl get pods -A