Menyesuaikan penginstalan Config Sync

Dengan Config Sync, Anda dapat mengelola resource Kubernetes dengan menyinkronkan konfigurasi dari sumber tepercaya pusat, seperti repositori Git, image OCI, atau diagram Helm. Jika petunjuk penginstalan default tidak sesuai dengan kebutuhan Anda, Anda mungkin perlu menyesuaikan penginstalan Config Sync.

Halaman ini menunjukkan cara melakukan penginstalan dan konfigurasi lanjutan Config Sync. Proses penginstalan mencakup hal berikut:

  • Menginstal Config Sync di setiap cluster menggunakan Google Cloud konsol, Google Cloud CLI, atau Terraform.
  • Mengonfigurasi repositori utama, termasuk jenis sumber, format, dan autentikasi.
  • Memverifikasi penginstalan dan konfigurasi Config Sync yang berhasil.

Batasan

Config Sync tidak mendukung konfigurasi helm sebagai jenis sumber menggunakan Google Cloud konsol atau Google Cloud CLI. Anda dapat mengonfigurasi objek RootSync atau RepoSync untuk menyinkronkan dari repositori Helm menggunakan Kubernetes API, atau mendeklarasikannya di sumber tepercaya lain. Lihat Konfigurasi untuk repositori Helm untuk mengetahui informasi selengkapnya.

Sebelum memulai

Sebelum menginstal Config Sync, siapkan sumber tepercaya dan cluster yang sesuai.

Memberikan akses Config Sync ke sumber tepercaya Anda

Untuk menyinkronkan konfigurasi dari sumber tepercaya ke cluster Anda, Config Sync memerlukan akses baca-saja ke repositori Anda. Untuk mengotorisasi Config Sync agar dapat membaca konfigurasi Anda, selesaikan langkah-langkah berikut:

Meninjau persyaratan cluster

Sebelum membuat cluster, tinjau persyaratan cluster.

Menginstal Config Sync

Saat Anda menginstal Config Sync menggunakan Google Cloud konsol atau Google Cloud CLI, Config Sync akan otomatis membuat objek RootSync bernama root-sync. Anda dapat menggunakan perintah kubectl untuk mengubah root-sync dan menambahkan konfigurasi Config Sync tambahan. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Config Sync dengan perintahkubectl.

Konsol

Menginstal Config Sync

Untuk menginstal Config Sync, semua cluster harus didaftarkan ke fleet. Saat Anda menginstal Config Sync di Google Cloud konsol, memilih setiap cluster akan otomatis mendaftarkan cluster tersebut ke fleet Anda.

  1. Di Google Cloud konsol, buka halaman Config di bagian Features.

    Buka Config

  2. Klik Install Config Sync.
  3. Pilih versi Config Sync yang ingin Anda gunakan.
  4. Di bagian Installation options, pilih salah satu opsi berikut:
    • Install Config Sync on entire fleet (recommended): Config Sync diinstal di semua cluster dalam fleet.
    • Install Config Sync on individual clusters: Config Sync diinstal di cluster yang Anda pilih. Cluster yang dipilih akan otomatis didaftarkan ke fleet Anda.
  5. Jika Anda menginstal Config Sync di setiap cluster, di tabel Available clusters, pilih cluster tempat Anda ingin menginstal Config Sync.
  6. Klik Install Config Sync. Di tab Settings, setelah beberapa menit, Anda akan melihat Enabled di kolom Status untuk cluster di fleet Anda.

Men-deploy paket

Setelah mendaftarkan cluster ke fleet dan menginstal Config Sync, Anda dapat mengonfigurasi Config Sync untuk men-deploy paket ke cluster dari sumber tepercaya. Anda dapat men-deploy paket yang sama ke beberapa cluster atau men-deploy paket yang berbeda ke cluster yang berbeda. Anda dapat mengedit paket setelah men-deploy-nya, kecuali untuk beberapa setelan seperti nama paket dan jenis sinkronisasi. Untuk mengetahui informasi selengkapnya, lihat Mengelola paket.

