Membuat kebijakan jaringan lintas project

Halaman ini memberikan petunjuk untuk mengonfigurasi kebijakan jaringan traffic lintas project di Google Distributed Cloud (GDC) air-gapped.

Traffic lintas project mengacu pada komunikasi antara layanan dan workload dari namespace project yang berbeda, tetapi dalam organisasi yang sama.

Layanan dan workload dalam project diisolasi dari layanan dan workload eksternal secara default. Namun, layanan dan beban kerja dari namespace project yang berbeda dan dalam organisasi yang sama dapat saling berkomunikasi dengan menerapkan kebijakan jaringan traffic lintas project.

Secara default, kebijakan ini berlaku secara global di semua zona. Untuk mengetahui informasi selengkapnya tentang resource global di semesta GDC, lihat Ringkasan multi-zona.

Untuk menerapkan traffic lintas project dalam satu zona, lihat Membuat kebijakan lintas project tingkat beban kerja zona tunggal.

Sebelum memulai

Untuk mengonfigurasi kebijakan jaringan traffic lintas project, Anda harus memiliki hal berikut:

  • Peran identitas dan akses yang diperlukan. Untuk mengelola kebijakan project tertentu, Anda memerlukan peran project-networkpolicy-admin. Untuk lingkungan multi-zona tempat Anda perlu mengelola kebijakan yang mencakup semua zona, Anda memerlukan peran global-project-networkpolicy-admin. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan peran dan akses yang telah ditetapkan.
  • Project yang ada. Untuk mengetahui informasi selengkapnya, lihat Membuat project.
  • Untuk kebijakan jaringan keluar, Anda juga harus menonaktifkan perlindungan pemindahan data yang tidak sah untuk project.

Membuat kebijakan lintas project

Anda dapat menentukan kebijakan traffic lintas project ingress atau egress untuk mengelola komunikasi antar-project.

Membuat kebijakan lintas project ingress

Untuk mengizinkan koneksi ke workload atau layanan project Anda dari workload di project lain dalam organisasi Anda, Anda harus mengonfigurasi aturan firewall ingress.

Kebijakan ini berlaku untuk semua zona di organisasi Anda.

Ikuti langkah-langkah berikut untuk membuat aturan firewall baru dan mengizinkan traffic masuk dari beban kerja di project lain:

Konsol

  1. Di konsol GDC project yang Anda konfigurasi, buka Networking > Firewall di menu navigasi untuk membuka halaman Firewall.
  2. Klik Buat di panel tindakan untuk mulai membuat aturan firewall baru.
  3. Di halaman Firewall rule details, isi informasi berikut:

    1. Di kolom Nama, masukkan nama yang valid untuk aturan firewall Anda.
    2. Di bagian Direction of traffic, pilih Ingress untuk mengizinkan traffic masuk dari beban kerja di project lain.
    3. Di bagian Target, pilih salah satu opsi berikut:
      • Semua beban kerja pengguna: mengizinkan koneksi ke beban kerja project yang Anda konfigurasi.
      • Service: menunjukkan bahwa aturan firewall ini menargetkan layanan tertentu dalam project yang Anda konfigurasi.
    4. Jika target Anda adalah layanan project, pilih nama layanan dari daftar layanan yang tersedia di menu drop-down Layanan.
    5. Di bagian Dari, pilih salah satu dari dua opsi berikut:
      • Semua project: mengizinkan koneksi dari workload di semua project dalam organisasi yang sama.
      • Project lain dan Semua workload pengguna: mengizinkan koneksi dari workload di project lain dalam organisasi yang sama.
    6. Jika Anda hanya ingin mentransfer beban kerja dari project lain, pilih project yang dapat Anda akses dari daftar project di menu drop-down Project ID.
    7. Jika target Anda adalah semua workload pengguna, pilih salah satu opsi berikut di bagian Protokol dan port:
      • Izinkan semua: mengizinkan koneksi menggunakan protokol atau port apa pun.
      • Protokol dan port yang ditentukan: mengizinkan koneksi hanya menggunakan protokol dan port yang Anda tentukan di kolom yang sesuai untuk aturan firewall ingress.
  4. Di halaman Firewall rule details, klik Create.

