建立跨專案網路政策

本頁面提供相關操作說明,說明如何在 Google Distributed Cloud (GDC) 實體隔離環境中設定跨專案流量網路政策。

跨專案流量是指來自不同專案命名空間,但位於同一機構的服務和工作負載之間的通訊。

專案中的服務和工作負載預設會與外部服務和工作負載隔離。不過,只要套用跨專案流量網路政策,不同專案命名空間和同一機構中的服務和工作負載就能彼此通訊。

根據預設,這些政策適用於所有區域。如要進一步瞭解 GDC 宇宙中的全域資源,請參閱多區域總覽

如要在單一區域內強制執行跨專案流量,請參閱「建立單一區域工作負載層級的跨專案政策」。

事前準備

如要設定跨專案流量網路政策,您必須具備下列條件:

  • 必要的身分與存取權角色。如要管理特定專案的政策,您需要 project-networkpolicy-admin 角色。在多區域環境中,如要管理涵蓋所有區域的政策,您需要 global-project-networkpolicy-admin 角色。詳情請參閱「準備預先定義的角色和存取權」。
  • 現有專案。詳情請參閱「建立專案」一文。
  • 如果是輸出網路政策,您也必須為專案停用資料外洩防護

建立跨專案政策

您可以定義輸入或輸出跨專案流量政策,管理專案之間的通訊。

建立 Ingress 跨專案政策

如要允許機構內其他專案的工作負載連線至專案的工作負載或服務,您必須設定輸入防火牆規則。

這項政策適用於機構中的所有區域。

請按照下列步驟建立新的防火牆規則,允許來自其他專案工作負載的傳入流量:

控制台

  1. 在要設定的專案 GDC 控制台中,依序前往導覽選單中的「Networking」(網路) >「Firewall」(防火牆),開啟「Firewall」(防火牆) 頁面。
  2. 按一下動作列中的「建立」,即可開始建立新的防火牆規則。
  3. 在「防火牆規則詳細資料」頁面上,填寫下列資訊:

    1. 在「Name」(名稱) 欄位中,輸入防火牆規則的有效名稱。
    2. 在「流量方向」專區選取「輸入」,允許來自其他專案工作負載的輸入流量。
    3. 在「目標」部分,選取下列其中一個選項:
      • 所有使用者工作負載:允許連線至您要設定的專案工作負載。
      • 服務:指出這項防火牆規則的目標是您設定專案中的特定服務。
    4. 如果目標是專案服務,請從「服務」下拉式選單的可用服務清單中,選取服務名稱。
    5. 在「從」部分,選取下列其中一個選項:
      • 所有專案:允許來自相同機構所有專案中工作負載的連線。
      • 其他專案所有使用者工作負載:允許來自相同機構中其他專案工作負載的連線。
    6. 如要只轉移其他專案的工作負載,請從「專案 ID」下拉式選單的專案清單中,選取您可存取的專案。
    7. 如果目標是所有使用者工作負載,請在「通訊協定和通訊埠」部分選取下列其中一個選項:
      • 允許所有連線:允許使用任何通訊協定或通訊埠連線。
      • 指定通訊協定和通訊埠:只允許使用您在輸入防火牆規則的對應欄位中指定的通訊協定和通訊埠建立連線。
  4. 在「防火牆規則詳細資料」頁面上,按一下「建立」

您現在已允許來自同一個機構內其他專案工作負載的連線。建立防火牆規則後,該規則會顯示在「防火牆」頁面的表格中。

如要建立反向的互惠連入政策,請前往其他專案的 GDC 控制台,然後重複上述程序。

API

下列政策可讓 PROJECT_1 專案中的工作負載允許來自 PROJECT_2 專案工作負載的連線,以及相同流程的傳回流量。套用政策:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_1
  name: allow-inbound-traffic-from-PROJECT_2
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT_2
EOF

GLOBAL_API_SERVER 替換為全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和區域 API 伺服器」。 如果尚未為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。

上述指令允許 PROJECT_2 前往 PROJECT_1,但不允許從 PROJECT_1 連線至 PROJECT_2。如要使用後者,您必須在 PROJECT_2 專案中設定互惠政策。套用互惠政策:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_2
  name: allow-inbound-traffic-from-PROJECT_1
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT_1
EOF

