Menginstal Config Sync

Dengan Config Sync, Anda dapat mengelola resource Kubernetes dengan file konfigurasi yang disimpan di sumber tepercaya. Config Sync mendukung repositori Git, image OCI, dan diagram Helm sebagai sumber tepercaya. Halaman ini menunjukkan cara mengaktifkan dan mengonfigurasi Config Sync agar dapat disinkronkan dari repositori root Anda. Config Sync tersedia dengan edisi Google Kubernetes Engine (GKE) Enterprise.

Saat Anda menginstal Config Sync menggunakan konsol Google Cloud atau Google Cloud CLI, RootSync dan RepoSync API diaktifkan secara default. Hal ini memberikan fitur tambahan seperti menyinkronkan dari beberapa repositori dan menyinkronkan konfigurasi Kustomize dan Helm.

Sebelum memulai

Sebelum menginstal Config Sync, siapkan lingkungan, pastikan Anda memenuhi persyaratan cluster, dan berikan peran pengguna yang tepat.

Menyiapkan lingkungan lokal

Siapkan lingkungan lokal Anda dengan menyelesaikan tugas berikut:

  1. Buat, atau pastikan Anda memiliki akses ke, sumber tepercaya. Di sinilah Anda menambahkan konfigurasi yang disinkronkan oleh Config Sync. Untuk mempelajari lebih lanjut cara menyiapkan konfigurasi dan sumber tepercaya, lihat salah satu panduan berikut:
  2. Instal dan lakukan inisialisasi pada Google Cloud CLI, yang menyediakan perintah gcloud dan nomos. Jika Anda menggunakan Cloud Shell, Google Cloud CLI sudah terinstal. Jika sebelumnya Anda telah menginstal Google Cloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.
  3. Aktifkan GKE Enterprise API.

    Mengaktifkan GKE Enterprise API

Meninjau persyaratan cluster

Sebelum menginstal Config Sync di cluster, tinjau rekomendasi dan persyaratan konfigurasi cluster.

Menyiapkan cluster

Setelah Anda membuat cluster yang sesuai, selesaikan langkah-langkah berikut:

  1. Berikan peran IAM yang diperlukan kepada pengguna yang mendaftarkan cluster.

  2. Jika Anda berencana menggunakan Google Cloud CLI untuk mengonfigurasi Config Sync atau menggunakan cluster di luar Google Cloud, pastikan bahwa cluster GKE atau cluster di luar Google Cloud telah terdaftar ke fleet sekarang. Jika berencana menggunakan Konsol Google Cloud, Anda dapat mendaftarkan cluster GKE saat mengonfigurasi Config Sync.

Menginstal Config Sync

Di bagian berikut, Anda akan memberikan akses Config Sync ke salah satu sumber tepercaya berikut:

Setelah memberikan akses, Anda dapat mengonfigurasi Config Sync.

Memberikan akses ke Git

Config Sync memerlukan akses hanya baca ke repositori Git Anda agar dapat membaca konfigurasi yang di-commit ke repositori dan menerapkannya ke cluster Anda.

Jika repositori Anda tidak memerlukan autentikasi untuk akses baca saja, Anda dapat melanjutkan untuk mengonfigurasi Config Sync dan menggunakan none sebagai jenis autentikasi Anda. Misalnya, jika Anda dapat menjelajahi repositori menggunakan antarmuka web tanpa login, atau jika Anda dapat menggunakan git clone untuk membuat clone repositori secara lokal tanpa memberikan kredensial atau menggunakan kredensial tersimpan, Anda tidak perlu melakukan autentikasi. Dalam hal ini, Anda tidak perlu membuat Secret.

Namun, sebagian besar pengguna perlu membuat kredensial karena akses baca ke repositori mereka dibatasi. Jika diperlukan, kredensial akan disimpan di Rahasia git-creds di setiap cluster yang terdaftar (kecuali jika Anda menggunakan akun layanan Google). Secret harus diberi nama git-creds karena ini adalah nilai tetap.

Sinkronisasi Konfigurasi mendukung mekanisme berikut untuk autentikasi:

  • Pasangan kunci SSH (ssh)
  • Cookiefile (cookiefile)
  • Token (token)
  • Akun layanan Google (gcpserviceaccount)
  • Akun layanan default Compute Engine (gcenode)
  • Aplikasi GitHub (githubapp)

Mekanisme yang Anda pilih bergantung pada apa yang didukung repositori Anda. Secara umum, sebaiknya gunakan pasangan kunci SSH. GitHub dan Bitbucket mendukung penggunaan pasangan kunci SSH. Namun, jika Anda menggunakan repositori di Cloud Source Repositories, sebaiknya gunakan akun layanan Google karena prosesnya lebih sederhana. Jika organisasi Anda menghosting repositori dan Anda tidak tahu metode autentikasi mana yang didukung, hubungi administrator Anda.

Untuk menggunakan repositori di Cloud Source Repositories sebagai repositori Config Sync, selesaikan langkah-langkah berikut untuk mengambil URL Cloud Source Repositories Anda:

  1. Mencantumkan semua repositori:

    gcloud source repos list
    
  2. Dari output, salin URL dari repositori yang ingin Anda gunakan. Contoh:

    REPO_NAME  PROJECT_ID  URL
    my-repo    my-project  https://source.developers.google.com/p/my-project/r/my-repo-csr
    

    Anda harus menggunakan URL ini saat mengonfigurasi Config Sync di bagian berikut. Jika mengonfigurasi Config Sync menggunakan konsol Google Cloud, Anda dapat menambahkan URL di kolom URL. Jika mengonfigurasi Config Sync menggunakan Google Cloud CLI, Anda harus menambahkan URL ke kolom syncRepo file konfigurasi.

Pasangan kunci SSH

Pasangan kunci SSH terdiri dari dua file, kunci publik dan kunci pribadi. Kunci publik biasanya memiliki ekstensi .pub.

Untuk menggunakan pasangan kunci SSH, selesaikan langkah-langkah berikut:

  1. Buat pasangan kunci SSH agar Config Sync dapat melakukan autentikasi ke repositori Git Anda. Langkah ini diperlukan jika Anda perlu mengautentikasi ke repositori untuk meng-clone atau membaca dari repositori tersebut. Lewati langkah ini jika administrator keamanan memberi Anda pasangan kunci. Anda dapat menggunakan satu pasangan kunci untuk semua cluster, atau pasangan kunci per cluster, bergantung pada persyaratan keamanan dan kepatuhan Anda.

    Perintah berikut akan membuat kunci RSA 4096-bit. Nilai yang lebih rendah tidak direkomendasikan:

    ssh-keygen -t rsa -b 4096 \
    -C "GIT_REPOSITORY_USERNAME" \
    -N '' \
    -f /path/to/KEYPAIR_FILENAME
    

    Ganti kode berikut:

    • GIT_REPOSITORY_USERNAME: nama pengguna yang ingin Anda gunakan oleh Config Sync untuk mengautentikasi ke repositori
    • /path/to/KEYPAIR_FILENAME: jalur ke pasangan kunci

    Jika Anda menggunakan host repositori Git pihak ketiga seperti GitHub, atau Anda ingin menggunakan akun layanan dengan Cloud Source Repositories, sebaiknya Anda menggunakan akun terpisah.

  2. Konfigurasikan repositori Anda untuk mengenali kunci publik yang baru dibuat. Lihat dokumentasi untuk penyedia hosting Git Anda. Petunjuk untuk beberapa penyedia hosting Git populer disertakan untuk memudahkan:

  3. Tambahkan kunci pribadi ke Secret baru di cluster:

    kubectl create ns config-management-system && \
    kubectl create secret generic git-creds \
     --namespace=config-management-system \
     --from-file=ssh=/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
    

    Ganti /path/to/KEYPAIR_PRIVATE_KEY_FILENAME dengan nama kunci pribadi (kunci tanpa akhiran .pub).

  4. (Direkomendasikan) Untuk mengonfigurasi pemeriksaan host yang diketahui menggunakan autentikasi SSH, Anda dapat menambahkan kunci host yang diketahui ke kolom data.known_hosts di secret git_creds. Untuk menonaktifkan pemeriksaan known_hosts, Anda dapat menghapus kolom known_hosts dari secret. Untuk menambahkan kunci host yang diketahui, jalankan:

    kubectl edit secret git-creds \
     --namespace=config-management-system
    

    Kemudian, di bagian data, tambahkan entri host yang diketahui:

    known_hosts: KNOWN_HOSTS_KEY
    
  5. Hapus kunci pribadi dari disk lokal atau lindungi kunci pribadi tersebut.

  6. Saat Anda mengonfigurasi Config Sync dan menambahkan URL untuk repositori Git, gunakan protokol SSH. Jika menggunakan repositori di Cloud Source Repositories, Anda harus menggunakan format berikut saat memasukkan URL:

    ssh://EMAIL@source.developers.google.com:2022/p/PROJECT_ID/r/REPO_NAME
    

    Ganti kode berikut:

    • EMAIL: nama pengguna Google Cloud Anda
    • PROJECT_ID: ID project Google Cloud tempat repositori berada
    • REPO_NAME: nama repositori