Anda kini telah mengizinkan koneksi dari workload project lain dalam organisasi yang sama. Setelah membuat aturan firewall, aturan tersebut akan terlihat dalam tabel di halaman Firewall.

Untuk membuat kebijakan ingress timbal balik ke arah lain, buka konsol GDC project lain dan ulangi prosesnya.

API

Kebijakan berikut memungkinkan workload di project PROJECT_1 mengizinkan koneksi dari workload di project PROJECT_2, serta traffic kembali untuk alur yang sama. Terapkan kebijakan:

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

Ganti GLOBAL_API_SERVER dengan jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk mengetahui detailnya.

Perintah sebelumnya mengizinkan PROJECT_2 untuk membuka PROJECT_1, tetapi tidak mengizinkan koneksi yang dimulai dari PROJECT_1 ke PROJECT_2. Untuk yang terakhir, Anda memerlukan kebijakan timbal balik di project PROJECT_2. Menerapkan kebijakan timbal balik:

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

Koneksi kini diizinkan ke dan dari PROJECT_1 dan PROJECT_2.

Membuat kebijakan lintas project untuk traffic keluar

Saat Anda memberikan kebijakan traffic lintas project masuk untuk mengizinkan beban kerja dalam satu project mengizinkan koneksi dari beban kerja dalam project lain, tindakan ini juga memberikan traffic kembali untuk alur yang sama. Oleh karena itu, Anda tidak memerlukan kebijakan jaringan traffic lintas project keluar di project asli.

Selesaikan langkah-langkah berikut untuk membuat aturan firewall baru dan mengizinkan traffic keluar dari beban kerja dalam project:

Konsol

  1. Di konsol GDC project yang Anda konfigurasi, buka Networking > Firewall di menu navigasi untuk membuka halaman Firewall.
  2. Di panel tindakan, klik Create untuk membuat aturan firewall baru.
  3. Di halaman Firewall rule details, isi informasi berikut:

    1. Di kolom Nama, masukkan nama yang valid untuk aturan firewall Anda.
    2. Di bagian Direction of traffic, pilih Egress untuk menunjukkan bahwa aturan firewall ini mengontrol traffic keluar.
    3. Di bagian Target, pilih salah satu opsi berikut:
      • Semua beban kerja pengguna: mengizinkan koneksi dari beban kerja project yang Anda konfigurasi.
      • Service: menunjukkan bahwa aturan firewall ini menargetkan layanan tertentu dalam project yang Anda konfigurasi.
    4. Jika target Anda adalah layanan project, pilih nama layanan dari daftar layanan yang tersedia di menu drop-down Layanan.
    5. Di bagian Tujuan, pilih salah satu dari dua opsi berikut:
      • Semua project: mengizinkan koneksi ke workload di semua project dalam organisasi yang sama.
      • Project lain dan Semua workload pengguna: mengizinkan koneksi ke workload di project lain dalam organisasi yang sama.
    6. Jika Anda hanya ingin mentransfer beban kerja ke project lain, pilih project yang dapat Anda akses dari daftar project di menu drop-down Project ID.
    7. Jika target Anda adalah semua workload pengguna, pilih salah satu opsi berikut di bagian Protokol dan port:
      • Izinkan semua: mengizinkan koneksi menggunakan protokol atau port apa pun.
      • Protokol dan port yang ditentukan: mengizinkan koneksi hanya menggunakan protokol dan port yang Anda tentukan di kolom yang sesuai untuk aturan firewall keluar.
  4. Di halaman Firewall rule details, klik Create.

