Mengelola resource tim di seluruh fleet

Halaman ini menjelaskan cara menggunakan Config Sync dan Terraform untuk membuat resource yang tercakup dalam tim secara dinamis di seluruh kumpulan cluster. Config Sync memperluas kemampuan pengelolaan tim fleet untuk membuat dan mengelola konfigurasi infrastruktur dan cluster di seluruh fleet Anda.

Panduan ini mengasumsikan bahwa Anda sudah memahami konsep pengelolaan tim fleet seperti cakupan tim dan namespace fleet. Untuk mengetahui informasi selengkapnya, lihat ringkasan pengelolaan tim fleet.

Untuk tutorial end-to-end dengan contoh konfigurasi, lihat tutorial tenancy fleet di repositori contoh.

Untuk mengetahui daftar kolom yang didukung untuk Config Sync di Terraform, lihat dokumentasi referensi Terraform untuk fitur fleet GKE.

Contoh alur kerja

Anda adalah administrator platform yang ingin membuat resource secara dinamis di seluruh kumpulan cluster tempat tim yang berbeda memiliki kebutuhan yang berbeda. Misalnya, Anda mungkin ingin menerapkan NetworkPolicy ke namespace tim Backend, tetapi tidak ke namespace tim Frontend. Dalam skenario ini, prosedur untuk membuat resource cakupan tim di seluruh namespace adalah sebagai berikut:

  1. Pilih atau buat armada tempat Anda ingin mengelola resource untuk tim.
  2. Siapkan sumber tepercaya Anda. Sumber tepercaya berisi objek NamespaceSelector yang Anda gunakan untuk memilih namespace tingkat fleet dalam cakupan tim, dan resource apa pun (seperti NetworkPolicy) yang ingin Anda sinkronkan di seluruh namespace ini.

  3. Buat konfigurasi default tingkat armada untuk Config Sync. Config Sync menggunakan setelan default ini saat menyinkronkan dari sumber tepercaya yang dibuat pada langkah sebelumnya. Setelan Config Sync ini berlaku untuk cluster baru yang dibuat di fleet.

  4. Buat cluster di fleet Anda.

  5. Buat cakupan dan namespace tim Frontend dan Backend Anda agar Config Sync dapat mendeteksi dan menyelaraskan resource di namespace Anda.

Setelah Anda menyelesaikan langkah-langkah ini, Config Sync akan membuat dan menerapkan NetworkPolicy berdasarkan NamespaceSelector ke namespace tim Backend. Jika Anda mengubah atau menambahkan resource, Config Sync terus mendeteksi dan menerapkan perubahan apa pun pada file konfigurasi, cakupan tim, namespace fleet, dan anggota fleet.

Harga