Untuk men-deploy paket, selesaikan langkah-langkah berikut:

  1. Di Google Cloud konsol, buka Config Sync dashboard.

    Buka dasbor Config Sync

  2. Klik Deploy Package.

  3. Di tabel Select clusters for package deployment , pilih cluster yang ingin Anda deploy paketnya, lalu klik Continue.

  4. Pilih Package hosted on Git atau Package hosted on OCI sebagai jenis sumber, lalu klik Continue.

  5. Di bagian Package details, masukkan Package name, yang mengidentifikasi objek RootSync atau RepoSync.

  6. Di kolom Sync type, pilih Cluster scoped sync atau Namespace scoped sync sebagai jenis sinkronisasi.

    Cluster scoped sync membuat objek RootSync dan Namespace scoped sync membuat objek RepoSync. Untuk mengetahui informasi selengkapnya tentang objek ini, lihat Arsitektur Config Sync.

  7. Di bagian Source, selesaikan langkah-langkah berikut:

    • Untuk sumber yang dihosting di repositori Git, masukkan kolom berikut:

      1. Masukkan URL repositori Git yang Anda gunakan sebagai sumber tepercaya sebagai Repository URL.
      2. Opsional: Perbarui kolom Revision untuk memeriksa apakah Anda tidak menggunakan HEAD default.
      3. Opsional: Perbarui kolom Path jika Anda tidak ingin menyinkronkan dari repositori utama.
      4. Opsional: Perbarui kolom Branch jika Anda tidak menggunakan cabang main default.
    • Untuk sumber yang dihosting di image OCI, masukkan kolom berikut:

      1. Masukkan URL image OCI yang Anda gunakan sebagai sumber tepercaya sebagai Image.
      2. Masukkan jalur direktori yang akan disinkronkan, relatif terhadap direktori utama, sebagai Directory.
  8. (Opsional): Luaskan bagian Advanced settings untuk menyelesaikan langkah-langkah berikut:

    1. Pilih Authentication type. Config Sync memerlukan akses baca-saja ke sumber tepercaya Anda untuk membaca file konfigurasi di sumber dan menerapkannya ke cluster Anda. Kecuali jika sumber Anda tidak memerlukan autentikasi, seperti repositori publik, pastikan Anda memberikan akses baca-saja Config Sync ke repositori Git, image OCI, atau diagram Helm (khusus Google Cloud CLI). Pilih jenis autentikasi yang sama dengan yang Anda konfigurasi saat menginstal Config Sync:

      • None: Tidak menggunakan autentikasi.
      • SSH: Autentikasi menggunakan pasangan kunci SSH.
      • Cookiefile: Autentikasi menggunakan cookiefile.
      • Token: Autentikasi menggunakan token akses atau sandi.
      • Google Cloud Repository: Menggunakan akun layanan Google untuk mengakses repositori Cloud Source Repositories. Hanya pilih opsi ini jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.
      • Workload Identity: Menggunakan akun layanan Google untuk mengakses repositori Cloud Source Repositories.
    2. Masukkan angka dalam detik untuk menetapkan Sync wait time, yang menentukan berapa lama Config Sync menunggu di antara upaya untuk menarik dari sumber tepercaya.

    3. Masukkan URL Git proxy untuk proxy HTTPS yang akan digunakan saat berkomunikasi dengan sumber tepercaya.

  9. Klik Deploy Package.

    Anda akan dialihkan ke halaman Packages Config Sync. Setelah beberapa menit, Anda akan melihat Synced di kolom Sync status untuk cluster yang Anda konfigurasi.

gcloud