Sekarang Anda telah mengizinkan koneksi ke workload project lain dalam organisasi yang sama. Setelah membuat aturan firewall, aturan tersebut akan terlihat dalam tabel di halaman Firewall.

Untuk membuat kebijakan keluar timbal balik ke arah lain, buka konsol GDC project lain dan ulangi prosesnya.

API

Kebijakan berikut memungkinkan workload di project PROJECT_1 mengizinkan koneksi ke workload di project PROJECT_2. Terapkan kebijakan:

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

Ganti kode berikut:

  • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
  • PROJECT_1: Nama project yang menerima traffic.
  • PROJECT_2: Nama project asal traffic.
  • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya, app, tier, atau role.
  • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka beban kerja dengan label app: backend akan menerima traffic.
  • PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.
  • PEER_LABEL_VALUE: nilai yang terkait dengan PEER_LABEL_KEY.

Perintah sebelumnya mengizinkan koneksi keluar dari PROJECT_1 ke PROJECT_2, tetapi tidak mengizinkan koneksi dari PROJECT_2 ke PROJECT_1. Untuk yang terakhir, Anda memerlukan kebijakan timbal balik di project PROJECT_2. Menerapkan kebijakan timbal balik:

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

Membuat kebijakan lintas project tingkat workload egress

  • Untuk membuat kebijakan lintas project tingkat beban kerja egress, buat dan terapkan resource kustom berikut:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • PROJECT_1: Nama project yang menerima traffic.
    • PROJECT_2: Nama project asal traffic.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka workload dengan label app: backend akan mengirimkan traffic.
    • PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.
    • PEER_LABEL_VALUE: nilai yang terkait dengan PEER_LABEL_KEY.

Membuat kebijakan lintas project tingkat workload zona tunggal

Kebijakan jaringan tingkat beban kerja dapat menerapkan PNP di satu zona. Label tertentu dapat ditambahkan ke workload dalam satu zona, sehingga Anda dapat mengontrol komunikasi antara setiap workload dalam satu project atau di project yang berbeda untuk zona tersebut.

Membuat kebijakan lintas project tingkat workload ingress zona tunggal

  1. Untuk membuat kebijakan lintas project tingkat beban kerja ingress zona tunggal, buat dan terapkan resource kustom berikut:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • PROJECT_1: Nama project yang menerima traffic.
    • PROJECT_2: Nama project asal traffic.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka beban kerja dengan label app: backend akan menerima traffic.
    • PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.
    • PEER_LABEL_VALUE: nilai yang terkait dengan PEER_LABEL_KEY.
    • ZONE_SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih zona subjek. Misalnya, zone, atau region.
    • ZONE_SUBJECT_LABEL_VALUE: nilai yang terkait dengan ZONE_SUBJECT_LABEL_KEY. Kolom ini menentukan zona mana yang menerima traffic. Misalnya, jika ZONE_SUBJECT_LABEL_KEY adalah zone, dan ZONE_SUBJECT_LABEL_VALUE adalah us-central1-a, maka beban kerja dengan label zone: us-central1-a akan menerima traffic.
    • ZONE_PEER_LABEL_KEY: kunci label yang digunakan untuk memilih zona yang terkait dengan peer.
    • ZONE_PEER_LABEL_VALUE: nilai yang terkait dengan ZONE_PEER_LABEL_KEY.