Cookiefile

Proses untuk mendapatkan cookiefile bergantung pada konfigurasi repositori Anda. Sebagai contoh, lihat Membuat kredensial statis dalam dokumentasi Cloud Source Repositories. Kredensial biasanya disimpan dalam file .gitcookies di direktori utama Anda, atau mungkin diberikan kepada Anda oleh administrator keamanan.

Untuk menggunakan cookiefile, selesaikan langkah-langkah berikut:

  1. Setelah Anda membuat dan mendapatkan cookiefile, tambahkan ke Secret baru di cluster.

    Jika Anda tidak menggunakan proxy HTTPS, buat Secret dengan perintah berikut:

    kubectl create ns config-management-system && \
    kubectl create secret generic git-creds \
     --namespace=config-management-system \
     --from-file=cookie_file=/path/to/COOKIEFILE
    

    Jika Anda perlu menggunakan proxy HTTPS, tambahkan ke Secret bersama dengan cookiefile dengan menjalankan perintah berikut:

    kubectl create ns config-management-system && \
    kubectl create secret generic git-creds \
     --namespace=config-management-system \
     --from-file=cookie_file=/path/to/COOKIEFILE \
     --from-literal=https_proxy=HTTPS_PROXY_URL
    

    Ganti kode berikut:

    • /path/to/COOKIEFILE: jalur dan nama file yang sesuai
    • HTTPS_PROXY_URL: URL untuk proxy HTTPS yang Anda gunakan saat berkomunikasi dengan repositori Git
  2. Lindungi konten cookiefile jika Anda masih memerlukannya secara lokal. Jika tidak, hapus token tersebut.

Token

Jika organisasi Anda tidak mengizinkan penggunaan kunci SSH, sebaiknya gunakan token. Dengan Config Sync, Anda dapat menggunakan token akses pribadi (PAT) GitHub, PAT atau kunci deployment GiLab, atau sandi aplikasi Bitbucket sebagai token Anda.

Untuk membuat Secret menggunakan token Anda, selesaikan langkah-langkah berikut:

  1. Buat token menggunakan GitHub, GitLab, atau Bitbucket:

  2. Setelah Anda membuat dan mendapatkan token, tambahkan token tersebut ke Secret baru dalam cluster.

    Jika Anda tidak menggunakan proxy HTTPS, buat Secret dengan perintah berikut:

    kubectl create ns config-management-system && \
    kubectl create secret generic git-creds \
      --namespace="config-management-system" \
      --from-literal=username=USERNAME \
      --from-literal=token=TOKEN
    

    Ganti kode berikut:

    • USERNAME: nama pengguna yang ingin Anda gunakan.
    • TOKEN: token yang Anda buat di langkah sebelumnya.

    Jika Anda perlu menggunakan proxy HTTPS, tambahkan ke Secret bersama dengan username dan token dengan menjalankan perintah berikut:

    kubectl create ns config-management-system && \
    kubectl create secret generic git-creds \
     --namespace=config-management-system \
     --from-literal=username=USERNAME \
      --from-literal=token=TOKEN \
     --from-literal=https_proxy=HTTPS_PROXY_URL
    

    Ganti kode berikut:

    • USERNAME: nama pengguna yang ingin Anda gunakan.
    • TOKEN: token yang Anda buat di langkah sebelumnya.
    • HTTPS_PROXY_URL: URL untuk proxy HTTPS yang Anda gunakan saat berkomunikasi dengan repositori Git.
  3. Lindungi token jika Anda masih memerlukannya secara lokal. Jika tidak, hapus token tersebut.

Akun layanan Google

Jika repositori Anda berada di Cloud Source Repositories, dan cluster Anda menggunakan GKE Workload Identity Federation for GKE atau fleet Workload Identity Federation for GKE, Anda dapat memberi Config Sync akses ke repositori dalam project yang sama dengan cluster terkelola menggunakan akun layanan Google.

  1. Jika Anda belum memiliki akun layanan, buat akun layanan.

  2. Berikan peran IAM Cloud Source Repositories Reader (roles/source.reader) ke akun layanan Google. Untuk mengetahui informasi selengkapnya tentang peran dan izin Cloud Source Repositories, lihat Memberikan izin untuk melihat repositori.

    • Berikan izin di seluruh project jika izin yang sama berlaku untuk semua repositori dalam project.

      gcloud projects add-iam-policy-binding PROJECT_ID \
        --role=roles/source.reader \
        --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
      
    • Berikan izin khusus repositori jika Anda ingin akun layanan memiliki tingkat akses yang berbeda untuk setiap repositori dalam project Anda.

      gcloud source repos set-iam-policy REPOSITORY POLICY_FILE --project=PROJECT_ID
      
  3. Jika Anda mengonfigurasi Config Sync menggunakan konsol Google Cloud, pilih Workload Identity Federation for GKE sebagai Authentication Type, lalu tambahkan email akun layanan Anda.

    Jika Anda mengonfigurasi Config Sync menggunakan Google Cloud CLI, tambahkan gcpserviceaccount sebagai secretType, lalu tambahkan email akun layanan Anda ke gcpServiceAccountEmail.

  4. Setelah mengonfigurasi Config Sync, buat binding kebijakan IAM antara akun layanan Kubernetes dan akun layanan Google. Akun layanan Kubernetes tidak dibuat hingga Anda mengonfigurasi Config Sync untuk pertama kalinya.

    Jika menggunakan cluster yang terdaftar ke fleet, Anda hanya harus membuat pengikatan kebijakan sekali per fleet. Semua cluster yang terdaftar dalam fleet memiliki Workload Identity Federation for GKEpool yang sama. Dengan konsep kesamaan fleet, jika Anda menambahkan kebijakan IAM ke akun layanan Kubernetes di satu cluster, akun layanan Kubernetes dari namespace yang sama di cluster lain dalam fleet yang sama juga akan mendapatkan kebijakan IAM yang sama.

    Dengan binding ini, akun layanan Kubernetes Config Sync dapat bertindak sebagai akun layanan Google:

    gcloud iam service-accounts add-iam-policy-binding \
        GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/iam.workloadIdentityUser \
        --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
        --project=PROJECT_ID
    