現在允許連線至「PROJECT_1」和「PROJECT_2」,以及從這兩者連出。

建立跨專案輸出政策

當您授予跨專案流量政策的連入權限,允許一個專案中的工作負載接受來自另一個專案中工作負載的連線時,這項動作也會授予相同流程的回程流量。因此,原始專案不需要輸出跨專案流量網路政策。

請按照下列步驟建立新的防火牆規則,允許專案中工作負載的外送流量:

控制台

  1. 在要設定的專案 GDC 控制台中,依序前往導覽選單中的「Networking」(網路) >「Firewall」(防火牆),開啟「Firewall」(防火牆) 頁面。
  2. 在動作列中,按一下「建立」即可建立新的防火牆規則。
  3. 在「防火牆規則詳細資料」頁面上,填寫下列資訊:

    1. 在「Name」(名稱) 欄位中,輸入防火牆規則的有效名稱。
    2. 在「流量方向」專區選取「輸出」,表示這項防火牆規則會控管輸出流量。
    3. 在「目標」部分,選取下列其中一個選項:
      • 所有使用者工作負載:允許來自您要設定專案工作負載的連線。
      • 服務:指出這項防火牆規則的目標是您設定專案中的特定服務。
    4. 如果目標是專案服務,請從「服務」下拉式選單的可用服務清單中,選取服務名稱。
    5. 在「收件者」部分,選取下列任一選項:
      • 所有專案:允許連線至相同機構中所有專案的工作負載。
      • 其他專案所有使用者工作負載:允許連線至相同機構中其他專案的工作負載。
    6. 如要將工作負載轉移至其他專案,請從「專案 ID」下拉式選單的專案清單中,選取您有權存取的專案。
    7. 如果目標是所有使用者工作負載,請在「通訊協定和通訊埠」部分選取下列其中一個選項:
      • 允許所有連線:允許使用任何通訊協定或通訊埠連線。
      • 指定通訊協定和通訊埠:只允許使用您在輸出防火牆規則的對應欄位中指定的通訊協定和通訊埠建立連線。
  4. 在「防火牆規則詳細資料」頁面上,按一下「建立」

您現在已允許連線至同一個機構內的其他專案工作負載。建立防火牆規則後,該規則會顯示在「防火牆」頁面的表格中。

如要建立反向互惠輸出政策,請前往其他專案的 GDC 控制台,然後重複上述程序。

API

下列政策可讓 PROJECT_1 專案中的工作負載,允許連線至 PROJECT_2 專案中的工作負載。套用政策:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_1
  name: allow-outbound-traffic-to-PROJECT_2
spec:
  policyType: Egress
  subject:
    subjectType: UserWorkload
  egress:
  - to:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT_2
EOF

更改下列內容:

  • GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和區域 API 伺服器」。 如果尚未產生 API 伺服器的 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。
  • PROJECT_1:接收流量的專案名稱。
  • PROJECT_2:流量來源專案的名稱。

上述指令允許從 PROJECT_1PROJECT_2 的輸出連線,但不允許從 PROJECT_2PROJECT_1 的連線。如要使用後者,您必須在 PROJECT_2 專案中設定互惠政策。套用互惠政策:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_2
  name: allow-outbound-traffic-to-PROJECT_1
spec:
  policyType: Egress
  subject:
    subjectType: UserWorkload
  egress:
  - to:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT_1
EOF

建立工作負載層級的跨專案輸出政策

  • 如要建立工作負載層級的跨專案輸出政策,請建立並套用下列自訂資源:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_2
      name: allow-cross-project-outbound-traffic-from-project-2-to-project-1
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_1
            workloadSelector:
              labelSelector:
                workloads:
                  matchLabels:
                    PEER_LABEL_KEY: PEER_LABEL_VALUE
    EOF
    

    更改下列內容:

    • GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和區域 API 伺服器」。 如果尚未產生 API 伺服器的 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。
    • PROJECT_1:接收流量的專案名稱。
    • PROJECT_2:流量來源專案的名稱。
    • SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:apptierrole。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • SUBJECT_LABEL_VALUE:與 SUBJECT_LABEL_KEY 相關聯的值。舉例來說,如果 SUBJECT_LABEL_KEYapp,且 SUBJECT_LABEL_VALUEbackend,則具有 app: backend 標籤的工作負載會傳送流量。
    • PEER_LABEL_KEY:用於選取對等工作負載的標籤鍵。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • PEER_LABEL_VALUE:與 PEER_LABEL_KEY 相關聯的值。