Fitur Config Sync dan pengelolaan tim fleet hanya tersedia untuk pengguna yang telah mengaktifkan GKE Enterprise. Untuk mengetahui informasi selengkapnya tentang harga GKE Enterprise, lihat halaman Harga GKE.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Install the Google Cloud CLI.

  7. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Buat, atau miliki akses ke, sumber tepercaya (baik repositori Git maupun image OCI) tempat Anda dapat menyimpan file konfigurasi. Contoh dalam panduan ini menggunakan repositori Git.
  11. Peran yang diperlukan

    Untuk mendapatkan izin yang diperlukan untuk membuat resource tim bagi armada Anda, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:

    Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

    Mendapatkan kredensial pengguna

    Untuk menjalankan perintah Terraform dalam panduan ini di lingkungan lokal, jalankan perintah berikut untuk mendapatkan kredensial pengguna baru:

    gcloud auth application-default login
    

    Menyiapkan fleet Anda

    Di bagian ini, Anda akan membuat fleet dan mengaktifkan layanan yang diperlukan.

    Untuk menyiapkan armada, selesaikan langkah-langkah berikut:

    1. Buat direktori untuk file Terraform konfigurasi armada. Ke direktori tersebut, tambahkan file main.tf dan file variables.tf.

    2. Di file variables.tf, tambahkan variabel berikut:

      variable "project" {
        type = string
        description = "GCP project ID"
      }

    3. Di file main.tf, tambahkan resource berikut:

      terraform {
        required_providers {
          google = {
            source = "hashicorp/google"
            version = ">= 5.16.0"
          }
        }
      }
      
      provider "google" {
        # project variable must be provided at runtime
        project = var.project
      }
      
      # Enable API services
      resource "google_project_service" "services" {
        for_each = toset([
          "gkehub.googleapis.com",
          "container.googleapis.com",
          "connectgateway.googleapis.com",
          "cloudresourcemanager.googleapis.com",
          "iam.googleapis.com",
          "anthos.googleapis.com",
          "anthosconfigmanagement.googleapis.com",
        ])
        service = each.value
        disable_on_destroy = false
      }
      
      # Declare a fleet in the project
      resource "google_gke_hub_fleet" "default" {
        display_name = "demo"
      
        depends_on = [google_project_service.services]
      }
    4. Ekspor variabel PROJECT_ID:

      export TF_VAR_project=PROJECT_ID
      

      Ganti PROJECT_ID dengan project ID tempat Anda ingin membuat fleet.

    5. Lakukan inisialisasi Terraform di direktori yang Anda buat:

      terraform init
      
    6. Periksa apakah perubahan yang Anda usulkan dengan Terraform sesuai dengan rencana yang diharapkan:

      terraform plan
      
    7. Buat fleet, aktifkan API, dan buat akun layanan:

      terraform apply
      

      Terkadang perlu waktu beberapa menit untuk mengaktifkan semua layanan.

    Menyiapkan sumber tepercaya

    Di bagian ini, Anda menambahkan file konfigurasi ke sumber tepercaya. Anda memerlukan objek NamespaceSelector untuk setiap cakupan tim yang ingin Anda gunakan. Misalnya, jika Anda memiliki tim Frontend dan Backend, Anda harus membuat objek NamespaceSelector untuk setiap tim. Objek NamespaceSelector memilih semua atau beberapa namespace dalam cakupan tim. Anda dapat menambahkan resource tim tambahan ke sumber tepercaya, seperti NetworkPolicy. Saat membuat resource ini, Anda mereferensikan NamespaceSelector sehingga Config Sync dapat men-deploy dan menyinkronkan resource tersebut secara dinamis di seluruh namespace.

    Untuk menyiapkan sumber tepercaya Anda, selesaikan langkah-langkah berikut:

    1. Di sumber tepercaya Anda, buat direktori untuk file konfigurasi yang ingin disinkronkan oleh Config Sync.

    2. Untuk setiap tim, buat objek NamespaceSelector di direktori konfigurasi Anda:

      apiVersion: configmanagement.gke.io/v1
      kind: NamespaceSelector
      metadata:
         name: NAMESPACE_SELECTOR_NAME
      spec:
        mode: dynamic
        selector:
          matchLabels:
            fleet.gke.io/fleet-scope: SCOPE_NAME
      

      Ganti kode berikut:

      • NAMESPACE_SELECTOR_NAME: nama untuk objek NamespaceSelector, misalnya backend-scope.
      • SCOPE_NAME: nama cakupan tim Anda, misalnya backend.

      Namespace apa pun yang merupakan bagian dari namespace fleet akan otomatis memiliki label fleet.gke.io/fleet-scope: SCOPE_NAME. NamespaceSelector memilih semua namespace armada cakupan tim yang menggunakan label tersebut. Untuk contoh selengkapnya tentang cara menyertakan atau mengecualikan namespace, lihat contoh NamespaceSelector.

    3. Buat objek apa pun yang ingin Anda sinkronkan di seluruh namespace.

      Untuk menyinkronkan objek hanya ke tim tertentu, tetapkan anotasi berikut dalam metadata objek tersebut:

      annotations:
        configmanagement.gke.io/namespace-selector: NAMESPACE_SELECTOR_NAME
      

      Misalnya, NetworkPolicy untuk tim Backend mungkin menyerupai berikut:

      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: be-deny-all
        annotations:
          configmanagement.gke.io/namespace-selector: backend-scope # Actuate this resource in the namespaces with labels matched by the namespace selector
      spec:
        ingress:
        - from:
          - podSelector: {}
        podSelector:
          matchLabels: null

    Membuat default tingkat armada untuk Config Sync

    Di bagian ini, Anda akan membuat default tingkat fleet untuk Config Sync, yang menerapkan konfigurasi Config Sync yang sama ke semua cluster yang dibuat di fleet Anda.

    Untuk membuat konfigurasi default tingkat armada untuk Config Sync, selesaikan langkah-langkah berikut:

    1. Buat direktori untuk file Terraform konfigurasi fleet-default. Ke direktori tersebut, tambahkan file main.tf dan file variables.tf.

    2. Di file variables.tf, tambahkan variabel berikut:

      variable "project" {
        type = string
        description = "GCP project ID"
      }

    3. Di file main.tf, tambahkan resource berikut untuk mengonfigurasi setelan Config Sync:

      git

      terraform {
        required_providers {
          google = {
            source = "hashicorp/google"
            version = ">=5.16.0"
           }
         }
       }
      
      provider "google" {
        project = var.project
      }
      
      resource "google_gke_hub_feature" "feature" {
        name = "configmanagement"
        location = "global"
        provider = google
        fleet_default_member_config {
          configmanagement {
          version = "VERSION"
       config_sync {
         source_format = "unstructured"
         git {
           sync_repo = "REPO"
           sync_branch = "BRANCH"
           policy_dir = "DIRECTORY"
           secret_type = "SECRET"
              }
            }
          }
        }
      }
      

      Ganti kode berikut:

      • VERSION: (opsional) nomor versi Config Sync. Jika dibiarkan kosong, defaultnya adalah versi terbaru.
      • REPO: URL ke repositori yang berisi file konfigurasi Anda.
      • BRANCH: cabang repositori, misalnya main.
      • DIRECTORY: jalur dalam repositori Git yang merepresentasikan tingkat teratas repositori yang ingin Anda sinkronkan.
      • SECRET: jenis autentikasi secret.

      Untuk mengetahui daftar lengkap setelan yang didukung di blok git Config Sync, lihat dokumentasi referensi Terraform untuk fitur hub GKE.

      OCI

      terraform {
        required_providers {
          google = {
            source = "hashicorp/google"
            version = ">=5.16.0"
           }
         }
       }
      
      provider "google" {
        project = var.project
      }
      
      resource "google_gke_hub_feature" "feature" {
        name = "configmanagement"
        location = "global"
        provider = google
        fleet_default_member_config {
          configmanagement {
          version = "VERSION"
          config_sync {
          source_format = "unstructured"
          oci {
           sync_repo = "REPO"
           policy_dir = "DIRECTORY"
           secret_type = "SECRET"
           }
          }
          }
        }
      }
      

      Ganti kode berikut:

      • VERSION: nomor versi Config Sync. Jika dibiarkan kosong, defaultnya adalah versi terbaru.
      • REPO: URL ke repositori image OCI yang berisi file konfigurasi.
      • DIRECTORY: jalur absolut direktori yang berisi resource yang ingin Anda sinkronkan. Biarkan kosong untuk menggunakan direktori root.
      • SECRET: jenis autentikasi secret.

      Untuk mengetahui daftar lengkap setelan yang didukung di blok oci Config Sync, lihat dokumentasi referensi Terraform untuk fitur hub GKE.

      Sebagai contoh, file main.tf berikut mengonfigurasi Config Sync untuk menyinkronkan dari repositori Git dan menyinkronkan semua objek yang ada di direktori config:

      terraform {
        required_providers {
          google = {
            source = "hashicorp/google"
            version = ">= 5.16.0"
          }
        }
      }
      
      provider "google" {
        project = var.project
      }
      
      resource "google_gke_hub_feature" "feature" {
        name = "configmanagement"
        location = "global"
        provider = google
        fleet_default_member_config {
          configmanagement {
            # version = "1.17.0" # Use the default latest version; if specifying a version, it must be at or after 1.17.0
            config_sync {
              source_format = "unstructured"
              git {
                sync_repo = "https://github.com/GoogleCloudPlatform/anthos-config-management-samples"
                sync_branch = "main"
                policy_dir = "fleet-tenancy/config"
                secret_type = "none"
              }
            }
          }
        }
      }
    4. Lakukan inisialisasi Terraform di direktori yang Anda buat:

      terraform init
      
    5. Periksa apakah perubahan yang Anda usulkan dengan Terraform sesuai dengan rencana yang diharapkan:

      terraform plan
      
    6. Buat konfigurasi anggota armada default:

      terraform apply
      

    Membuat cluster di fleet Anda

    Di bagian ini, Anda akan membuat konfigurasi cluster bersama, lalu membuat cluster di fleet Anda.

    Untuk membuat dan mendaftarkan cluster baru ke fleet Anda, selesaikan langkah-langkah berikut:

    1. Buat direktori untuk file Terraform konfigurasi cluster. Ke direktori tersebut, tambahkan file main.tf dan file variables.tf.

    2. Di file variables.tf, tambahkan variabel berikut:

      variable "project" {
        type = string
        description = "GCP project ID"
      }

    3. Buat file cluster.tf yang berisi nilai default yang digunakan di semua cluster Anda, seperti project dan ID fleet:

      variable "location" {
        type = string
      }
      
      variable "cluster_name" {
        type = string
      }
      
      data "google_project" "project" {
        provider = google
      }
      
      resource "google_container_cluster" "cluster" {
       provider = google
       name               = var.cluster_name
       location           = var.location
       initial_node_count = 3
       project = data.google_project.project.project_id
       fleet {
         project = data.google_project.project.project_id
       }
       workload_identity_config {
         workload_pool = "${data.google_project.project.project_id}.svc.id.goog"
       }
       deletion_protection = false
      }
      
    4. Di file main.tf, tambahkan resource berikut:

      terraform {
        required_providers {
          google = {
          source = "hashicorp/google"
          version = ">=5.16.0"
          }
        }
      }
      
      provider "google" {
        project = var.project
      }
      
      module "MODULE_NAME" {
        source = "CLUSTER_CONFIGURATION_FILEPATH"
        cluster_name = "CLUSTER_NAME"
        location="CLUSTER_LOCATION"
      }
      

      Ganti kode berikut:

      • MODULE_NAME: nama yang ingin Anda berikan pada modul cluster. MODULE_NAME dan CLUSTER_NAME dapat memiliki nilai yang sama, misalnya us-east-cluster.
      • CLUSTER_CONFIGURATION_FILEPATH: jalur relatif ke file cluster.tf yang Anda buat.
      • CLUSTER_NAME: nama cluster Anda. MODULE_NAME dan CLUSTER_NAME dapat memiliki nilai yang sama, misalnya us-east-cluster.
      • CLUSTER_LOCATION: lokasi cluster Anda, misalnya us-east1.

      Anda dapat membuat cluster sebanyak yang Anda inginkan. Sebagai contoh, file main.tf berikut membuat 3 cluster di region yang berbeda:

      terraform {
        required_providers {
          google = {
            source = "hashicorp/google"
            version = ">= 5.16.0"
          }
        }
      }
      
      provider "google" {
        project = var.project
      }
      
      module "us-west-cluster" {
        source = "./cluster"
        cluster_name = "us-west-cluster"
        location="us-west1-a"
      }
      
      module "us-east-cluster" {
        source = "./cluster"
        cluster_name = "us-east-cluster"
        location="us-east1-b"
      }
      
      module "us-central-cluster" {
        source = "./cluster"
        cluster_name = "us-central-cluster"
        location="us-central1-c"
      }
    5. Lakukan inisialisasi Terraform di direktori yang Anda buat:

      terraform init
      
    6. Periksa apakah perubahan yang Anda usulkan dengan Terraform sesuai dengan rencana yang diharapkan:

      terraform plan
      
    7. Buat cluster:

      terraform apply
      

    Mengonfigurasi cakupan tim dan namespace fleet

    Di bagian ini, Anda akan membuat cakupan tim dan mengaitkan cluster dengan cakupan tersebut. Kemudian, Anda membuat namespace fleet yang diperlukan, misalnya satu untuk setiap tim, di setiap cakupan, dan Config Sync akan membuat resource di seluruh namespace Anda.

    Untuk mengonfigurasi cakupan dan namespace tim, selesaikan langkah-langkah berikut:

    1. Buat direktori untuk file Terraform konfigurasi namespace dan cakupan tim. Ke direktori tersebut, tambahkan file main.tf dan file variables.tf.

    2. Di file variables.tf, tambahkan variabel berikut:

      variable "project" {
        type = string
        description = "GCP project ID"
      }
      

    3. Di file main.tf, tambahkan resource berikut:

      1. Tambahkan informasi penyedia:

        terraform {
          required_providers {
            google = {
              source = "hashicorp/google"
              version = ">=5.16.0"
             }
           }
         }
        
        provider "google" {
          project = var.project
        }
        
      2. Tambahkan resource cakupan tim:

        resource "google_gke_hub_scope" "scope" {
          provider = google
          for_each = toset([
            "SCOPE_NAME",
            "SCOPE_NAME_2",
          ])
          scope_id = each.value
        }
        

        Ganti kode berikut:

        • SCOPE_NAME: nama cakupan tim Anda, misalnya backend.
        • SCOPE_NAME_2: cakupan tim tambahan jika Anda membuatnya.

        Anda dapat menambahkan cakupan tim sebanyak yang Anda butuhkan. Saat namespace fleet dibuat di cluster, namespace tersebut akan otomatis diberi label fleet.gke.io/fleet-scope: SCOPE_NAME, sehingga Config Sync dapat memilih namespace berdasarkan label NamespaceSelector yang ada saat menyinkronkan resource Kubernetes.

        Sebagai contoh, resource Terraform cakupan tim yang mencakup cakupan untuk tim Frontend dan Backend mungkin menyerupai berikut ini:

        resource "google_gke_hub_scope" "scope" {
          provider = google
          for_each = toset([
            "backend",
            "frontend",
          ])
          scope_id = each.value
        }
      3. Tambahkan binding keanggotaan fleet untuk setiap cluster yang ingin Anda terapkan ke cakupan tim:

        resource "google_gke_hub_membership_binding" "membership-binding" {
          provider = google
          for_each = {
            MEMBERSHIP_BINDING_NAME = {
              membership_binding_id = "MEMBERSHIP_BINDING_ID"
              scope = google_gke_hub_scope.scope["SCOPE_NAME"].name
              membership_id = "CLUSTER_NAME"
              location = "CLUSTER_LOCATION"
            }
            MEMBERSHIP_BINDING_NAME_2 = {
              membership_binding_id = "MEMBERSHIP_BINDING_ID_2"
              scope = google_gke_hub_scope.scope["SCOPE_NAME_2"].name
              membership_id = "CLUSTER_NAME_2"
              location = "CLUSTER_LOCATION_2"
            }
          }
          membership_binding_id = each.value.membership_binding_id
          scope = each.value.scope
          membership_id = each.value.membership_id
          location = each.value.location
        
          depends_on = [google_gke_hub_scope.scope]
        }
        

        Ganti kode berikut:

        • MEMBERSHIP_BINDING_NAME: nama binding keanggotaan, misalnya us-east-backend.
        • MEMBERSIP_BINDING_ID: ID binding keanggotaan. Nilai ini bisa sama dengan MEMBERSHIP_BINDING_NAME.
        • SCOPE_NAME: pemilih label yang Anda berikan pada cakupan tim saat Anda membuat NamespaceSelector, misalnya backend.
        • CLUSTER_NAME: nama cluster yang Anda buat saat membuat cluster, misalnya us-east-cluster.
        • CLUSTER_LOCATION: lokasi cluster, misalnya us-east1.

        Anda harus menentukan binding keanggotaan fleet untuk setiap cluster. Jika Anda tidak menentukan cakupan tim untuk cluster, cluster tersebut tidak akan dibuat untuk namespace tersebut. Misalnya, jika Anda memiliki tiga cluster di region us-east1, us-west1, dan us-central1, tetapi cluster us-central1 hanya untuk tim Frontend, resource binding keanggotaan Anda akan menyerupai berikut ini:

        resource "google_gke_hub_membership_binding" "membership-binding" {
          provider = google
          for_each = {
            us-east-backend = {
              membership_binding_id = "us-east-backend"
              scope = google_gke_hub_scope.scope["backend"].name
              membership_id = "us-east-cluster"
              location = "us-east1"
            }
            us-west-backend = {
              membership_binding_id = "us-west-backend"
              scope = google_gke_hub_scope.scope["backend"].name
              membership_id = "us-west-cluster"
              location = "us-west1"
            }
            us-east-frontend = {
              membership_binding_id = "us-east-frontend"
              scope = google_gke_hub_scope.scope["frontend"].name
              membership_id = "us-east-cluster"
              location = "us-east1"
            }
            us-west-frontend = {
              membership_binding_id = "us-west-frontend"
              scope = google_gke_hub_scope.scope["frontend"].name
              membership_id = "us-west-cluster"
              location = "us-west1"
            }
            us-central-frontend = {
              membership_binding_id = "us-central-frontend"
              scope = google_gke_hub_scope.scope["frontend"].name
              membership_id = "us-central-cluster"
              location = "us-central1"
            }
          }
        
          membership_binding_id = each.value.membership_binding_id
          scope = each.value.scope
          membership_id = each.value.membership_id
          location = each.value.location
        
          depends_on = [google_gke_hub_scope.scope]
        }
      4. Tambahkan namespace yang ingin Anda tentukan untuk tim Anda:

        resource "google_gke_hub_namespace" "fleet_namespace" {
          provider = google
        
          for_each = {
            FLEET_NAMESPACE = {
              scope_id = "SCOPE_NAME"
              scope_namespace_id = "FLEET_NAMESPACE_ID"
              scope = google_gke_hub_scope.scope["SCOPE_NAME"].name
            }
            FLEET_NAMESPACE_2 = {
              scope_id = "SCOPE_NAME"
              scope_namespace_id = "FLEET_NAMESPACE_ID_2"
              scope = google_gke_hub_scope.scope["SCOPE_NAME"].name
            }
        
        }
        
          scope_namespace_id = each.value.scope_namespace_id
          scope_id = each.value.scope_id
          scope = each.value.scope
        
          depends_on = [google_gke_hub_scope.scope]
        }
        

        Ganti kode berikut:

        • FLEET_NAMESPACE: nama yang ingin Anda berikan ke namespace, misalnya backend-a.
        • SCOPE_NAME: pemilih label yang Anda berikan pada cakupan tim saat Anda membuat NamespaceSelector, misalnya backend.
        • FLEET_NAMESPACE_ID: ID namespace. Nilai ini bisa sama dengan FLEET_NAMESPACE.

        Misalnya, jika Anda ingin tim Frontend dan Backend memiliki dua namespace masing-masing, resource namespace armada Anda mungkin menyerupai berikut ini:

        resource "google_gke_hub_namespace" "fleet_namespace" {
          provider = google
        
          for_each = {
            bookstore = {
              scope_id = "backend"
              scope_namespace_id = "bookstore"
              scope = google_gke_hub_scope.scope["backend"].name
            }
            shoestore = {
              scope_id = "backend"
              scope_namespace_id = "shoestore"
              scope = google_gke_hub_scope.scope["backend"].name
            }
            frontend_a = {
              scope_id = "frontend"
              scope_namespace_id = "frontend-a"
              scope = google_gke_hub_scope.scope["frontend"].name
            }
            frontend_b = {
              scope_id = "frontend"
              scope_namespace_id = "frontend-b"
              scope = google_gke_hub_scope.scope["frontend"].name
            }
          }
        
          scope_namespace_id = each.value.scope_namespace_id
          scope_id = each.value.scope_id
          scope = each.value.scope
        
          depends_on = [google_gke_hub_scope.scope]
        }
    4. Lakukan inisialisasi Terraform di direktori yang Anda buat:

      terraform init
      
    5. Periksa apakah perubahan yang Anda usulkan dengan Terraform sesuai dengan rencana yang diharapkan:

      terraform plan
      
    6. Buat cakupan dan namespace fleet:

      terraform apply
      

    Setelah Anda membuat cakupan dan namespace armada, Config Sync akan mendeteksi namespace baru tersebut dan cakupannya, memilih resource di namespace armada, dan merekonsiliasinya dengan file konfigurasi Anda.

    Anda dapat memeriksa apakah resource Anda diterapkan ke cluster yang benar dengan menggunakan nomos status atau dengan membuka tab Paket Config Sync di konsol Google Cloud dan mengubah tombol pilihan Lihat menurut ke Cluster.

    Buka Paket

    Config Sync menyinkronkan resource Anda di seluruh namespace berdasarkan cakupan tim Anda sesuai dengan konfigurasi yang disimpan di sumber tepercaya Anda. Setiap kali Anda menambahkan resource baru, selama Anda menyertakan anotasi NamespaceSelector yang benar, Config Sync akan otomatis merekonsiliasi resource tersebut di seluruh namespace tim Anda.

    Jika Anda ingin menerapkan setelan Config Sync ke cluster yang ada, lihat petunjuk untuk Mengonfigurasi default tingkat armada dalam panduan penginstalan Config Sync.

    Langkah berikutnya