Ganti kode berikut:

  • PROJECT_ID: project ID organisasi.
  • FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation GKE untuk GKE, nilai ini sama dengan PROJECT_ID. Jika Anda menggunakan Workload Identity Federation fleet untuk GKE, ini adalah project ID fleet tempat cluster Anda terdaftar.
  • GSA_NAME: akun layanan Google kustom yang ingin Anda gunakan untuk terhubung ke Artifact Registry. Akun layanan harus memiliki peran IAM Pembaca Artifact Registry (roles/artifactregistry.reader).
  • KSA_NAME: akun layanan Kubernetes untuk rekonsiliator.
    • Untuk repositori root, jika nama RootSync adalah root-sync, gunakan root-reconciler. Jika tidak, gunakan root-reconciler-ROOT_SYNC_NAME. Jika Anda menginstal Config Sync menggunakan konsol Google Cloud atau Google Cloud CLI, Config Sync akan otomatis membuat objek RootSync bernama root-sync.
  • REPOSITORY: nama repositori.
  • POLICY_FILE: file JSON atau YAML dengan kebijakan Identity and Access Management.

Akun layanan default Compute Engine

Jika repositori Anda berada di Cloud Source Repositories, dan cluster Anda adalah GKE dengan Workload Identity Federation untuk GKE dinonaktifkan, Anda dapat menggunakan gcenode sebagai jenis autentikasi.

Jika Anda mengonfigurasi Config Sync menggunakan konsol Google Cloud, pilih Repositori Google Cloud sebagai Authentication Type.

Jika Anda mengonfigurasi Config Sync menggunakan Google Cloud CLI, tambahkan gcenode sebagai secretType.

Dengan memilih Repositori Google Cloud atau gcenode, Anda dapat menggunakan akun layanan default Compute Engine. Anda harus memberikan peran IAM Cloud Source Repositories Reader (roles/source.reader) ke akun layanan default Compute Engine. Untuk mengetahui informasi selengkapnya tentang peran dan izin Repositori Sumber Cloud, lihat Memberikan izin untuk melihat repositori.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --role=roles/source.reader \
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

Ganti PROJECT_ID dengan project ID organisasi Anda, dan ganti PROJECT_NUMBER dengan nomor project organisasi Anda.

Aplikasi GitHub

Jika repositori Anda berada di GitHub, Anda dapat menggunakan githubapp sebagai jenis autentikasi.

Untuk menggunakan Aplikasi GitHub, selesaikan langkah-langkah berikut:

  1. Ikuti petunjuk di GitHub untuk menyediakan Aplikasi GitHub dan memberinya izin untuk membaca dari repositori Anda.

  2. Tambahkan konfigurasi Aplikasi GitHub ke Secret baru di cluster:

    Menggunakan Client ID

    kubectl create ns config-management-system && \
    kubectl create secret generic git-creds \
      --namespace=config-management-system \
      --from-literal=github-app-client-id=CLIENT_ID \
      --from-literal=github-app-installation-id=INSTALLATION_ID \
      --from-file=github-app-private-key=/path/to/GITHUB_PRIVATE_KEY \
      --from-literal=github-app-base-url=BASE_URL
    
    • Ganti CLIENT_ID dengan client ID untuk Aplikasi GitHub.
    • Ganti INSTALLATION_ID dengan ID penginstalan untuk Aplikasi GitHub.
    • Ganti /path/to/GITHUB_PRIVATE_KEY dengan nama file yang berisi kunci pribadi.
    • Ganti BASE_URL dengan URL dasar untuk endpoint GitHub API. Hal ini hanya diperlukan jika repositori tidak dihosting di www.github.com. Argumen dapat dihilangkan dan akan ditetapkan secara default ke https://api.github.com/.

    Menggunakan ID Aplikasi

    kubectl create ns config-management-system && \
    kubectl create secret generic git-creds \
      --namespace=config-management-system \
      --from-literal=github-app-application-id=APPLICATION_ID \
      --from-literal=github-app-installation-id=INSTALLATION_ID \
      --from-file=github-app-private-key=/path/to/GITHUB_PRIVATE_KEY \
      --from-literal=github-app-base-url=BASE_URL
    
    • Ganti APPLICATION_ID dengan ID aplikasi untuk Aplikasi GitHub.
    • Ganti INSTALLATION_ID dengan ID penginstalan untuk Aplikasi GitHub.
    • Ganti /path/to/GITHUB_PRIVATE_KEY dengan nama file yang berisi kunci pribadi.
    • Ganti BASE_URL dengan URL dasar untuk endpoint GitHub API. Hal ini hanya diperlukan jika repositori tidak dihosting di www.github.com. Argumen dapat dihilangkan dan akan ditetapkan secara default ke https://api.github.com/.
  3. Hapus kunci pribadi dari disk lokal atau lindungi kunci pribadi tersebut.

  4. Saat Anda mengonfigurasi Config Sync dan menambahkan URL untuk repositori Git, gunakan jenis autentikasi githubapp.

Memberikan akses hanya baca ke OCI untuk Config Sync

Config Sync memerlukan akses hanya baca ke image OCI yang disimpan di Artifact Registry agar dapat membaca konfigurasi yang disertakan dalam image dan menerapkannya ke cluster Anda.

Jika image tidak memerlukan autentikasi untuk akses baca saja, Anda dapat melanjutkan untuk mengonfigurasi Config Sync dan menggunakan none sebagai jenis autentikasi. Misalnya, jika gambar Anda bersifat publik dan dapat diakses oleh siapa saja di internet, Anda tidak perlu melakukan autentikasi.

Namun, sebagian besar pengguna perlu membuat kredensial untuk mengakses gambar yang dibatasi. Sinkronisasi Konfigurasi mendukung mekanisme berikut untuk autentikasi:

  • Akun layanan Kubernetes (k8sserviceaccount)
  • Akun layanan Google (gcpserviceaccount)
  • Akun layanan default Compute Engine (gcenode)

Akun layanan Kubernetes

Jika Anda menyimpan image OCI di Artifact Registry dan cluster Anda menggunakan GKE Workload Identity Federation untuk GKE atau Workload Identity Federation fleet untuk GKE, Anda dapat menggunakan k8sserviceaccount sebagai jenis autentikasi dalam versi 1.17.2 dan yang lebih baru. Opsi ini direkomendasikan daripada gcpserviceaccount karena proses konfigurasinya yang disederhanakan.

  1. Berikan peran IAM Artifact Registry Reader (roles/artifactregistry.reader) ke akun layanan Kubernetes dengan Workload Identity Federation untuk kumpulan GKE. Untuk mengetahui informasi selengkapnya tentang peran dan izin Artifact Registry, lihat Mengonfigurasi peran dan izin untuk Artifact Registry.

    • Berikan izin di seluruh project jika izin yang sama berlaku untuk semua repositori dalam project.

      gcloud projects add-iam-policy-binding PROJECT_ID \
            --role=roles/artifactregistry.reader \
            --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Berikan izin khusus repositori jika Anda ingin akun layanan memiliki tingkat akses yang berbeda untuk setiap repositori dalam project Anda.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
         --location=LOCATION \
         --role=roles/artifactregistry.reader \
         --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
         --project=PROJECT_ID
      

    Ganti kode berikut:

    • PROJECT_ID: project ID organisasi.
    • FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation GKE untuk GKE, nilai ini sama dengan PROJECT_ID. Jika Anda menggunakan Workload Identity Federation fleet untuk GKE, ini adalah project ID fleet tempat cluster Anda terdaftar.
    • KSA_NAME: akun layanan Kubernetes untuk rekonsiliator.
      • Untuk repositori root, jika nama RootSync adalah root-sync, gunakan root-reconciler. Jika tidak, gunakan root-reconciler-ROOT_SYNC_NAME. Jika Anda menginstal Config Sync menggunakan konsol Google Cloud atau Google Cloud CLI, Config Sync akan otomatis membuat objek RootSync bernama root-sync.
    • REPOSITORY: ID repositori.
    • LOCATION: lokasi repositori regional atau multi-regional.