建立單一區域工作負載層級的跨專案政策

工作負載層級的網路政策可強制執行單一區域的 PNP。您可以為單一區域內的工作負載新增特定標籤,控管專案內或不同專案中,該區域內個別工作負載之間的通訊。

建立單一區域的 Ingress 工作負載層級跨專案政策

  1. 如要建立單一區域的 Ingress 工作負載層級跨專案政策,請建立並套用下列自訂資源:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-single-zone-cross-project-inbound-traffic-from-project-2-to-project-1
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
                ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_2
            workloadSelector:
              labelSelector:
                workloads:
                  matchLabels:
                    PEER_LABEL_KEY: PEER_LABEL_VALUE
                    ZONE_PEER_LABEL_KEY: ZONE_PEER_LABEL_VALUE
    EOF
    

    更改下列內容:

    • GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和區域 API 伺服器」。 如果尚未產生 API 伺服器的 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。
    • PROJECT_1:接收流量的專案名稱。
    • PROJECT_2:流量來源專案的名稱。
    • SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:apptierrole。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • SUBJECT_LABEL_VALUE:與 SUBJECT_LABEL_KEY 相關聯的值。舉例來說,如果 SUBJECT_LABEL_KEYapp,而 SUBJECT_LABEL_VALUEbackend,則標籤為 app: backend 的工作負載會接收流量。
    • PEER_LABEL_KEY:用於選取對等工作負載的標籤鍵。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • PEER_LABEL_VALUE:與 PEER_LABEL_KEY 相關聯的值。
    • ZONE_SUBJECT_LABEL_KEY:用於選取主體區域的標籤鍵。例如 zoneregion。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • ZONE_SUBJECT_LABEL_VALUE:與 ZONE_SUBJECT_LABEL_KEY 相關聯的值。指定接收流量的區域。舉例來說,如果 ZONE_SUBJECT_LABEL_KEYzone,而 ZONE_SUBJECT_LABEL_VALUEus-central1-a,則標籤為 zone: us-central1-a 的工作負載會接收流量。
    • ZONE_PEER_LABEL_KEY:用於選取與對等互連相關聯區域的標籤鍵。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • ZONE_PEER_LABEL_VALUE:與 ZONE_PEER_LABEL_KEY 相關聯的值。

建立單一區域輸出工作負載層級的跨專案政策

  • 如要建立單一區域輸出工作負載層級的跨專案政策,請建立並套用下列自訂資源:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_2
      name: allow-single-zone-cross-project-outbound-traffic-from-project-2-to-project-1
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
                ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_1
            workloadSelector:
              labelSelector:
                workloads:
                  matchLabels:
                    PEER_LABEL_KEY: PEER_LABEL_VALUE
                    ZONE_PEER_LABEL_KEY: ZONE_PEER_LABEL_VALUE
    EOF
    

    更改下列內容:

    • GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和區域 API 伺服器」。 如果尚未產生 API 伺服器的 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。
    • PROJECT_1:接收流量的專案名稱。
    • PROJECT_2:流量來源專案的名稱。
    • SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:apptierrole。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • SUBJECT_LABEL_VALUE:與 SUBJECT_LABEL_KEY 相關聯的值。舉例來說,如果 SUBJECT_LABEL_KEYapp,且 SUBJECT_LABEL_VALUEbackend,則具有 app: backend 標籤的工作負載會傳送流量。
    • PEER_LABEL_KEY:用於選取對等工作負載的標籤鍵。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • PEER_LABEL_VALUE:與 PEER_LABEL_KEY 相關聯的值。
    • ZONE_SUBJECT_LABEL_KEY:用於選取主體區域的標籤鍵。例如 zoneregion。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • ZONE_SUBJECT_LABEL_VALUE:與 ZONE_SUBJECT_LABEL_KEY 相關聯的值。舉例來說,如果 ZONE_SUBJECT_LABEL_KEYzone,且 ZONE_SUBJECT_LABEL_VALUEus-central1-a,則具有 zone: us-central1-a 標籤的工作負載會傳送流量。
    • ZONE_PEER_LABEL_KEY:用於選取與對等互連相關聯區域的標籤鍵。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • ZONE_PEER_LABEL_VALUE:與 ZONE_PEER_LABEL_KEY 相關聯的值。