Sebelum melanjutkan, pastikan Anda telah mendaftarkan cluster ke fleet.

  1. Aktifkan fitur fleet ConfigManagement:

    gcloud beta container fleet config-management enable
    
  2. Siapkan konfigurasi dengan membuat file bernama apply-spec.yaml dan menyalin file YAML berikut ke dalamnya.

    Anda dapat menetapkan semua kolom opsional spec.configSync yang diperlukan saat membuat manifes, lalu menggunakan kubectl perintah untuk konfigurasi. Anda juga hanya dapat menetapkan kolom spec.configSync.enabled sebagai true dan menghapus kolom opsional. Kemudian, Anda dapat menggunakan perintah kubectl untuk membuat objek RootSync atau RepoSync tambahan yang dapat Anda kelola sepenuhnya menggunakan perintah kubectl nanti.

    # apply-spec.yaml
    
         applySpecVersion: 1
         spec:
           configSync:
             enabled: true
             # If you don't have a source of truth yet, omit the
             # following fields. You can configure them later.
             sourceType: SOURCE_TYPE
             sourceFormat: FORMAT
             syncRepo: REPO
             syncRev: REVISION
             secretType: SECRET_TYPE
             gcpServiceAccountEmail: EMAIL
             metricsGcpServiceAccountEmail: METRICS_EMAIL
             policyDir: DIRECTORY
             preventDrift: false
    

    Ganti kode berikut:

    • SOURCE_TYPE: tambahkan git untuk menyinkronkan dari repositori Git, oci untuk menyinkronkan dari image OCI, atau helm untuk menyinkronkan dari diagram Helm. Jika tidak ada nilai yang ditentukan, nilai defaultnya adalah git.
    • FORMAT: tambahkan unstructured untuk menggunakan repositori tak terstruktur atau tambahkan hierarchy untuk menggunakan repositori hierarkis. Nilai ini bersifat case-sensitive. Kolom ini bersifat opsional dan nilai defaultnya adalah hierarchy. Sebaiknya tambahkan unstructured, karena format ini memungkinkan Anda mengatur konfigurasi dengan cara yang paling nyaman bagi Anda.
    • REPO: tambahkan URL sumber tepercaya. URL repositori Git dan Helm menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples. Jika Anda berencana menggunakan SSH sebagai secretType, masukkan URL Anda dengan protokol SSH. Kolom ini wajib diisi dan jika Anda tidak memasukkan protokol, URL akan diperlakukan sebagai URL HTTPS.

      URL OCI menggunakan format berikut: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Secara default, image ditarik dari tag latest, tetapi Anda dapat menarik image berdasarkan TAG atau DIGEST. Tentukan TAG atau DIGEST di PACKAGE_NAME:

      • Untuk menarik berdasarkan TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Untuk menarik berdasarkan DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • REVISION: revisi Git (tag atau hash) atau nama cabang yang akan disinkronkan. Saat menggunakan hash, hash tersebut harus berupa hash lengkap, bukan bentuk yang disingkat.

    • SECRET_TYPE: salah satu secretTypes berikut:

      git

      • none: Tidak menggunakan autentikasi.
      • ssh: Menggunakan pasangan kunci SSH.
      • cookiefile: Menggunakan cookiefile.
      • token: Menggunakan token.
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses repositori Cloud Source Repositories atau Secure Source Manager. Jika memilih jenis autentikasi ini, Anda harus membuat binding kebijakan IAM setelah selesai mengonfigurasi Config Sync. Untuk mengetahui detailnya, lihat tab akun layanan Google di bagian Memberikan akses Config Sync ke Git dengan akun layanan Google.
      • gcenode: Menggunakan akun layanan Google untuk mengakses Cloud Source Repositories. Hanya pilih opsi ini jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.
      • githubapp: Menggunakan Aplikasi GitHub untuk mengautentikasi ke repositori GitHub.

      Untuk mengetahui informasi selengkapnya tentang jenis autentikasi ini, lihat Memberikan akses Config Sync ke Git.

      oci

      • none: Tidak menggunakan autentikasi
      • token: Menggunakan token.
      • gcenode: Menggunakan akun layanan default Compute Engine untuk mengakses image di Artifact Registry. Hanya pilih opsi ini jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses image.

      helm

      • token: Menggunakan token.
      • gcenode: Menggunakan akun layanan default Compute Engine untuk mengakses image di Artifact Registry. Hanya pilih opsi ini jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses image.
      • EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai secretType, tambahkan alamat email akun layanan Google Anda. Misalnya, acm@PROJECT_ID.iam.gserviceaccount.com.

      • METRICS_EMAIL: email Google Cloud Akun Layanan (GSA) yang digunakan untuk mengekspor metrik Config Sync ke Cloud Monitoring. GSA harus memiliki peran IAM Monitoring Metric Writer (roles/monitoring.metricWriter). Kubernetes ServiceAccount default di namespace config-management-monitoring harus terikat ke GSA.

      • DIRECTORY: jalur direktori yang akan disinkronkan, relatif terhadap root repositori Git. Semua subdirektori dari direktori yang Anda tentukan disertakan dan disinkronkan ke cluster. Nilai defaultnya adalah direktori utama repositori.

    Untuk mengetahui daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat kolom gcloud.

  3. Terapkan file apply-spec.yaml. Jika Anda menggunakan manifes yang ada, Anda harus menerapkan file ke cluster yang ingin dikonfigurasi dengan setelan yang Anda ambil di perintah sebelumnya:

    gcloud beta container fleet config-management apply \
        --membership=MEMBERSHIP_NAME \
        --config=CONFIG_YAML_PATH \
        --project=PROJECT_ID
    

    Ganti kode berikut:

    • MEMBERSHIP_NAME: nama keanggotaan fleet yang Anda pilih saat mendaftarkan cluster. Anda dapat menemukan nama dengan gcloud container fleet memberships list.
    • CONFIG_YAML_PATH: jalur ke file apply-spec.yaml Anda.
    • PROJECT_ID: project ID Anda.