Akun layanan Google

Jika Anda menyimpan image OCI di Artifact Registry dan cluster Anda menggunakan GKE Workload Identity Federation untuk GKE atau Workload Identity Federation fleet untuk GKE, Anda dapat menggunakan gcpserviceaccount sebagai jenis autentikasi. Mulai dari versi 1.17.2, sebaiknya gunakan k8sserviceaccount. Opsi ini menghilangkan langkah tambahan untuk membuat akun layanan Google dan binding kebijakan IAM terkait.

  1. Jika Anda belum memiliki akun layanan, buat akun layanan.

  2. Berikan peran IAM Pembaca Artifact Registry (roles/artifactregistry.reader) ke akun layanan Google. Untuk mengetahui informasi selengkapnya tentang peran dan izin Artifact Registry, lihat Mengonfigurasi peran dan izin untuk Artifact Registry.

    • Berikan izin di seluruh project jika izin yang sama berlaku untuk semua repositori dalam project.

      gcloud projects add-iam-policy-binding PROJECT_ID  \
         --role=roles/artifactregistry.reader \
         --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
      
    • Berikan izin khusus repositori jika Anda ingin akun layanan memiliki tingkat akses yang berbeda untuk setiap repositori dalam project Anda.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
         --location=LOCATION \
         --role=roles/artifactregistry.reader \
         --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
         --project=PROJECT_ID
      
  3. Buat binding kebijakan IAM antara akun layanan Kubernetes dan akun layanan Google dengan menjalankan perintah berikut:

    gcloud iam service-accounts add-iam-policy-binding
      GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/iam.workloadIdentityUser \
        --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
        --project=PROJECT_ID
    

Ganti kode berikut:

  • PROJECT_ID: project ID organisasi.
  • FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation GKE untuk GKE, nilai ini sama dengan PROJECT_ID. Jika Anda menggunakan Workload Identity Federation fleet untuk GKE, ini adalah project ID fleet tempat cluster Anda terdaftar.
  • GSA_NAME: akun layanan Google kustom yang ingin Anda gunakan untuk terhubung ke Artifact Registry. Akun layanan harus memiliki peran IAM Pembaca Artifact Registry (roles/artifactregistry.reader).
  • KSA_NAME: akun layanan Kubernetes untuk rekonsiliator.
    • Untuk repositori root, jika nama RootSync adalah root-sync, gunakan root-reconciler. Jika tidak, gunakan root-reconciler-ROOT_SYNC_NAME. Jika Anda menginstal Config Sync menggunakan konsol Google Cloud atau Google Cloud CLI, Config Sync akan otomatis membuat objek RootSync bernama root-sync.
  • REPOSITORY: ID repositori.
  • LOCATION: lokasi repositori regional atau multi-regional.

Akun layanan default Compute Engine

Jika Anda menyimpan diagram Helm di Artifact Registry dan cluster Anda adalah GKE dengan Workload Identity Federation untuk GKE dinonaktifkan, Anda dapat menggunakan gcenode sebagai jenis autentikasi. Config Sync menggunakan akun layanan default Compute Engine. Anda harus memberikan akses pembaca akun layanan default Compute Engine ke Artifact Registry.

  1. Berikan izin baca akun layanan Compute Engine ke Artifact Registry dengan menjalankan perintah berikut:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
       --role=roles/artifactregistry.reader
    

    Ganti PROJECT_ID dengan project ID organisasi Anda, dan ganti PROJECT_NUMBER dengan nomor project organisasi Anda.

Memberikan akses hanya baca ke Helm untuk Config Sync

Config Sync memerlukan akses hanya baca ke repositori Helm agar dapat membaca diagram Helm di repositori dan menginstalnya di cluster.

Jika repositori Anda tidak memerlukan autentikasi untuk akses baca saja, Anda dapat melanjutkan untuk mengonfigurasi Config Sync dan menggunakan none sebagai jenis autentikasi. Misalnya, jika repositori Helm Anda bersifat publik dan dapat diakses oleh siapa saja di internet, Anda tidak perlu melakukan autentikasi.

Namun, sebagian besar pengguna perlu membuat kredensial untuk mengakses repositori Helm pribadi. Sinkronisasi Konfigurasi mendukung mekanisme berikut untuk autentikasi:

  • Token (token)
  • Akun layanan Kubernetes (k8sserviceaccount)
  • Akun layanan Google (gcpserviceaccount)
  • Akun layanan default Compute Engine (gcenode)

Token

Buat Secret dengan nama pengguna dan sandi repositori Helm:

kubectl create secret generic SECRET_NAME \
    --namespace=config-management-system \
    --from-literal=username=USERNAME \
    --from-literal=password=PASSWORD

Ganti kode berikut:

  • SECRET_NAME: nama yang ingin Anda berikan ke Secret.
  • USERNAME: nama pengguna repositori Helm.
  • PASSWORD: sandi repositori Helm.

Saat Mengonfigurasi Operator ConfigManagement, Anda akan menggunakan nama Secret yang Anda pilih untuk spec.helm.secretRef.name.

Akun layanan Kubernetes

Jika Anda menyimpan diagram Helm di Artifact Registry dan cluster Anda menggunakan GKE Workload Identity Federation for GKE atau fleet Workload Identity Federation for GKE, Anda dapat menggunakan k8sserviceaccount sebagai jenis autentikasi dalam versi 1.17.2 dan yang lebih baru. Opsi ini direkomendasikan daripada gcpserviceaccount karena proses konfigurasinya yang disederhanakan.

  1. Berikan peran IAM Pembaca Artifact Registry (roles/artifactregistry.reader) ke akun layanan Kubernetes dengan Workload Identity Federation untuk kumpulan GKE. Untuk mengetahui informasi selengkapnya tentang peran dan izin Artifact Registry, lihat Mengonfigurasi peran dan izin untuk Artifact Registry.

    • Berikan izin di seluruh project jika izin yang sama berlaku untuk semua repositori dalam project.

      gcloud projects add-iam-policy-binding PROJECT_ID \
         --role=roles/artifactregistry.reader \
         --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Berikan izin khusus repositori jika Anda ingin akun layanan memiliki tingkat akses yang berbeda untuk setiap repositori dalam project Anda.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
         --location=LOCATION \
         --role=roles/artifactregistry.reader \
         --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
         --project=PROJECT_ID
      

    Ganti kode berikut:

    • PROJECT_ID: project ID organisasi.
    • FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation GKE untuk GKE, nilai ini sama dengan PROJECT_ID. Jika Anda menggunakan Workload Identity Federation fleet untuk GKE, ini adalah project ID fleet tempat cluster Anda terdaftar.
    • KSA_NAME: akun layanan Kubernetes untuk rekonsiliator.
      • Untuk repositori root, jika nama RootSync adalah root-sync, gunakan root-reconciler. Jika tidak, gunakan root-reconciler-ROOT_SYNC_NAME.
    • REPOSITORY: ID repositori.
    • LOCATION: lokasi repositori regional atau multi-regional.