為標準叢集建立跨專案政策

標準叢集是專案範圍的 Kubernetes 叢集,可提供更完善的控制、彈性及叢集管理員權限。

為標準叢集建立 Ingress 跨專案政策

  1. 如要在標準叢集之間建立 Ingress 叢集間政策,請建立並套用下列自訂資源:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: STANDARD_CLUSTER_1_PROJECT
      name: allow-ingress-from-standard-cluster-2-to-standard-cluster-1
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            clusters:
              matchLabels:
                kubernetes.io/metadata.name: STANDARD_CLUSTER_1_NAME
            namespaces:
              matchLabels:
                kubernetes.io/metadata.name: SUBJECT_NAMESPACE
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - STANDARD_CLUSTER_2_PROJECT
            workloadSelector:
              labelSelector:
                clusters:
                  matchLabels:
                    kubernetes.io/metadata.name: STANDARD_CLUSTER_2_NAME
                namespaces:
                  matchLabels:
                    kubernetes.io/metadata.name: PEER_NAMESPACE
                workloads:
                  matchLabels:
                    PEER_LABEL_KEY: PEER_LABEL_VALUE
    EOF
    

    更改下列內容:

    • GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和區域 API 伺服器」。 如果尚未產生 API 伺服器的 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。
    • STANDARD_CLUSTER_1_PROJECT:接收流量的標準叢集專案名稱。
    • STANDARD_CLUSTER_2_PROJECT:流量來源的標準叢集專案名稱。
    • STANDARD_CLUSTER_1_NAME:接收流量的標準叢集名稱。
    • STANDARD_CLUSTER_2_NAME:流量來源的標準叢集名稱。
    • SUBJECT_NAMESPACE:標準叢集中的主體命名空間。
    • PEER_NAMESPACE:標準叢集中的對等互連命名空間。
    • SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:apptierrole。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • SUBJECT_LABEL_VALUE:與 SUBJECT_LABEL_KEY 相關聯的值。舉例來說,如果 SUBJECT_LABEL_KEYapp,而 SUBJECT_LABEL_VALUEbackend,則標籤為 app: backend 的工作負載會接收流量。
    • PEER_LABEL_KEY:用於選取對等工作負載的標籤鍵。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • PEER_LABEL_VALUE:與 PEER_LABEL_KEY 相關聯的值。
  2. 如要在標準叢集和共用叢集之間建立 Ingress 叢集間政策,請建立並套用下列自訂資源:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: SHARED_CLUSTER_PROJECT
      name: allow-ingress-from-standard-cluster-to-shared-cluster
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - STANDARD_CLUSTER_PROJECT
            workloadSelector:
              labelSelector:
                clusters:
                  matchLabels:
                    kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME
                namespaces:
                  matchLabels:
                    kubernetes.io/metadata.name: PEER_NAMESPACE
                workloads:
                  matchLabels:
                    PEER_LABEL_KEY: PEER_LABEL_VALUE
    EOF
    

    更改下列內容:

    • GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和區域 API 伺服器」。 如果尚未產生 API 伺服器的 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。
    • STANDARD_CLUSTER_PROJECT:標準叢集專案的名稱。
    • SHARED_CLUSTER_PROJECT:共用叢集專案的名稱。
    • STANDARD_CLUSTER_NAME:標準叢集的名稱。
    • PEER_NAMESPACE:標準叢集中的對等互連命名空間。
    • SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:apptierrole。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • SUBJECT_LABEL_VALUE:與 SUBJECT_LABEL_KEY 相關聯的值。舉例來說,如果 SUBJECT_LABEL_KEYapp,而 SUBJECT_LABEL_VALUEbackend,則標籤為 app: backend 的工作負載會接收流量。
    • PEER_LABEL_KEY:用於選取對等工作負載的標籤鍵。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • PEER_LABEL_VALUE:與 PEER_LABEL_KEY 相關聯的值。

