專案範圍內的資源

Config Connector 可以在專案、資料夾或機構層級管理資源。為判斷資源的建立位置,Config Connector 會先檢查資源規格中的範圍定義欄位,如果找不到,則檢查範圍定義註解。

指定 projectRef 欄位

大多數專案範圍的 Config Connector 資源,都會在 CRD 規格中支援名為 projectRef 的欄位。您可以使用這個欄位,指定要在哪個 Google Cloud 專案中建立資源。

如果 Google Cloud 專案也與 Project CRD 位於同一個叢集,您可以將專案指定為 Kubernetes 資源參照:

...
spec:
  projectRef:
    name: PROJECT_RESOURCE_NAME
    namespace: PROJECT_RESOURCE_NAMESPACE
...

這種做法可讓您使用 Config Connector,並透過單一套用作業建立 Google Cloud專案及其子資源。如果專案 Kubernetes 資源與專案範圍資源位於同一個 Kubernetes 命名空間,則可不填寫命名空間欄位。

如果 Google Cloud 專案並非在同一個叢集中以 Kubernetes 資源的形式管理,您可以使用 external 欄位直接指定專案 ID。值的確切格式可能因資源類型而異。最常見的兩種格式為「PROJECT_ID」和「projects/PROJECT_ID」。請參閱下方的「projects/PROJECT_ID」範例:

...
spec:
  projectRef:
    external: "projects/PROJECT_ID"
...

註解資源設定

如果 Config Connector 資源的範圍是專案,但該資源不支援 projectRef 欄位,您可以使用 project-id 註解,將專案 ID 設為資源設定:

...
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
...

以下範例說明資源的 YAML 設定與這個註解的關係:

apiVersion: SERVICE_NAME.cnrm.cloud.google.com/v1beta1
kind: RESOURCE_KIND
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: RESOURCE_NAME

更改下列內容:

  • SERVICE_NAME:資源的 Google Cloud 服務名稱
  • RESOURCE_KIND:Config Connector 資源的種類
  • PROJECT_ID:您的 Google Cloud 專案 ID
  • RESOURCE_NAME:資源名稱

標註命名空間設定

您可以為 Kubernetes 命名空間加上註解,為新建立的資源設定預設專案 ID。如果命名空間中的任何資源在其設定中明確設定了這個註解,資源層級註解會覆寫命名空間層級註解。

如要使用指令列為命名空間加上註解,請執行下列指令:

kubectl annotate namespace NAMESPACE_NAME cnrm.cloud.google.com/project-id=PROJECT_ID

更改下列內容:

  • NAMESPACE_NAME:命名空間名稱
  • PROJECT_ID:您的 Google Cloud 專案 ID

或者,您也可以套用含有註解的 YAML 資訊清單。將下列 YAML 複製到檔案中:

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: NAMESPACE_NAME

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • NAMESPACE_NAME:命名空間名稱

建立檔案後,請將其套用至叢集。

使用命名空間名稱做為專案 ID

如果資源和命名空間都未指定專案 ID,則 Config Connector 會使用命名空間的名稱做為專案 ID。Config Connector 支援這項預設行為,但我們不建議使用,因為專案 ID 的隱含預設值可能會造成混淆。