Terraform

Untuk setiap cluster yang ingin Anda konfigurasi Config Sync, terapkan blok resource google_gkehub_feature_membership yang berisi blok configmanagement dan config_sync, seperti dalam contoh berikut:

git

data "google_project" "default" {}

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-basic"
  location = "us-central1"

  fleet {
    project = data.google_project.default.project_id
  }

  enable_autopilot = true
}

resource "google_gke_hub_feature" "configmanagement_feature" {
  name     = "configmanagement"
  location = "global"
}

resource "google_gke_hub_feature_membership" "configmanagement_feature_member" {
  location = "global"

  feature             = google_gke_hub_feature.configmanagement_feature.name
  membership          = google_container_cluster.default.fleet[0].membership_id
  membership_location = google_container_cluster.default.fleet[0].membership_location

  configmanagement {
    config_sync {
      # The field `enabled` was introduced in Terraform version 5.41.0, and
      # needs to be set to `true` explicitly to install Config Sync.
      enabled = true
      git {
        sync_repo   = "REPO"
        sync_branch = "BRANCH"
        policy_dir  = "DIRECTORY"
        secret_type = "SECRET"
      }
    }
  }
}

Ganti kode berikut:

  • REPO: URL ke repositori Git yang berisi file konfigurasi Anda.
  • BRANCH: cabang repositori, misalnya main.
  • DIRECTORY: jalur dalam repositori Git yang mewakili tingkat teratas repositori yang ingin Anda sinkronkan.
  • SECRET: jenis autentikasi secret.

oci

data "google_project" "default" {}

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-basic"
  location = "us-central1"

  fleet {
    project = data.google_project.default.project_id
  }

  enable_autopilot = true
}

resource "google_gke_hub_feature" "configmanagement_feature" {
  name     = "configmanagement"
  location = "global"
}

resource "google_gke_hub_feature_membership" "configmanagement_feature_member" {
  location = "global"

  feature             = google_gke_hub_feature.configmanagement_feature.name
  membership          = google_container_cluster.default.fleet[0].membership_id
  membership_location = google_container_cluster.default.fleet[0].membership_location

  configmanagement {
    config_sync {
      # The field `enabled` was introduced in Terraform version 5.41.0, and
      # needs to be set to `true` explicitly to install Config Sync.
      enabled = true
      oci {
        sync_repo   = "REPO"
        policy_dir  = "DIRECTORY"
        secret_type = "SECRET"
      }
    }
  }
}