為標準叢集建立跨專案輸出政策

  1. 如要在標準叢集之間建立叢集輸出政策,請建立並套用下列自訂資源:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: STANDARD_CLUSTER_2_PROJECT
      name: allow-egress-from-standard-cluster-2-to-standard-cluster-1
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            clusters:
              matchLabels:
                kubernetes.io/metadata.name: STANDARD_CLUSTER_2_NAME
            namespaces:
              matchLabels:
                kubernetes.io/metadata.name: SUBJECT_NAMESPACE
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - STANDARD_CLUSTER_1_PROJECT
            workloadSelector:
              labelSelector:
                clusters:
                  matchLabels:
                    kubernetes.io/metadata.name: STANDARD_CLUSTER_1_NAME
                namespaces:
                  matchLabels:
                    kubernetes.io/metadata.name: PEER_NAMESPACE
                workloads:
                  matchLabels:
                    PEER_LABEL_KEY: PEER_LABEL_VALUE
    EOF
    

    更改下列內容:

    • GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和區域 API 伺服器」。 如果尚未產生 API 伺服器的 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。
    • STANDARD_CLUSTER_1_PROJECT:接收流量的標準叢集專案名稱。
    • STANDARD_CLUSTER_2_PROJECT:流量來源的標準叢集專案名稱。
    • STANDARD_CLUSTER_1_NAME:接收流量的標準叢集名稱。
    • STANDARD_CLUSTER_2_NAME:流量來源的標準叢集名稱。
    • SUBJECT_NAMESPACE:標準叢集中的主體命名空間。
    • PEER_NAMESPACE:標準叢集中的對等互連命名空間。
    • SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:apptierrole。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • SUBJECT_LABEL_VALUE:與 SUBJECT_LABEL_KEY 相關聯的值。舉例來說,如果 SUBJECT_LABEL_KEYapp,且 SUBJECT_LABEL_VALUEbackend,則具有 app: backend 標籤的工作負載會傳送流量。
    • PEER_LABEL_KEY:用於選取對等工作負載的標籤鍵。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • PEER_LABEL_VALUE:與 PEER_LABEL_KEY 相關聯的值。
  2. 如要在標準叢集和共用叢集之間建立輸出叢集間政策,請建立並套用下列自訂資源:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: STANDARD_CLUSTER_PROJECT
      name: allow-egress-from-standard-cluster-to-shared-cluster
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        userWorkloadSelector:
          labelSelector:
            clusters:
              matchLabels:
                kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME
            namespaces:
              matchLabels:
                kubernetes.io/metadata.name: SUBJECT_NAMESPACE
            workloads:
              matchLabels:
                SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - SHARED_CLUSTER_PROJECT
            workloadSelector:
              labelSelector:
                workloads:
                  matchLabels:
                    PEER_LABEL_KEY: PEER_LABEL_VALUE
    EOF
    

    更改下列內容:

    • GLOBAL_API_SERVER:全域 API 伺服器的 kubeconfig 路徑。詳情請參閱「全域和區域 API 伺服器」。 如果尚未產生 API 伺服器的 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。
    • STANDARD_CLUSTER_PROJECT:標準叢集專案的名稱。
    • SHARED_CLUSTER_PROJECT:共用叢集專案的名稱。
    • STANDARD_CLUSTER_NAME:標準叢集的名稱。
    • SUBJECT_NAMESPACE:標準叢集中的主體命名空間。
    • SUBJECT_LABEL_KEY:用於選取主體工作負載的標籤鍵。例如:apptierrole。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • SUBJECT_LABEL_VALUE:與 SUBJECT_LABEL_KEY 相關聯的值。舉例來說,如果 SUBJECT_LABEL_KEYapp,且 SUBJECT_LABEL_VALUEbackend,則具有 app: backend 標籤的工作負載會傳送流量。
    • PEER_LABEL_KEY:用於選取對等工作負載的標籤鍵。如果您要參照 VM 標籤,必須為這個鍵新增前置字元;請參閱這份清單後方的警告。
    • PEER_LABEL_VALUE:與 PEER_LABEL_KEY 相關聯的值。