連結叢集是指將叢集連線至 Google Cloud ,方法是向 Google Cloud 機群管理註冊叢集,並在叢集上安裝 GKE 連接的叢集軟體。
您可以使用 gcloud CLI 或 Terraform 連結叢集。如要瞭解如何使用 Terraform 建立及連結 AKS 叢集,請查看 GKE 連結叢集的範例 GitHub 存放區。
如要使用 gcloud 連結 AKS 叢集,請執行下列步驟。
必要條件
請確保叢集符合叢集需求條件。
附加叢集時,您必須指定下列項目:
- 支援的 Google Cloud 行政區
- 平台版本
管理區域是 Google Cloud 區域 ,用於管理附加叢集。您可以選擇任何支援的區域,但最佳做法是選擇最靠近叢集的地理區域。管理區域不會儲存任何使用者資料。
平台版本是指要安裝在叢集上的 GKE 附加叢集版本。如要列出所有支援的版本,請執行下列指令:
gcloud container attached get-server-config \
--location=GOOGLE_CLOUD_REGION
將 GOOGLE_CLOUD_REGION 替換為要從中管理叢集的Google Cloud 位置名稱。
平台版本編號
這些文件將 GKE 附加叢集版本稱為平台版本,以區別於 Kubernetes 版本。GKE 附加叢集採用的版本編號慣例與 GKE 相同,例如 1.21.5-gke.1。附加或更新叢集時,您必須選擇平台版本,其子版本與叢集的 Kubernetes 版本相同,或低一個層級。舉例來說,您可以將執行 Kubernetes v1.22.* 的叢集,附加至 GKE 附加叢集平台版本 1.21.* 或 1.22.*。
這樣一來,您就能先將叢集升級至下一個子版本,再升級 GKE 連結的叢集。
連結 AKS 叢集
如要將 AKS 叢集附加至 Google Cloud 機群管理,請執行下列指令:
確認 kubeconfig 檔案中包含要附加的叢集項目:
az aks get-credentials -n AKS_CLUSTER_NAME \ -g RESOURCE_GROUP
執行下列指令,擷取叢集的 kubeconfig 環境,並儲存在
KUBECONFIG_CONTEXT
環境變數中:KUBECONFIG_CONTEXT=$(kubectl config current-context)
視您是使用預設的私有 OIDC 簽發者,還是實驗性公開簽發者設定叢集而定,註冊叢集的指令會略有不同。選擇適用於叢集的分頁:
私人 OIDC 核發者 (預設)
使用
gcloud container attached clusters register
指令註冊叢集:gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=aks \ --context=KUBECONFIG_CONTEXT \ --has-private-issuer \ --kubeconfig=KUBECONFIG_PATH
更改下列內容:
- CLUSTER_NAME:叢集名稱。這個名稱可以與步驟 1 中使用的 AKS_CLUSTER_NAME 相同。CLUSTER_NAME 必須符合 RFC 1123 標籤名稱標準。
- GOOGLE_CLOUD_REGION:用來管理叢集的 Google Cloud 區域
- PROJECT_NUMBER:要註冊叢集的機群主專案
- PLATFORM_VERSION:叢集使用的平台版本
- KUBECONFIG_CONTEXT:kubeconfig 中的內容,用於存取 AKS 叢集
- KUBECONFIG_PATH:kubeconfig 的路徑
公開 OIDC 核發者
使用下列指令擷取叢集的 OIDC 簽發者 URL:
az aks show -n CLUSTER_NAME \ -g RESOURCE_GROUP \ --query "oidcIssuerProfile.issuerUrl" -otsv
將 RESOURCE_GROUP 替換為叢集所屬的 AKS 資源群組。
這項指令會輸出 OIDC 核發者的網址。請儲存這個值,以供日後使用。
執行下列指令,擷取叢集的 kubeconfig 環境,並儲存在
KUBECONFIG_CONTEXT
環境變數中:KUBECONFIG_CONTEXT=$(kubectl config current-context)
使用
gcloud container attached clusters register
指令註冊叢集:gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=aks \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
更改下列內容:
- CLUSTER_NAME:叢集名稱。這個名稱可以與步驟 1 中使用的 AKS_CLUSTER_NAME 相同。CLUSTER_NAME 必須符合 RFC 1123 標籤名稱標準。
- GOOGLE_CLOUD_REGION:管理叢集的 Google Cloud 區域
- PROJECT_NUMBER:叢集要註冊的 Fleet 主機專案
- PLATFORM_VERSION:叢集使用的 GKE 附加叢集版本
- ISSUER_URL:先前擷取的核發者網址
- KUBECONFIG_CONTEXT:kubeconfig 中的內容,用於存取叢集 (如先前擷取)
- KUBECONFIG_PATH:kubeconfig 的路徑
授權 Cloud Logging / Cloud Monitoring
如要讓 GKE 附加叢集建立系統記錄檔和指標並上傳至Google Cloud,必須先獲得授權。
如要授權 Kubernetes 工作負載身分 gke-system/gke-telemetry-agent
將記錄檔寫入 Google Cloud Logging,以及將指標寫入 Google Cloud Monitoring,
請執行下列指令:
gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
--member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter
將 GOOGLE_PROJECT_ID
替換為叢集的 Google Cloud 專案 ID。
這個 IAM 繫結會授予 Google Cloud 專案中所有叢集上傳記錄和指標的權限。您只需要在為專案建立第一個叢集後執行這項指令。
除非 Google Cloud 專案中已建立至少一個叢集,否則新增這項 IAM 繫結會失敗。這是因為在建立叢集之前,系統不會佈建所參照的工作負載身分集區 (GOOGLE_PROJECT_ID.svc.id.goog
)。