Ganti kode berikut:

  • REPO: URL ke repositori image OCI yang berisi file konfigurasi Anda.
  • DIRECTORY: jalur absolut direktori yang berisi resource yang ingin Anda sinkronkan. Untuk menggunakan direktori utama, kosongkan kolom ini.
  • SECRET: jenis autentikasi secret.

Ulangi proses ini untuk setiap cluster yang ingin Anda sinkronkan.

Untuk mengetahui informasi selengkapnya tentang penggunaan Terraform, lihat Dukungan Terraform untuk Config Sync.

Setelah mengonfigurasi repositori utama, Anda dapat mengonfigurasi sinkronisasi dari beberapa repositori, termasuk repositori utama dan repositori namespace lainnya. Repositori namespace berguna jika Anda menginginkan repositori yang berisi konfigurasi cakupan namespace yang disinkronkan ke namespace tertentu di seluruh cluster.

Memverifikasi penginstalan

Setelah menginstal dan mengonfigurasi Config Sync, Anda dapat memverifikasi bahwa penginstalan telah berhasil diselesaikan.

gcloud

Jalankan perintah berikut:

nomos status

Penginstalan yang berhasil akan menampilkan status SYNCED atau PENDING.

Untuk mengetahui detail selengkapnya tentang informasi yang diberikan oleh nomos status, termasuk error yang dilaporkan, lihat Memeriksa status Config Sync di dokumentasi alat command line nomos.

konsol

Selesaikan langkah-langkah berikut:

  1. Di Google Cloud konsol, buka halaman Config di bagian Features.

    Buka Config

  2. Di tab Packages, periksa kolom Sync status di tabel cluster. Penginstalan Config Sync yang berhasil memiliki status Installed. Sumber tepercaya yang berhasil dikonfigurasi memiliki status Synced.

Mengganti permintaan dan batas resource

Dalam sebagian besar kasus, permintaan dan batas resource default untuk komponen Config Sync sudah cukup. Namun, Anda dapat mengganti permintaan dan batas untuk CPU dan memori default guna memastikan komponen memiliki resource yang cukup untuk beroperasi dengan andal. Misalnya, jika Anda menyinkronkan sejumlah besar resource ke cluster, Anda mungkin perlu menyediakan lebih banyak resource ke reconciler-manager.

Anda dapat mengganti permintaan dan batas resource untuk beberapa komponen Config Sync menggunakan kolom deploymentOverrides di file apply-spec.yaml saat menginstal Config Sync dengan gcloud CLI. Anda tidak dapat menggunakan kolom deploymentOverrides untuk mengganti kolom lain dalam Deployment, seperti jumlah replika.

Kolom deploymentOverrides hanya dapat mengganti permintaan dan batas resource untuk deployment yang bukan rekonsiliasi root atau namespace, seperti reconciler-manager. Jika perlu mengganti resource untuk rekonsiliasi root atau namespace, Anda dapat menggunakan kolom spec.override.resources di objek RootSync atau RepoSync.

Contoh berikut menunjukkan cara menggunakan kolom deploymentOverrides untuk menetapkan permintaan dan batas CPU baru serta permintaan dan batas memori baru untuk penampung reconciler-manager:

applySpecVersion: 1
spec:
  configSync:
    enabled: true
    # ... other fields...
    deploymentOverrides:
    - name: reconciler-manager
      namespace: config-management-system
      containers:
      - name: reconciler-manager
        cpuRequest: 50m
        cpuLimit: 100m
        memoryRequest: 256Mi
        memoryLimit: 512Mi

Setelah membuat file apply-spec.yaml, terapkan dengan menjalankan perintah berikut:

gcloud beta container fleet config-management apply \
    --membership=MEMBERSHIP_NAME \
    --config=apply-spec.yaml \
    --project=PROJECT_ID

Untuk mengetahui daftar lengkap kolom yang dapat Anda ganti, lihat dokumentasi referensi kolom spesifikasi penerapan gcloud.

Langkah berikutnya