Akun layanan Google

Jika Anda menyimpan diagram Helm di Artifact Registry dan cluster Anda menggunakan GKE Workload Identity Federation untuk GKE atau Workload Identity Federation fleet untuk GKE, Anda dapat menggunakan gcpserviceaccount sebagai jenis autentikasi. Mulai dari versi 1.17.2, sebaiknya gunakan k8sserviceaccount. Opsi ini menghilangkan langkah tambahan untuk membuat akun layanan Google dan binding kebijakan IAM terkait.

  1. Jika Anda belum memiliki akun layanan, buat akun layanan.

  2. Berikan peran IAM Pembaca Artifact Registry (roles/artifactregistry.reader) ke akun layanan Google. Untuk mengetahui informasi selengkapnya tentang peran dan izin Artifact Registry, lihat Mengonfigurasi peran dan izin untuk Artifact Registry.

    • Berikan izin di seluruh project jika izin yang sama berlaku untuk semua repositori dalam project.

      gcloud projects add-iam-policy-binding PROJECT_ID  \
            --role=roles/artifactregistry.reader \
            --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
      
    • Berikan izin khusus repositori jika Anda ingin akun layanan memiliki tingkat akses yang berbeda untuk setiap repositori dalam project Anda.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
         --location=LOCATION \
         --role=roles/artifactregistry.reader \
         --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
         --project=PROJECT_ID
      
  3. Buat binding kebijakan IAM antara akun layanan Kubernetes dan akun layanan Google dengan menjalankan perintah berikut:

    gcloud iam service-accounts add-iam-policy-binding
      GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/iam.workloadIdentityUser \
        --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
        --project=PROJECT_ID
    

Ganti kode berikut:

  • PROJECT_ID: project ID organisasi.
  • FLEET_HOST_PROJECT_ID: jika Anda menggunakan Workload Identity Federation GKE untuk GKE, nilai ini sama dengan PROJECT_ID. Jika Anda menggunakan Workload Identity Federation fleet untuk GKE, ini adalah project ID fleet tempat cluster Anda terdaftar.
  • GSA_NAME: akun layanan Google kustom yang ingin Anda gunakan untuk terhubung ke Artifact Registry. Akun layanan harus memiliki peran IAM Pembaca Artifact Registry (roles/artifactregistry.reader).
  • KSA_NAME: akun layanan Kubernetes untuk rekonsiliator.
    • Untuk repositori root, jika nama RootSync adalah root-sync, gunakan root-reconciler. Jika tidak, gunakan root-reconciler-ROOT_SYNC_NAME.
  • REPOSITORY: ID repositori.
  • LOCATION: lokasi repositori regional atau multi-regional.

Akun layanan default Compute Engine

Jika Anda menyimpan diagram Helm di Artifact Registry dan cluster Anda adalah GKE dengan Workload Identity Federation untuk GKE dinonaktifkan, Anda dapat menggunakan gcenode sebagai jenis autentikasi. Config Sync menggunakan akun layanan default Compute Engine. Anda harus memberikan akses pembaca akun layanan default Compute Engine ke Artifact Registry. Anda mungkin perlu memberikan cakupan akses storage-ro untuk memberikan izin hanya baca guna mengambil gambar.

  1. Berikan izin baca akun layanan Compute Engine ke Artifact Registry:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role=roles/artifactregistry.reader
    

    Ganti PROJECT_ID dengan project ID organisasi Anda, dan ganti PROJECT_NUMBER dengan nomor project organisasi Anda.

Mengonfigurasi Config Sync

Di bagian ini, Anda akan mengonfigurasi setelan untuk repositori root. Jika Anda menyinkronkan ke repositori Git, Anda dapat menggunakan konsol Google Cloud untuk memandu Anda melalui proses penginstalan dan mengotomatiskan beberapa langkah.

Saat Anda menginstal Config Sync menggunakan konsol Google Cloud 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 mempelajari lebih lanjut, lihat Mengonfigurasi Config Sync dengan perintah kubectl.

Konsol