Membuat kebijakan lintas project tingkat workload egress satu zona

  • Untuk membuat kebijakan lintas project tingkat beban kerja egress zona tunggal, buat dan terapkan resource kustom berikut:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • PROJECT_1: Nama project yang menerima traffic.
    • PROJECT_2: Nama project asal traffic.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka workload dengan label app: backend akan mengirimkan traffic.
    • PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.
    • PEER_LABEL_VALUE: nilai yang terkait dengan PEER_LABEL_KEY.
    • ZONE_SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih zona subjek. Misalnya, zone, atau region.
    • ZONE_SUBJECT_LABEL_VALUE: nilai yang terkait dengan ZONE_SUBJECT_LABEL_KEY. Misalnya, jika ZONE_SUBJECT_LABEL_KEY adalah zone, dan ZONE_SUBJECT_LABEL_VALUE adalah us-central1-a, maka workload dengan label zone: us-central1-a akan mengirimkan traffic.
    • ZONE_PEER_LABEL_KEY: kunci label yang digunakan untuk memilih zona yang terkait dengan peer.
    • ZONE_PEER_LABEL_VALUE: nilai yang terkait dengan ZONE_PEER_LABEL_KEY.

Membuat kebijakan lintas project untuk cluster standar

Cluster standar adalah cluster Kubernetes yang tercakup dalam project yang memberikan kontrol, fleksibilitas, dan izin admin cluster yang lebih besar.

Membuat kebijakan lintas project ingress untuk cluster standar

  1. Untuk membuat kebijakan ingress antar-cluster antara cluster standar, buat dan terapkan resource kustom berikut:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • STANDARD_CLUSTER_1_PROJECT: nama project cluster standar yang menerima traffic.
    • STANDARD_CLUSTER_2_PROJECT: nama project cluster standar tempat traffic berasal.
    • STANDARD_CLUSTER_1_NAME: nama cluster standar yang menerima traffic.
    • STANDARD_CLUSTER_2_NAME: nama cluster standar tempat traffic berasal.
    • SUBJECT_NAMESPACE: namespace subjek di cluster standar.
    • PEER_NAMESPACE: namespace peer di cluster standar.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka beban kerja dengan label app: backend akan menerima traffic.
    • PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.
    • PEER_LABEL_VALUE: nilai yang terkait dengan PEER_LABEL_KEY.
  2. Untuk membuat kebijakan ingress antar-cluster antara cluster standar dan bersama, buat dan terapkan resource kustom berikut:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • STANDARD_CLUSTER_PROJECT: nama project cluster standar.
    • SHARED_CLUSTER_PROJECT: nama project cluster bersama.
    • STANDARD_CLUSTER_NAME: Nama cluster standar.
    • PEER_NAMESPACE: namespace peer di cluster standar.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka beban kerja dengan label app: backend akan menerima traffic.
    • PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.
    • PEER_LABEL_VALUE: nilai yang terkait dengan PEER_LABEL_KEY.

Membuat kebijakan lintas project egress untuk cluster standar

  1. Untuk membuat kebijakan egress antar-cluster antara cluster standar, buat dan terapkan resource kustom berikut:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • STANDARD_CLUSTER_1_PROJECT: nama project cluster standar yang menerima traffic.
    • STANDARD_CLUSTER_2_PROJECT: nama project cluster standar tempat traffic berasal.
    • STANDARD_CLUSTER_1_NAME: nama cluster standar yang menerima traffic.
    • STANDARD_CLUSTER_2_NAME: nama cluster standar tempat traffic berasal.
    • SUBJECT_NAMESPACE: namespace subjek di cluster standar.
    • PEER_NAMESPACE: namespace peer di cluster standar.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka workload dengan label app: backend akan mengirimkan traffic.
    • PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.
    • PEER_LABEL_VALUE: nilai yang terkait dengan PEER_LABEL_KEY.
  2. Untuk membuat kebijakan egress antar-cluster antara cluster standar dan bersama, buat dan terapkan resource kustom berikut:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • STANDARD_CLUSTER_PROJECT: nama project cluster standar.
    • SHARED_CLUSTER_PROJECT: nama project cluster bersama.
    • STANDARD_CLUSTER_NAME: Nama cluster standar.
    • SUBJECT_NAMESPACE: namespace subjek di cluster standar.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka workload dengan label app: backend akan mengirimkan traffic.
    • PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.
    • PEER_LABEL_VALUE: nilai yang terkait dengan PEER_LABEL_KEY.