Menginstal Config Sync

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

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

    Buka Config

  2. Klik Install Config Sync.
  3. Pilih Upgrade otomatis (Pratinjau) untuk mengaktifkan Config Sync guna mengupgrade versi secara otomatis atau pilih Upgrade manual untuk mengelola versi Config Sync sendiri. Untuk informasi selengkapnya tentang cara kerja upgrade otomatis, lihat Sinkronisasi Konfigurasi Upgrade.
  4. Di bagian Opsi penginstalan, pilih salah satu opsi berikut:
    • Instal Config Sync di seluruh fleet (direkomendasikan): Config Sync akan diinstal di semua cluster dalam fleet.
    • Instal Config Sync di setiap cluster: semua cluster yang dipilih akan otomatis terdaftar ke fleet. Config Sync akan diinstal di semua cluster dalam armada.
  5. Jika Anda menginstal Config Sync di setiap cluster, di tabel Available clusters, pilih cluster tempat Anda ingin menginstal Config Sync.
  6. Klik Instal Config Sync. Di tab Setelan, setelah beberapa menit, Anda akan melihat Diaktifkan di kolom Status untuk cluster di armada 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 informasi selengkapnya, lihat Mengelola paket.

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

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

    Buka dasbor Config Sync

  2. Klik Deploy Package.

  3. Pada tabel Select clusters for package deployment, pilih cluster yang ingin Anda gunakan untuk men-deploy paket, lalu klik Continue.

  4. Pilih Paket yang dihosting di Git atau Paket yang dihosting di OCI sebagai jenis sumber Anda, lalu klik Continue.

  5. Di bagian Detail paket, masukkan Nama paket, yang mengidentifikasi objek RootSync atau RepoSync.

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

    Sinkronisasi cakupan cluster membuat objek RootSync dan sinkronisasi cakupan Namespace membuat objek RepoSync. Untuk informasi selengkapnya tentang objek ini, lihat Arsitektur Config Sync.

  7. Di bagian Sumber, 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 URL Repositori.
      2. Opsional: Perbarui kolom Revision untuk memeriksa apakah Anda tidak menggunakan HEAD default.
      3. Opsional: Perbarui kolom Jalur jika Anda tidak ingin menyinkronkan dari repositori root.
      4. Opsional: Perbarui kolom Branch jika Anda tidak menggunakan cabang main default.
    • Untuk sumber yang dihosting dalam 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, secara relatif terhadap direktori utama, sebagai Direktori.
  8. (Opsional): Luaskan bagian Advanced settings untuk menyelesaikan hal berikut:

    1. Pilih Jenis autentikasi. Config Sync memerlukan akses hanya baca 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 hanya baca ke Config Sync untuk repositori Git, image OCI, atau diagram Helm (khusus gcloud CLI). Pilih jenis autentikasi yang sama dengan yang Anda konfigurasi saat menginstal Config Sync:

      • Tidak ada: Tidak menggunakan autentikasi.
      • SSH: Lakukan autentikasi menggunakan pasangan kunci SSH.
      • Cookiefile: Lakukan autentikasi menggunakan cookiefile.
      • Token: Lakukan autentikasi menggunakan token akses atau sandi.
      • Repositori Google Cloud: Menggunakan akun layanan Google untuk mengakses repositori Cloud Source Repositories. Hanya pilih opsi ini jika Workload Identity Federation untuk 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 Waktu tunggu sinkronisasi, yang menentukan waktu tunggu Config Sync di antara upaya untuk mengambil dari sumber tepercaya.

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

    4. Pilih Hierarki untuk mengubah Format sumber.

      Nilai default Tidak Terstruktur direkomendasikan dalam sebagian besar kasus karena memungkinkan Anda mengatur sumber tepercaya sesuai keinginan.

  9. Klik Deploy Package.

    Anda akan dialihkan ke halaman Paket Config Sync. Setelah beberapa menit, Anda akan melihat Disinkronkan di kolom Status sinkronisasi untuk cluster yang Anda konfigurasikan.

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 manifes apply-spec.yaml baru atau menggunakan manifes yang sudah ada. Dengan menggunakan manifes yang ada, Anda dapat mengonfigurasi cluster dengan setelan yang sama dengan yang digunakan oleh cluster lain.

    Membuat manifes baru

    Untuk mengonfigurasi Config Sync dengan setelan baru untuk cluster Anda, buat file bernama apply-spec.yaml dan salin file YAML berikut ke dalamnya.

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

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # upgrades: UPGRADE_SETTING
      configSync:
        # Set to true to install and enable Config Sync
        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
        syncBranch: BRANCH
        secretType: SECRET_TYPE
        gcpServiceAccountEmail: EMAIL
        metricsGcpServiceAccountEmail: METRICS_EMAIL
        policyDir: DIRECTORY
        preventDrift: PREVENT_DRIFT
    

    Ganti kode berikut:

    • (Pratinjau) UPGRADE_SETTING: hapus komentar pada kolom dan tetapkan ke auto untuk mengonfigurasi Config Sync agar diupgrade secara otomatis. Tetapkan ke manual untuk mengupgrade Config Sync secara manual. Nilai defaultnya adalah manual. Flag ini hanya didukung untuk GKE di cluster Google Cloud. Untuk menggunakan kolom ini, Anda mungkin perlu mengupdate gcloud CLI dengan menjalankan gcloud components update.

    • 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 tidak terstruktur atau tambahkan hierarchy untuk menggunakan repositori hierarkis. Nilai ini peka huruf besar/kecil. 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. Contoh, https://github.com/GoogleCloudPlatform/anthos-config-management-samples. Jika Anda berencana menggunakan SSH sebagai secretType, masukkan URL 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, gambar diambil dari tag latest, tetapi Anda dapat mengambil gambar dengan TAG atau DIGEST. Tentukan TAG atau DIGEST di PACKAGE_NAME:

      • Untuk menarik menurut TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Untuk menarik menurut DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • REVISION: revisi Git (tag atau hash) yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah HEAD. Mulai dari Config Sync versi 1.17.0, Anda juga dapat menentukan nama cabang di kolom syncRev. Saat menggunakan hash dalam versi 1.17.0 atau yang lebih baru, hash harus berupa hash lengkap, bukan bentuk singkatan.

    • BRANCH: cabang repositori yang akan disinkronkan. Kolom ini bersifat opsional dan setelan defaultnya adalah master. Mulai dari Config Sync versi 1.17.0, sebaiknya gunakan kolom syncRev untuk menentukan nama cabang agar lebih mudah. Jika kolom syncRev dan kolom syncBranch ditentukan, syncRev akan diprioritaskan daripada syncBranch.

    • SECRET_TYPE: salah satu secretTypes berikut:

      git

      • none: Tidak menggunakan autentikasi.
      • ssh: Menggunakan pasangan kunci SSH.
      • cookiefile: Gunakan cookiefile.
      • token: Menggunakan token.
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses Cloud Source Repositories. Jika memilih jenis autentikasi ini, Anda perlu membuat binding kebijakan IAM setelah selesai mengonfigurasi Config Sync. Untuk mengetahui detailnya, lihat tab akun layanan Google di bagian Memberikan akses hanya baca ke Git kepada Sinkronisasi Konfigurasi.
      • 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 hanya baca ke Git kepada Config Sync.

      oci

      • none: Tidak menggunakan autentikasi
      • 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 gambar.

      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 gambar.
    • EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai secretType, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

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

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

    • PREVENT_DRIFT: Jika ditetapkan ke true, akan mengaktifkan webhook izin Config Sync untuk mencegah drift dengan menolak perubahan yang bertentangan agar tidak didorong ke cluster aktif. Setelan default-nya adalah false. Config Sync selalu memperbaiki penyimpangan, apa pun nilai kolom ini.

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

    Menggunakan manifes yang ada

    Untuk mengonfigurasi cluster dengan setelan yang sama dengan yang digunakan oleh cluster lain, ambil setelan dari cluster terdaftar:

    gcloud alpha container fleet config-management fetch-for-apply \
        --membership=MEMBERSHIP_NAME \
        --project=PROJECT_ID \
        > CONFIG_YAML_PATH
    

    Ganti kode berikut:

    • MEMBERSHIP_NAME: nama keanggotaan cluster terdaftar yang memiliki setelan Config Sync yang ingin Anda gunakan
    • PROJECT_ID: project ID Anda
    • CONFIG_YAML_PATH: jalur ke file apply-spec.yaml yang berisi setelan yang diambil dari cluster
  3. Terapkan file apply-spec.yaml. Jika menggunakan manifes yang ada, Anda harus menerapkan file ke cluster yang ingin dikonfigurasi dengan setelan yang Anda ambil dalam 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:

git

resource "google_container_cluster" "cluster" {
 name = "EXISTING_CLUSTER_NAME"
 location = "EXISTING_CLUSTER_LOCATION"
}

resource "google_gke_hub_membership" "membership" {
 membership_id = "MEMBERSHIP_ID"
 endpoint {
   gke_cluster {
     resource_link = "//container.googleapis.com/${google_container_cluster.cluster.id}"
   }
 }
}

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

resource "google_gke_hub_feature_membership" "feature_member" {
 location = "global"
 feature = google_gke_hub_feature.feature.name
 membership = google_gke_hub_membership.membership.membership_id
 configmanagement {
   version = "VERSION"
   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:

  • EXISTING_CLUSTER_NAME: nama cluster yang ada.
  • EXISTING_CLUSTER_LOCATION: lokasi cluster yang ada.
  • MEMBERSHIP_ID: ID binding keanggotaan.
  • VERSION: (opsional) nomor versi Config Sync. Harus disetel ke versi 1.17.0 atau yang lebih baru. 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 mewakili tingkat teratas repositori yang ingin Anda sinkronkan.
  • SECRET: jenis autentikasi secret.

oci

resource "google_container_cluster" "cluster" {
 name = "EXISTING_CLUSTER_NAME"
 location = "EXISTING_CLUSTER_LOCATION"
}

resource "google_gke_hub_membership" "membership" {
 membership_id = "MEMBERSHIP_ID"
 endpoint {
   gke_cluster {
     resource_link = "//container.googleapis.com/${google_container_cluster.cluster.id}"
   }
 }
}

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

resource "google_gke_hub_feature_membership" "feature_member" {
 location = "global"
 feature = google_gke_hub_feature.feature.name
 membership = google_gke_hub_membership.membership.membership_id
 configmanagement {
   version = "VERSION"
   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:

  • EXISTING_CLUSTER_NAME: nama cluster yang ada.
  • EXISTING_CLUSTER_LOCATION: lokasi cluster yang ada.
  • MEMBERSHIP_ID: ID binding keanggotaan.
  • VERSION: (opsional) nomor versi Config Sync. Jika dibiarkan kosong, defaultnya adalah versi terbaru.
  • REPO: URL ke repositori image OCI yang berisi file konfigurasi Anda.
  • DIRECTORY: jalur absolut direktori yang berisi resource yang ingin Anda sinkronkan. Biarkan kosong untuk menggunakan direktori root.
  • SECRET: jenis autentikasi secret.

Ulangi proses ini untuk setiap cluster yang ingin Anda sinkronkan.

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

Mengonfigurasi setelan default tingkat armada

Jika telah mengaktifkan edisi Google Kubernetes Engine (GKE) Enterprise, Anda dapat mengaktifkan dan mengonfigurasi Config Sync sebagai default tingkat fleet untuk cluster Anda. Artinya, setiap cluster GKE baru di Google Cloud yang dibuat dalam fleet akan mengaktifkan Config Sync di cluster dengan setelan yang Anda tentukan. Anda dapat mengetahui lebih lanjut konfigurasi default fleet di Mengelola fitur tingkat fleet.

Jika hanya menggunakan konsol Google Cloud, Anda dapat mengaktifkan Config Sync secara default di cluster dan menetapkan versi Config Sync untuk fleet Anda. Jika menggunakan gcloud CLI atau Terraform, Anda dapat mengaktifkan Config Sync secara default di cluster, menetapkan versi Config Sync untuk fleet, dan menyiapkan koneksi ke repositori Git atau repositori image OCI.

Untuk mengonfigurasi setelan default tingkat armada untuk Config Sync, selesaikan langkah-langkah berikut:

gcloud

Jalankan perintah enable untuk fitur tersebut, dengan meneruskan file konfigurasi apply-spec.yaml yang Anda buat saat mengonfigurasi Config Sync di setiap cluster:

gcloud beta container fleet config-management enable \
    --fleet-default-member-config=apply-spec.yaml

Anda dapat menggunakan perintah ini untuk memperbarui setelan default armada kapan saja. Jika Anda memperbarui setelan default armada, Anda harus menyinkronkan ulang cluster yang ada ke setelan default.

Konsol

  1. Di konsol Google Cloud, buka halaman Feature Manager.

    Buka Pengelola Fitur

  2. Di panel Config Sync, klik Configure.

  3. Tinjau setelan tingkat armada Anda. Semua cluster baru yang Anda buat di fleet akan mewarisi setelan ini.

  4. Opsional: Untuk mengubah setelan default, klik Sesuaikan setelan armada. Pada dialog yang muncul, lakukan hal berikut:

  5. Pilih Upgrade otomatis (Pratinjau) agar Config Sync mengupgrade versi secara otomatis atau pilih Upgrade manual untuk mengelola versi Config Sync sendiri. Untuk informasi selengkapnya tentang cara kerja upgrade otomatis, lihat Menyinkronkan Konfigurasi Upgrade.

  6. Jika Anda memilih Manual upgrades, di daftar Version, pilih versi Config Sync yang ingin Anda gunakan.

  7. Klik Simpan perubahan.

  8. Klik Konfigurasikan.

  9. Di dialog konfirmasi Mengonfigurasi setelan armada, klik Konfirmasi. Jika sebelumnya Anda belum mengaktifkan Config Sync, mengklik Konfirmasi juga akan mengaktifkan anthosconfigmanagement.googleapis.com API.

Terraform

  1. Buat direktori untuk file Terraform konfigurasi default armada. Ke direktori tersebut, tambahkan file main.tf dengan resource berikut yang mengonfigurasi setelan Config Sync:

    git

    terraform {
      required_providers {
        google = {
          source = "hashicorp/google"
          version = ">=5.16.0"
          }
        }
      }
    
    provider "google" {
      project = "PROJECT_ID"
    }
    
    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:

    • PROJECT_ID: project ID host fleet.
    • 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 mewakili 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 = "PROJECT_ID"
    }
    
    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:

    • PROJECT_ID: project ID host fleet.
    • VERSION: nomor versi Config Sync. Harus disetel ke versi 1.17.0 atau yang lebih baru. 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.

  2. Lakukan inisialisasi Terraform di direktori yang Anda buat:

    terraform init
    
  3. Pastikan perubahan yang Anda usulkan dengan Terraform sesuai dengan rencana yang diharapkan:

    terraform plan
    
  4. Buat konfigurasi anggota armada default:

    terraform apply
    

Untuk mengupdate cluster yang ada agar dapat menggunakan setelan Config Sync default, Anda dapat menggunakan konsol Google Cloud atau gcloud CLI untuk menyinkronkan cluster fleet yang dipilih ke default fleet. Atau, Anda dapat mengonfigurasi setiap cluster secara manual dengan setelan yang sama menggunakan Terraform dengan mengikuti petunjuk untuk mengonfigurasi Config Sync. Jika sebelumnya Anda menggunakan Terraform untuk menentukan default fleet, gunakan blok configmanagement dan config_sync yang sama dengan yang Anda gunakan untuk menetapkan default guna mengonfigurasi cluster yang dipilih.

Untuk menyinkronkan setelan default Config Sync di seluruh perangkat, ikuti langkah-langkah berikut:

gcloud

  1. Sinkronkan langganan yang ada ke konfigurasi default armada:

    gcloud beta container fleet config-management apply \
        --origin=FLEET \
        --membership=MEMBERSHIP_NAME
    

    Ganti MEMBERSHIP_NAME dengan nama keanggotaan fleet cluster yang ingin Anda sinkronkan dengan konfigurasi default fleet.

  2. Pastikan konfigurasi langganan Anda disinkronkan dengan setelan default fleet:

    gcloud beta container fleet config-management status
    

    Output perintah ini akan ditampilkan sebagai Yes untuk status Synced_to_Fleet_Default untuk langganan yang Anda sinkronkan.

console

  1. Buka Pengelola Fitur:

    Buka Pengelola Fitur: Config Sync

  2. Di tabel cluster, pilih cluster yang ingin disinkronkan ke setelan armada.

  3. Klik Sinkronkan ke setelan inventaris.

Untuk menonaktifkan setelan default Config Sync di seluruh fleet, ikuti langkah-langkah berikut:

  1. Untuk menonaktifkan konfigurasi default armada, jalankan perintah berikut:

    gcloud beta container fleet config-management disable --fleet-default-member-config
    
  2. Pastikan konfigurasi default armada dinonaktifkan:

    gcloud beta container fleet config-management status
    

Setelan default Config Sync diterapkan ke cluster apa pun yang Anda pilih. Meskipun konsol Google Cloud hanya menampilkan sebagian setelan, seperti versi Config Sync, semua setelan tingkat fleet disinkronkan ke cluster. Misalnya, jika Anda mengonfigurasi Config Sync untuk disinkronkan ke repositori Git menggunakan Terraform atau gcloud CLI, setelan tersebut akan disinkronkan ke cluster Anda, tetapi tidak ditampilkan di konsol Google Cloud.

Memverifikasi penginstalan

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

Konsol

Selesaikan langkah-langkah berikut:

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

    Buka Config

  2. Di tab Paket, periksa kolom Sync status di tabel cluster. Penginstalan Config Sync yang berhasil memiliki status Diinstal. Sumber tepercaya yang berhasil dikonfigurasi memiliki status Disinkronkan.

gcloud

Jalankan perintah berikut:

gcloud beta container fleet config-management status \
    --project=PROJECT_ID

Ganti PROJECT_ID dengan ID project Anda.

Penginstalan yang berhasil memiliki status SYNCED. Mulai dari Config Sync versi 1.18.0, output juga menampilkan versi Config Sync yang diinstal dan setelan upgrade Config Sync.

Jika Anda melihat error setelah menjalankan perintah sebelumnya, pastikan Anda telah membuat Secret git-creds. Jika Anda telah membuat Secret, coba jalankan kembali perintah berikut:

gcloud beta container fleet config-management apply

Anda juga dapat menggunakan perintah nomos status untuk memeriksa apakah Config Sync berhasil diinstal. Penginstalan yang valid tanpa masalah memiliki status PENDING atau SYNCED. Penginstalan yang tidak valid atau tidak lengkap memiliki status NOT INSTALLED ATAU NOT CONFIGURED. Output juga menyertakan error yang dilaporkan.

Kontrol akses berbasis peran (RBAC) dan izin

Sinkronisasi Konfigurasi mencakup workload dengan hak istimewa tinggi. Tabel berikut mencantumkan izin untuk workload ini:

Komponen Namespace Akun Layanan Izin Deskripsi
Operator ConfigManagement config-management-system config-management-operator cluster-admin Operator ConfigManagement menginstal komponen lain dalam tabel ini. Beberapa komponen tersebut memerlukan izin cluster-admin, sehingga Operator ConfigManagement juga memerlukannya.
Config Sync config-management-system Lihat Mengonfigurasi izin Sinkronisasi untuk mengetahui izin yang diperlukan.

Permintaan resource

Bagian berikut mencantumkan permintaan resource untuk Config Sync.

Tabel berikut mencantumkan persyaratan resource Kubernetes untuk komponen Config Sync. Untuk mengetahui informasi selengkapnya, lihat Mengelola Resource untuk Container dalam dokumentasi Kubernetes.

Tidak semua komponen yang tercantum dibuat. Kondisi berikut menyebabkan setiap komponen dijadwalkan:

  • config-management-operator diinstal saat Config Sync diaktifkan.
  • reconciler-manager diinstal saat Config Sync diaktifkan.
  • admission-webhook diinstal saat pencegahan drift diaktifkan.
  • reconciler diinstal untuk setiap RootSync dan RepoSync.
  • otel-collector diinstal saat Config Sync diaktifkan.

Untuk mempelajari komponen ini lebih lanjut, lihat Arsitektur Config Sync.

1,18

Nama deployment Permintaan CPU (m) per replika Permintaan memori (Mi) per replika
config-management-operator 100 200
resource-group-controller-manager 110 300
admission-webhook1 10 100
otel-collector 200 400
reconciler-manager 20 150
reconciler (satu per RootSync dan RepoSync) Lihat deployment rekonsiliator untuk mengetahui detailnya.

1 Webhook izin memiliki dua replika, sehingga saat menghitung total permintaan resource, Anda perlu melipatgandakan nilai jika menggunakan webhook izin. Webhook izin dinonaktifkan secara default.

1,17

Nama deployment Permintaan CPU (m) per replika Permintaan memori (Mi) per replika
config-management-operator 100 200
resource-group-controller-manager 110 300
admission-webhook1 10 100
otel-collector 200 400
reconciler-manager 20 150
reconciler (satu per RootSync dan RepoSync) Lihat deployment rekonsiliator untuk mengetahui detailnya.

1 Webhook izin memiliki dua replika, sehingga saat menghitung total permintaan resource, Anda perlu melipatgandakan nilai jika menggunakan webhook izin. Webhook izin dinonaktifkan secara default.

1.16

Nama deployment Permintaan CPU (m) per replika Permintaan memori (Mi) per replika
config-management-operator 100 200
resource-group-controller-manager 110 300
admission-webhook1 10 100
otel-collector 200 400
reconciler-manager 20 150
reconciler (satu per RootSync dan RepoSync) Lihat deployment rekonsiliator untuk mengetahui detailnya.

1 Webhook izin memiliki dua replika, sehingga saat menghitung total permintaan resource, Anda perlu melipatgandakan nilai jika menggunakan webhook izin. Webhook izin dinonaktifkan secara default.

Deployment rekonsiliator

Untuk setiap objek RootSync dan RepoSync, Config Sync membuat deployment merekonsiliasi independen untuk menangani sinkronisasi. Deployment rekonsiliator terdiri dari beberapa penampung. Untuk mempelajari penampung ini lebih lanjut, lihat Penampung rekonsiliasi.

Di Config Sync versi 1.17.0 dan yang lebih baru, permintaan resource default untuk rekonsiliator berbeda untuk cluster Standard dan Autopilot. Semua jenis cluster lainnya menggunakan default Standar.

Cluster standar

1,18

Nama penampung Permintaan CPU (m) Permintaan memori (Mi)
reconciler 50 200
otel-agent 10 100
hydration-controller (Opsional) 10 100
git-sync 10 16
gcenode-askpass-sidecar (Opsional) 10 20
helm-sync 75 128
oci-sync 25 32

1,17

Nama penampung Permintaan CPU (m) Permintaan memori (Mi)
reconciler 50 200
otel-agent 10 100
hydration-controller (Opsional) 10 100
git-sync 10 16
gcenode-askpass-sidecar (Opsional) 10 20
helm-sync 75 128
oci-sync 25 32

1.16

Nama penampung Permintaan CPU (m) Permintaan memori (Mi)
reconciler 50 200
otel-agent 10 100
hydration-controller (Opsional) 10 100
git-sync 10 200
gcenode-askpass-sidecar (Opsional) 10 20
helm-sync 50 256
oci-sync 10 200

Cluster Autopilot

1,18

Nama penampung Permintaan dan batas CPU (m) Permintaan dan batas memori (Mi)
reconciler 700 512
otel-agent 10 64
hydration-controller (Opsional) 200 256
git-sync 20 32
gcenode-askpass-sidecar (Opsional) 50 64
helm-sync 250 384
oci-sync 50 64

1,17

Nama penampung Permintaan dan batas CPU (m) Permintaan dan batas memori (Mi)
reconciler 700 512
otel-agent 10 64
hydration-controller (Opsional) 200 256
git-sync 20 32
gcenode-askpass-sidecar (Opsional) 50 64
helm-sync 150 256
oci-sync 50 64

1.16

Pada versi Config Sync sebelum 1.17.0, permintaan resource sama untuk Standar dan Autopilot.

Untuk mempelajari cara mengganti permintaan dan batas resource default, lihat penggantian resource.

Versi Helm dan Kustomize yang dipaketkan

Config Sync memanfaatkan file yang dapat dieksekusi Helm dan Kustomize untuk merender konfigurasi di balik layar. Tabel berikut berisi daftar versi Config Sync yang mendukung fitur rendering, beserta versi Helm dan Kustomize yang dipaketkan.

Versi Config Sync Versi Helm Versi Kustomisasi
1.18.0 v3.14.3 v5.3.0
1.17.1 dan 1.17.3 v3.13.3 v5.3.0
1.16.3 dan 1.17.0 v3.13.1 v5.1.1
1.16.1 dan 1.16.2 v3.12.3 v5.1.1
1.16.0 v3.12.2 v5.1.1
1.15.3 v3.12.2 v5.1.0
1.15.1 hingga 1.15.2 v3.11.3 v5.0.3
1.15.0 v3.11.3 v5.0.1
1.11.0 hingga 1.14.3 v3.6.3 v4.5.2

Untuk informasi tentang merender Helm melalui Kustomize, lihat Mengonfigurasi Kubernetes dengan Kustomize. Untuk mengetahui informasi tentang penggunaan Helm API, lihat Menyinkronkan diagram Helm dari Artifact Registry.

Langkah selanjutnya