Mengonfigurasi sinkronisasi dari lebih dari satu sumber tepercaya

Halaman ini menjelaskan cara mengonfigurasi lebih dari satu sumber tepercaya cakupan namespace dan root dengan membuat objek RootSync dan RepoSync.

Dengan memiliki sumber tepercaya utama, Anda dapat menyinkronkan konfigurasi cakupan cluster dan cakupan namespace. Sumber kebenaran root dapat menggunakan kredensial tingkat admin untuk menerapkan kebijakan pada namespace aplikasi dan mengganti perubahan lokal yang menyimpang dari status yang Anda deklarasikan dalam konfigurasi. Administrator pusat biasanya mengatur sumber tepercaya utama.

Sumber kebenaran cakupan namespace bersifat opsional dan dapat berisi konfigurasi cakupan namespace yang disinkronkan ke namespace tertentu di seluruh cluster. Anda dapat mendelegasikan penyiapan dan kontrol sumber kebenaran yang tercakup dalam namespace kepada pengguna non-administratif. Meskipun Config Sync otomatis mendeteksi perubahan dari sumber tepercaya, Anda dapat menambahkan lapisan ekstra deteksi penyimpangan dengan menambahkan webhook penerimaan ke sumber tepercaya yang tercakup dalam namespace. Untuk mengetahui detail cara melakukannya, lihat Mencegah penyimpangan konfigurasi.

Sebelum memulai

  • Buat, atau pastikan Anda memiliki akses ke, sumber tepercaya tidak terstruktur yang dapat berisi konfigurasi yang disinkronkan Config Sync. Config Sync mendukung repositori Git, diagram Helm, dan image OCI sebagai sumber tepercaya. Sumber kebenaran yang tercakup dalam namespace harus menggunakan format tidak terstruktur.
  • Buat, atau pastikan Anda memiliki akses ke, cluster yang berada di platform dan versi yang didukung Google Kubernetes Engine dan memenuhi persyaratan untuk Config Sync.

Buat RoleBinding

RoleBinding diperlukan untuk memberikan izin ke RepoSync yang Anda buat dalam panduan ini. Untuk membuat RoleBinding, selesaikan langkah-langkah berikut:

  1. Di sumber root, deklarasikan konfigurasi RoleBinding yang memberikan izin akun layanan SERVICE_ACCOUNT_NAME untuk mengelola objek di namespace. Config Sync otomatis membuat akun layanan SERVICE_ACCOUNT_NAME saat konfigurasi RepoSync disinkronkan ke cluster.

    RoleBinding dapat mereferensikan Role dalam namespace yang sama. Atau, RoleBinding dapat mereferensikan ClusterRole dan mengikat ClusterRole tersebut ke namespace RoleBinding. Meskipun Anda harus mematuhi prinsip hak istimewa terendah dengan memberikan izin terperinci ke Role yang ditentukan pengguna, Anda dapat menentukan ClusterRole atau menggunakan peran yang terlihat oleh pengguna, dan mereferensikan ClusterRole yang sama di beberapa RoleBindings di namespace yang berbeda.

    ClusterRole Default

    Simpan manifes RoleBinding yang mereferensikan ClusterRole default, misalnya admin atau edit, sebagai FILENAME:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ClusterRole
      name: CLUSTERROLE_NAME
      apiGroup: rbac.authorization.k8s.io
    

    Ganti kode berikut:

    • FILENAME: nama untuk manifes RoleBinding.
    • NAMESPACE: tambahkan nama namespace Anda.
    • SERVICE_ACCOUNT_NAME: tambahkan nama akun layanan rekonsiliasi. Jika nama RepoSync adalah repo-sync, SERVICE_ACCOUNT_NAME adalah ns-reconciler-NAMESPACE. Jika tidak, nilainya adalah ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH. Misalnya, jika nama RepoSync Anda adalah prod, maka SERVICE_ACCOUNT_NAME adalah ns-reconciler-NAMESPACE-prod-4. Integer 4 digunakan karena prod berisi 4 karakter.
    • CLUSTERROLE_NAME: tambahkan nama ClusterRole default.

    Peran yang ditentukan pengguna

    Anda dapat mendeklarasikan ClusterRole atau Role dengan memberikan daftar izin ke setiap resource yang dikelola oleh objek RepoSync. Hal ini memungkinkan izin terperinci. Lihat merujuk ke resource untuk mengetahui detail selengkapnya.

    Misalnya, ClusterRole atau Role berikut memberikan izin untuk mengelola objek Deployment dan ServiceAccount:

    # ROOT_REPO/namespaces/NAMESPACE/sync-role.yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ROLE_KIND
    metadata:
      namespace: NAMESPACE # only set this field for a 'Role'
      name: RECONCILER_ROLE
    rules:
    # Update 'apiGroups' and 'resources' to reference actual resources managed by 'RepoSync'.
    - apiGroups: ["apps"]
      resources: ["deployments"]
      verbs: ["*"]
    - apiGroups: [""]
      resources: ["serviceaccounts"]
      verbs: ["*"]
    

    Simpan manifes RoleBinding yang mereferensikan ClusterRole atau Role sebagai FILENAME:

    # ROOT_REPO/namespaces/NAMESPACE/FILENAME.yaml
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ROLE_KIND
      name: RECONCILER_ROLE
      apiGroup: rbac.authorization.k8s.io
    

    Ganti kode berikut:

    • FILENAME: nama untuk manifes RoleBinding.
    • ROLE_KIND: tetapkan ClusterRole atau Role.
    • NAMESPACE: tambahkan nama namespace Anda.
    • SERVICE_ACCOUNT_NAME: tambahkan nama akun layanan rekonsiliasi. Jika nama RepoSync adalah repo-sync, SERVICE_ACCOUNT_NAME adalah ns-reconciler-NAMESPACE. Jika tidak, nilainya adalah ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH. Misalnya, jika nama RepoSync Anda adalah prod, maka SERVICE_ACCOUNT_NAME adalah ns-reconciler-NAMESPACE-prod-4. Integer 4 digunakan karena prod berisi 4 karakter.
    • RECONCILER_ROLE: tambahkan nama ClusterRole atau Role.
  2. Terapkan RoleBinding:

    kubectl apply -f FILENAME
    

Batasan

Pilih metode konfigurasi yang Anda inginkan

Pilih salah satu dari dua metode untuk mengonfigurasi sumber:

Mengontrol sumber dalam sumber tepercaya root

Untuk mengontrol sumber dengan sumber root, Anda memerlukan RoleBinding untuk mengizinkan akses. Jika Anda tidak memilikinya, lihat bagian Membuat RoleBinding.

Mengontrol sumber utama dalam sumber utama tepercaya

Config Sync mendukung sinkronisasi dari lebih dari satu sumber tepercaya. Administrator pusat dapat menggunakan sumber tepercaya utama untuk mengelola semua sumber lainnya. Karena Config Sync mengelola objek RootSync, metode ini mencegah perubahan lokal pada konfigurasi RootSync di cluster.

Untuk menggunakan metode ini, selesaikan tugas berikut:

  1. Simpan salah satu manifes berikut sebagai root-sync.yaml. Gunakan versi manifes yang sesuai dengan jenis sumber untuk konfigurasi Anda.

    Git

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: git
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        secretRef:
          name: ROOT_SECRET_NAME
        noSSLVerify: ROOT_NO_SSL_VERIFY
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • ROOT_SYNC_NAME: tambahkan nama objek RootSync Anda.
    • ROOT_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.
    • ROOT_REPOSITORY: tambahkan URL repositori Git yang akan digunakan sebagai repositori root. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Kolom ini wajib diisi.
    • ROOT_REVISION: tambahkan revisi Git (tag atau hash) atau cabang yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah HEAD. Saat menggunakan hash, hash tersebut harus berupa hash lengkap, dan bukan bentuk singkat.
    • ROOT_BRANCH: tambahkan cabang repositori yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah master. Sebaiknya gunakan kolom revision untuk menentukan nama cabang agar lebih sederhana. Jika kolom revision dan kolom branch ditentukan, revision akan diprioritaskan daripada branch.
    • ROOT_DIRECTORY: tambahkan jalur di repositori Git ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan ke. Kolom ini bersifat opsional dan defaultnya adalah direktori root (/) repositori.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • ssh: Menggunakan pasangan kunci SSH
      • cookiefile: Menggunakan cookiefile
      • token: Menggunakan token
      • gcpserviceaccount: Gunakan akun layanan Google untuk mengakses Cloud Source Repositories.
      • gcenode: Menggunakan akun layanan Google untuk mengakses Cloud Source Repositories. Pilih opsi ini hanya jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.

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

      Kolom ini wajib diisi.

    • ROOT_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini ditetapkan, Anda harus menambahkan kunci publik Secret ke penyedia Git. Kolom ini bersifat opsional.

    • ROOT_NO_SSL_VERIFY: Untuk menonaktifkan verifikasi sertifikat SSL, tetapkan kolom ini ke true. Nilai defaultnya adalah false.

    • ROOT_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Git Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

    Manifes ini membuat objek RootSync yang menggunakan Git sebagai sumber.

    OCI

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: oci
      sourceFormat: ROOT_FORMAT
      oci:
        image: ROOT_IMAGE
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • ROOT_SYNC_NAME: tambahkan nama objek RootSync Anda.
    • ROOT_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.
    • ROOT_IMAGE: URL image OCI yang akan digunakan sebagai repositori root, misalnya LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Secara default, gambar diambil dari tag latest, tetapi Anda dapat mengambil gambar berdasarkan 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
    • ROOT_DIRECTORY: tambahkan jalur di repositori ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan ke. Kolom ini bersifat opsional dan defaultnya adalah direktori root (/) repositori.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

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

      Kolom ini wajib diisi.

    • ROOT_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia OCI Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

    Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

    Manifes ini membuat objek RootSync yang menggunakan image OCI sebagai sumber.

    Helm

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: helm
      sourceFormat: ROOT_FORMAT
      helm:
        repo: ROOT_HELM_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: ROOT_AUTH_TYPE
          gcpServiceAccountEmail: ROOT_EMAIL
          secretRef:
            name: ROOT_SECRET_NAME
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • ROOT_SYNC_NAME: tambahkan nama objek RootSync Anda.
    • ROOT_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.
    • ROOT_HELM_REPOSITORY: URL repositori Helm yang akan digunakan sebagai repositori root. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Kolom ini wajib diisi.
    • HELM_CHART_NAME: tambahkan nama Helm chart Anda. Kolom ini wajib diisi.
    • HELM_CHART_VERSION: versi diagram Anda. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, versi terbaru akan digunakan.
    • HELM_RELEASE_NAME: nama rilis Helm. Kolom ini bersifat opsional.
    • HELM_RELEASE_NAMESPACE: namespace target untuk rilis. Namespace ini hanya menetapkan namespace untuk resource yang berisi namespace: {{ .Release.Namespace }} dalam templatenya. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, namespace default config-management-system akan digunakan.
    • HELM_INCLUDE_CRDS: ditetapkan ke true jika Anda ingin template Helm juga membuat CustomResourceDefinition. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, defaultnya adalah false dan CRD tidak akan dibuat.
    • VALUE: nilai yang akan digunakan, bukan nilai default yang disertakan dalam diagram Helm. Format kolom ini dengan cara yang sama seperti file values.yaml helm chart. Kolom ini bersifat opsional.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • token: Menggunakan nama pengguna dan sandi untuk mengakses repositori Helm pribadi.
      • gcenode: Gunakan akun layanan default Compute Engine untuk mengakses image di Artifact Registry. Pilih opsi ini hanya jika Workload Identity Federation untuk GKE tidak diaktifkan di cluster Anda.
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses gambar.

      Kolom ini wajib diisi.

    • ROOT_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: tambahkan nama Secret Anda jika token adalah ROOT_AUTH_TYPE. Kolom ini bersifat opsional.

    • ROOT_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Helm Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

    Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

    Manifes ini membuat objek RootSync yang menggunakan Helm sebagai sumber.

  2. Lakukan perubahan pada sumber tepercaya root:

     git add .
     git commit -m 'Setting up a new root source of truth.'
     git push
    
  3. Anda dapat mengulangi langkah-langkah di atas jika perlu mengonfigurasi beberapa sumber root. Anda juga dapat menyimpan konfigurasi beberapa objek RootSync di sumber tepercaya root yang disinkronkan oleh objek RootSync lain, untuk mengelola beberapa objek RootSync secara terpusat dengan cara GitOps.

Mengontrol objek cakupan namespace di sumber tepercaya root

Sumber tepercaya yang tercakup dalam namespace dapat dikelola oleh sumber tepercaya root. Karena sumber yang tercakup dalam namespace dikelola oleh Config Sync, metode ini mencegah perubahan lokal pada definisi sumber yang tercakup dalam namespace.

Untuk menggunakan metode ini, selesaikan tugas berikut:

  1. Di sumber tepercaya root, deklarasikan konfigurasi namespace:

    # ROOT_SOURCE/namespaces/NAMESPACE/namespace.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
      name: NAMESPACE
    

    Ganti NAMESPACE dengan nama untuk namespace Anda.

  2. Di sumber tepercaya root, buat salah satu objek RepoSync berikut dalam namespace yang sama. Gunakan manifes yang sesuai dengan jenis sumber untuk konfigurasi Anda:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • REPO_SYNC_NAME: tambahkan nama objek RepoSync Anda. Nama harus unik di seluruh namespace.
    • NAMESPACE: tambahkan nama namespace Anda.
    • NAMESPACE_REPOSITORY: tambahkan URL repositori Git yang akan digunakan sebagai repositori namespace. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Jika Anda tidak memasukkan protokol, URL akan diperlakukan sebagai URL HTTPS. Kolom ini wajib diisi.
    • NAMESPACE_REVISION: tambahkan revisi Git (tag atau hash) atau cabang yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah HEAD. Saat menggunakan hash, hash tersebut harus berupa hash lengkap, dan bukan bentuk singkat.
    • NAMESPACE_BRANCH: tambahkan cabang repositori yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah master. Sebaiknya gunakan kolom revision untuk menentukan nama cabang agar lebih sederhana. Jika kolom revision dan kolom branch ditentukan, revision akan diprioritaskan daripada branch.
    • NAMESPACE_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • ssh: Menggunakan pasangan kunci SSH
      • cookiefile: Menggunakan cookiefile
      • token: Menggunakan token
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses repositori di Cloud Source Repositories.
      • gcenode: Menggunakan akun layanan Google untuk mengakses repositori di Cloud Source Repositories. Pilih opsi ini hanya jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.

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

      Kolom ini wajib diisi.

    • NAMESPACE_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai NAMESPACE_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: tambahkan nama yang ingin Anda berikan ke Secret Anda. Kolom ini bersifat opsional.

    • NAMESPACE_NO_SSL_VERIFY: Untuk menonaktifkan verifikasi sertifikat SSL, tetapkan kolom ini ke true. Nilai defaultnya adalah false.

    • NAMESPACE_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Git Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • REPO_SYNC_NAME: tambahkan nama objek RepoSync Anda. Nama harus unik di seluruh namespace.
    • NAMESPACE: tambahkan nama namespace Anda.
    • NAMESPACE_IMAGE: URL image OCI yang akan digunakan sebagai sumber namespace, misalnya LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Secara default, gambar diambil dari tag latest, tetapi Anda dapat mengambil gambar berdasarkan 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
    • NAMESPACE_DIRECTORY: tambahkan jalur di sumber ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan. Kolom ini bersifat opsional dan defaultnya adalah direktori root (/) dari sumber.

    • NAMESPACE_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

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

      Kolom ini wajib diisi.

    • NAMESPACE_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia OCI Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

    Helm

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • REPO_SYNC_NAME: tambahkan nama objek RepoSync Anda. Nama harus unik di seluruh namespace.
    • NAMESPACE: tambahkan nama namespace Anda.
    • NAMESPACE_REPOSITORY: URL repositori Helm yang akan digunakan sebagai repositori root. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Kolom ini wajib diisi.
    • HELM_CHART_NAME: tambahkan nama Helm chart Anda. Kolom ini wajib diisi.
    • HELM_CHART_VERSION: versi diagram Anda. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, versi terbaru akan digunakan.
    • HELM_RELEASE_NAME: nama rilis Helm. Kolom ini bersifat opsional.
    • HELM_RELEASE_NAMESPACE: namespace target untuk rilis. Namespace ini hanya menetapkan namespace untuk resource yang berisi namespace: {{ .Release.Namespace }} dalam templatenya. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, namespace default config-management-system akan digunakan.
    • HELM_INCLUDE_CRDS: ditetapkan ke true jika Anda ingin template Helm juga membuat CustomResourceDefinition. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, defaultnya adalah false dan CRD tidak akan dibuat.
    • VALUE: nilai yang akan digunakan, bukan nilai default yang disertakan dalam diagram Helm. Format kolom ini dengan cara yang sama seperti file values.yaml diagram helm. Kolom ini bersifat opsional.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • token: Menggunakan nama pengguna dan sandi untuk mengakses repositori Helm pribadi.
      • gcenode: Gunakan akun layanan default Compute Engine untuk mengakses image di Artifact Registry. Pilih opsi ini hanya jika Workload Identity Federation untuk GKE tidak diaktifkan di cluster Anda.
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses gambar.

      Kolom ini wajib diisi.

    • NAMESPACE_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: tambahkan nama Secret Anda jika token adalah ROOT_AUTH_TYPE. Kolom ini bersifat opsional.

    • NAMESPACE_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Helm Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

  3. Jika Anda menggunakan gcpserviceaccount sebagai jenis autentikasi dan belum mengaktifkan Federasi Workload Identity untuk GKE, Anda harus membuat binding kebijakan IAM antara akun layanan Kubernetes untuk setiap namespace dan akun layanan Google. Lihat Memberikan akses ke Git untuk mengetahui petunjuk cara membuat binding ini.

  4. Lakukan perubahan pada sumber tepercaya root:

     git add .
     git commit -m 'Setting up a new namespace-scoped source of truth.'
     git push
    
  5. Jika diperlukan, buat Secret berdasarkan metode autentikasi pilihan Anda. Jika Anda menggunakan none sebagai jenis autentikasi, Anda dapat melewati langkah ini.

    Secret harus memenuhi persyaratan berikut:

    • Buat Secret di namespace yang sama dengan RepoSync.
    • Nama Secret harus cocok dengan nama spec.git.secretRef yang Anda tentukan di repo-sync.yaml.
    • Anda harus menambahkan kunci publik Secret ke penyedia Git.
  6. Untuk memverifikasi konfigurasi, gunakan kubectl get pada salah satu objek di sumber namespace. Contoh:

    kubectl get rolebindings -n NAMESPACE
    
  7. Anda dapat mengulangi langkah-langkah di atas jika perlu mengonfigurasi lebih dari satu sumber cakupan namespace.

Mengontrol sumber cakupan namespace dalam sumber cakupan namespace

Config Sync mendukung sinkronisasi dari lebih dari satu sumber tepercaya cakupan namespace per namespace. Sumber kebenaran cakupan namespace dapat dikelola dalam sumber kebenaran cakupan namespace di namespace yang sama.

Untuk menggunakan metode ini, selesaikan tugas berikut:

  1. Di sumber tepercaya yang tercakup dalam namespace, buat salah satu objek RepoSync berikut dalam namespace yang sama. Gunakan manifes yang sesuai dengan jenis sumber untuk konfigurasi Anda:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • REPO_SYNC_NAME: tambahkan nama objek RepoSync Anda. Nama harus unik di seluruh namespace.
    • NAMESPACE: tambahkan nama namespace Anda.
    • NAMESPACE_REPOSITORY: tambahkan URL repositori Git yang akan digunakan sebagai repositori namespace. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Jika Anda tidak memasukkan protokol, URL akan diperlakukan sebagai URL HTTPS. Kolom ini wajib diisi.
    • NAMESPACE_REVISION: tambahkan revisi Git (tag atau hash) atau cabang yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah HEAD. Saat menggunakan hash, hash tersebut harus berupa hash lengkap, dan bukan bentuk singkat.
    • NAMESPACE_BRANCH: tambahkan cabang repositori yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah master. Sebaiknya gunakan kolom revision untuk menentukan nama cabang agar lebih sederhana. Jika kolom revision dan kolom branch ditentukan, revision akan diprioritaskan daripada branch.
    • NAMESPACE_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • ssh: Menggunakan pasangan kunci SSH
      • cookiefile: Menggunakan cookiefile
      • token: Menggunakan token
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses repositori di Cloud Source Repositories.
      • gcenode: Menggunakan akun layanan Google untuk mengakses repositori di Cloud Source Repositories. Pilih opsi ini hanya jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.

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

      Kolom ini wajib diisi.

    • NAMESPACE_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai NAMESPACE_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: tambahkan nama yang ingin Anda berikan ke Secret Anda. Kolom ini bersifat opsional.

    • NAMESPACE_NO_SSL_VERIFY: Untuk menonaktifkan verifikasi sertifikat SSL, tetapkan kolom ini ke true. Nilai defaultnya adalah false.

    • NAMESPACE_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Git Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • REPO_SYNC_NAME: tambahkan nama objek RepoSync Anda. Nama harus unik di seluruh namespace.
    • NAMESPACE: tambahkan nama namespace Anda.
    • NAMESPACE_IMAGE: URL image OCI yang akan digunakan sebagai sumber namespace, misalnya LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Secara default, gambar diambil dari tag latest, tetapi Anda dapat mengambil gambar berdasarkan 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
    • NAMESPACE_DIRECTORY: tambahkan jalur di sumber ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan. Kolom ini bersifat opsional dan defaultnya adalah direktori root (/) dari sumber.

    • NAMESPACE_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

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

      Kolom ini wajib diisi.

    • NAMESPACE_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia OCI Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

    Helm

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • REPO_SYNC_NAME: tambahkan nama objek RepoSync Anda. Nama harus unik di seluruh namespace.
    • NAMESPACE: tambahkan nama namespace Anda.
    • NAMESPACE_REPOSITORY: URL repositori Helm yang akan digunakan sebagai repositori root. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Kolom ini wajib diisi.
    • HELM_CHART_NAME: tambahkan nama Helm chart Anda. Kolom ini wajib diisi.
    • HELM_CHART_VERSION: versi diagram Anda. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, versi terbaru akan digunakan.
    • HELM_RELEASE_NAME: nama rilis Helm. Kolom ini bersifat opsional.
    • HELM_RELEASE_NAMESPACE: namespace target untuk rilis. Namespace ini hanya menetapkan namespace untuk resource yang berisi namespace: {{ .Release.Namespace }} dalam templatenya. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, namespace default config-management-system akan digunakan.
    • HELM_INCLUDE_CRDS: ditetapkan ke true jika Anda ingin template Helm juga membuat CustomResourceDefinition. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, defaultnya adalah false dan CRD tidak akan dibuat.
    • VALUE: nilai yang akan digunakan, bukan nilai default yang disertakan dalam diagram Helm. Format kolom ini dengan cara yang sama seperti file values.yaml diagram helm. Kolom ini bersifat opsional.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • token: Menggunakan nama pengguna dan sandi untuk mengakses repositori Helm pribadi.
      • gcenode: Gunakan akun layanan default Compute Engine untuk mengakses image di Artifact Registry. Pilih opsi ini hanya jika Workload Identity Federation untuk GKE tidak diaktifkan di cluster Anda.
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses gambar.

      Kolom ini wajib diisi.

    • NAMESPACE_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: tambahkan nama Secret Anda jika token adalah ROOT_AUTH_TYPE. Kolom ini bersifat opsional.

    • NAMESPACE_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Helm Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

  2. Jika Anda menggunakan gcpserviceaccount sebagai jenis autentikasi dan belum mengaktifkan Federasi Workload Identity untuk GKE, Anda harus membuat binding kebijakan IAM antara akun layanan Kubernetes untuk setiap namespace dan akun layanan Google. Lihat Memberikan akses ke Git untuk mengetahui petunjuk cara membuat binding ini.

  3. Lakukan perubahan pada sumber tepercaya root:

     git add .
     git commit -m 'Setting up a new namespace-scoped source of truth.'
     git push
    
  4. Jika diperlukan, buat Secret berdasarkan metode autentikasi pilihan Anda. Jika Anda menggunakan none sebagai jenis autentikasi, Anda dapat melewati langkah ini.

    Secret harus memenuhi persyaratan berikut:

    • Buat Secret di namespace yang sama dengan RepoSync.
    • Nama Secret harus cocok dengan nama spec.git.secretRef yang Anda tentukan di repo-sync.yaml.
    • Anda harus menambahkan kunci publik Secret ke penyedia Git.
  5. Untuk memverifikasi konfigurasi, gunakan kubectl get pada salah satu objek di sumber tepercaya yang tercakup dalam namespace. Contoh:

    kubectl get rolebindings -n NAMESPACE
    
  6. Anda dapat mengulangi langkah-langkah di atas jika perlu mengonfigurasi lebih dari satu sumber yang tercakup dalam namespace.

Mengontrol sumber tepercaya dengan Kubernetes API

Dalam metode ini, administrator pusat mendelegasikan deklarasi objek RootSync lainnya kepada administrator lain. Untuk objek RepoSync, administrator pusat hanya mendeklarasikan namespace di sumber kebenaran utama dan mendelegasikan deklarasi objek RepoSync kepada operator aplikasi.

Mengontrol lebih dari satu sumber tepercaya utama

Administrator lain dapat mengontrol sumber kebenaran utama dengan menyelesaikan tugas berikut:

  1. Simpan salah satu manifes berikut sebagai root-sync.yaml. Gunakan versi manifes yang sesuai dengan jenis sumber untuk konfigurasi Anda.

    Git

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: git
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        secretRef:
          name: ROOT_SECRET_NAME
        noSSLVerify: ROOT_NO_SSL_VERIFY
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • ROOT_SYNC_NAME: tambahkan nama objek RootSync Anda.
    • ROOT_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.
    • ROOT_REPOSITORY: tambahkan URL repositori Git yang akan digunakan sebagai repositori root. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Kolom ini wajib diisi.
    • ROOT_REVISION: tambahkan revisi Git (tag atau hash) atau cabang yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah HEAD. Saat menggunakan hash, hash tersebut harus berupa hash lengkap, dan bukan bentuk singkat.
    • ROOT_BRANCH: tambahkan cabang repositori yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah master. Sebaiknya gunakan kolom revision untuk menentukan nama cabang agar lebih sederhana. Jika kolom revision dan kolom branch ditentukan, revision akan diprioritaskan daripada branch.
    • ROOT_DIRECTORY: tambahkan jalur di repositori Git ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan ke. Kolom ini bersifat opsional dan defaultnya adalah direktori root (/) repositori.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • ssh: Menggunakan pasangan kunci SSH
      • cookiefile: Menggunakan cookiefile
      • token: Menggunakan token
      • gcpserviceaccount: Gunakan akun layanan Google untuk mengakses Cloud Source Repositories.
      • gcenode: Menggunakan akun layanan Google untuk mengakses Cloud Source Repositories. Pilih opsi ini hanya jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.

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

      Kolom ini wajib diisi.

    • ROOT_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini ditetapkan, Anda harus menambahkan kunci publik Secret ke penyedia Git. Kolom ini bersifat opsional.

    • ROOT_NO_SSL_VERIFY: Untuk menonaktifkan verifikasi sertifikat SSL, tetapkan kolom ini ke true. Nilai defaultnya adalah false.

    • ROOT_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Git Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

    Manifes ini membuat objek RootSync yang menggunakan Git sebagai sumber.

    OCI

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: oci
      sourceFormat: ROOT_FORMAT
      oci:
        image: ROOT_IMAGE
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • ROOT_SYNC_NAME: tambahkan nama objek RootSync Anda.
    • ROOT_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.
    • ROOT_IMAGE: URL image OCI yang akan digunakan sebagai repositori root, misalnya LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Secara default, gambar diambil dari tag latest, tetapi Anda dapat mengambil gambar berdasarkan 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
    • ROOT_DIRECTORY: tambahkan jalur di repositori ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan ke. Kolom ini bersifat opsional dan defaultnya adalah direktori root (/) repositori.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

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

      Kolom ini wajib diisi.

    • ROOT_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia OCI Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

    Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

    Manifes ini membuat objek RootSync yang menggunakan image OCI sebagai sumber.

    Helm

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: helm
      sourceFormat: ROOT_FORMAT
      helm:
        repo: ROOT_HELM_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: ROOT_AUTH_TYPE
          gcpServiceAccountEmail: ROOT_EMAIL
          secretRef:
            name: ROOT_SECRET_NAME
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • ROOT_SYNC_NAME: tambahkan nama objek RootSync Anda.
    • ROOT_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.
    • ROOT_HELM_REPOSITORY: URL repositori Helm yang akan digunakan sebagai repositori root. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Kolom ini wajib diisi.
    • HELM_CHART_NAME: tambahkan nama Helm chart Anda. Kolom ini wajib diisi.
    • HELM_CHART_VERSION: versi diagram Anda. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, versi terbaru akan digunakan.
    • HELM_RELEASE_NAME: nama rilis Helm. Kolom ini bersifat opsional.
    • HELM_RELEASE_NAMESPACE: namespace target untuk rilis. Namespace ini hanya menetapkan namespace untuk resource yang berisi namespace: {{ .Release.Namespace }} dalam templatenya. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, namespace default config-management-system akan digunakan.
    • HELM_INCLUDE_CRDS: ditetapkan ke true jika Anda ingin template Helm juga membuat CustomResourceDefinition. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, defaultnya adalah false dan CRD tidak akan dibuat.
    • VALUE: nilai yang akan digunakan, bukan nilai default yang disertakan dalam diagram Helm. Format kolom ini dengan cara yang sama seperti file values.yaml helm chart. Kolom ini bersifat opsional.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • token: Menggunakan nama pengguna dan sandi untuk mengakses repositori Helm pribadi.
      • gcenode: Gunakan akun layanan default Compute Engine untuk mengakses image di Artifact Registry. Pilih opsi ini hanya jika Workload Identity Federation untuk GKE tidak diaktifkan di cluster Anda.
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses gambar.

      Kolom ini wajib diisi.

    • ROOT_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: tambahkan nama Secret Anda jika token adalah ROOT_AUTH_TYPE. Kolom ini bersifat opsional.

    • ROOT_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Helm Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

    Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

    Manifes ini membuat objek RootSync yang menggunakan Helm sebagai sumber.

  2. Terapkan perubahan:

    kubectl apply -f root-sync.yaml
    
  3. Anda dapat mengulangi langkah-langkah di atas jika perlu mengonfigurasi lebih dari satu sumber tepercaya utama.

Mengontrol sumber kebenaran cakupan namespace

Tugas administrator pusat

Administrator pusat menyelesaikan tugas berikut:

  1. Di sumber tepercaya root, deklarasikan konfigurasi namespace untuk sumber cakupan namespace.

    # ROOT_REPO/namespaces/NAMESPACE/namespace.yaml
     apiVersion: v1
     kind: Namespace
     metadata:
       name: NAMESPACE
    

    Ganti NAMESPACE dengan nama untuk namespace Anda.

  2. Di sumber tepercaya root, deklarasikan RoleBinding untuk memberikan izin operator aplikasi. Gunakan pencegahan eskalasi RBAC untuk memastikan bahwa operator aplikasi tidak dapat menerapkan binding peran dengan izin yang tidak diberikan oleh binding peran ini di kemudian hari.

    Untuk mendeklarasikan RoleBinding, buat manifes berikut:

    # ROOT_REPO/namespaces/NAMESPACE/operator-rolebinding.yaml
     kind: RoleBinding
     # Add RBAC escalation prevention
     apiVersion: rbac.authorization.k8s.io/v1
     metadata:
       name: operator
       namespace: NAMESPACE
     subjects:
     - kind: User
       name: USERNAME
       apiGroup: rbac.authorization.k8s.io
     roleRef:
       kind: ClusterRole
       name: OPERATOR_ROLE
       apiGroup: rbac.authorization.k8s.io
    

    Ganti kode berikut:

    • NAMESPACE: tambahkan namespace yang Anda buat di sumber tepercaya root.
    • USERNAME: tambahkan nama pengguna operator aplikasi.
    • OPERATOR_ROLE: sebagai administrator pusat, Anda dapat menetapkan OPERATOR_ROLE untuk menerapkan jenis konfigurasi yang dapat disinkronkan dari sumber yang tercakup dalam namespace. Anda dapat memilih salah satu peran berikut:

      • ClusterRole default:

        • admin
        • edit

        Untuk mempelajari lebih lanjut, lihat Peran yang terlihat oleh pengguna.

      • ClusterRole atau Role yang ditentukan pengguna yang dideklarasikan dalam sumber kebenaran utama. Peran ini memungkinkan izin terperinci.

  3. Lakukan perubahan pada sumber tepercaya root:

     git add .
     git commit -m 'Setting up new namespace-scoped source of truth.'
     git push
    

Tugas operator aplikasi

Operator aplikasi dapat mengontrol sumber yang tercakup dalam namespace dengan menyelesaikan tugas berikut:

  1. Nyatakan konfigurasi RoleBinding yang memberikan izin akun layanan SERVICE_ACCOUNT_NAME yang disediakan otomatis untuk mengelola objek di namespace. Config Sync otomatis membuat akun layanan SERVICE_ACCOUNT_NAME saat konfigurasi RepoSync disinkronkan ke cluster.

    Untuk mendeklarasikan RoleBinding, buat manifes berikut:

    # sync-rolebinding.yaml
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ClusterRole
      name: RECONCILER_ROLE
      apiGroup: rbac.authorization.k8s.io
    

    Ganti kode berikut:

    • NAMESPACE: tambahkan namespace yang Anda buat di sumber tepercaya root.
    • SERVICE_ACCOUNT_NAME: tambahkan nama akun layanan rekonsiliasi. Jika nama RepoSync adalah repo-sync, SERVICE_ACCOUNT_NAME adalah ns-reconciler-NAMESPACE. Jika tidak, nilainya adalah ns-reconciler-NAMESPACE-REPO_SYNC_NAME.
    • RECONCILER_ROLE: sebagai operator aplikasi, Anda dapat menetapkan RECONCILER_ROLE untuk menerapkan jenis konfigurasi yang dapat disinkronkan dari sumber yang tercakup dalam namespace. Anda hanya dapat membatasi lebih lanjut kumpulan izin yang telah diberikan oleh administrator pusat kepada Anda. Akibatnya, peran ini tidak boleh lebih permisif daripada OPERATOR_ROLE yang dideklarasikan oleh administrator pusat di bagian sebelumnya.
  2. Terapkan konfigurasi RoleBinding:

    kubectl apply -f sync-rolebinding.yaml
    
  3. Jika diperlukan, buat Secret berdasarkan metode autentikasi pilihan Anda. Jika Anda menggunakan none sebagai jenis autentikasi, Anda dapat melewati langkah ini.

    Secret harus memenuhi persyaratan berikut:

    • Buat Secret di namespace yang sama dengan RepoSync.
    • Nama Secret harus cocok dengan nama spec.git.secretRef yang Anda tentukan di root-sync.yaml.
    • Anda harus menambahkan kunci publik Secret ke penyedia Git.
  4. Deklarasikan konfigurasi RepoSync:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • REPO_SYNC_NAME: tambahkan nama objek RepoSync Anda. Nama harus unik di seluruh namespace.
    • NAMESPACE: tambahkan nama namespace Anda.
    • NAMESPACE_REPOSITORY: tambahkan URL repositori Git yang akan digunakan sebagai repositori namespace. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Jika Anda tidak memasukkan protokol, URL akan diperlakukan sebagai URL HTTPS. Kolom ini wajib diisi.
    • NAMESPACE_REVISION: tambahkan revisi Git (tag atau hash) atau cabang yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah HEAD. Saat menggunakan hash, hash tersebut harus berupa hash lengkap, dan bukan bentuk singkat.
    • NAMESPACE_BRANCH: tambahkan cabang repositori yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah master. Sebaiknya gunakan kolom revision untuk menentukan nama cabang agar lebih sederhana. Jika kolom revision dan kolom branch ditentukan, revision akan diprioritaskan daripada branch.
    • NAMESPACE_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • ssh: Menggunakan pasangan kunci SSH
      • cookiefile: Menggunakan cookiefile
      • token: Menggunakan token
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses repositori di Cloud Source Repositories.
      • gcenode: Menggunakan akun layanan Google untuk mengakses repositori di Cloud Source Repositories. Pilih opsi ini hanya jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.

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

      Kolom ini wajib diisi.

    • NAMESPACE_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai NAMESPACE_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: tambahkan nama yang ingin Anda berikan ke Secret Anda. Kolom ini bersifat opsional.

    • NAMESPACE_NO_SSL_VERIFY: Untuk menonaktifkan verifikasi sertifikat SSL, tetapkan kolom ini ke true. Nilai defaultnya adalah false.

    • NAMESPACE_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Git Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • REPO_SYNC_NAME: tambahkan nama objek RepoSync Anda. Nama harus unik di seluruh namespace.
    • NAMESPACE: tambahkan nama namespace Anda.
    • NAMESPACE_IMAGE: URL image OCI yang akan digunakan sebagai sumber namespace, misalnya LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Secara default, gambar diambil dari tag latest, tetapi Anda dapat mengambil gambar berdasarkan 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
    • NAMESPACE_DIRECTORY: tambahkan jalur di sumber ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan. Kolom ini bersifat opsional dan defaultnya adalah direktori root (/) dari sumber.

    • NAMESPACE_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

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

      Kolom ini wajib diisi.

    • NAMESPACE_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia OCI Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

    Helm

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Ganti kode berikut:

    • REPO_SYNC_NAME: tambahkan nama objek RepoSync Anda. Nama harus unik di seluruh namespace.
    • NAMESPACE: tambahkan nama namespace Anda.
    • NAMESPACE_REPOSITORY: URL repositori Helm yang akan digunakan sebagai repositori root. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Kolom ini wajib diisi.
    • HELM_CHART_NAME: tambahkan nama Helm chart Anda. Kolom ini wajib diisi.
    • HELM_CHART_VERSION: versi diagram Anda. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, versi terbaru akan digunakan.
    • HELM_RELEASE_NAME: nama rilis Helm. Kolom ini bersifat opsional.
    • HELM_RELEASE_NAMESPACE: namespace target untuk rilis. Namespace ini hanya menetapkan namespace untuk resource yang berisi namespace: {{ .Release.Namespace }} dalam templatenya. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, namespace default config-management-system akan digunakan.
    • HELM_INCLUDE_CRDS: ditetapkan ke true jika Anda ingin template Helm juga membuat CustomResourceDefinition. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, defaultnya adalah false dan CRD tidak akan dibuat.
    • VALUE: nilai yang akan digunakan, bukan nilai default yang disertakan dalam diagram Helm. Format kolom ini dengan cara yang sama seperti file values.yaml diagram helm. Kolom ini bersifat opsional.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • token: Menggunakan nama pengguna dan sandi untuk mengakses repositori Helm pribadi.
      • gcenode: Gunakan akun layanan default Compute Engine untuk mengakses image di Artifact Registry. Pilih opsi ini hanya jika Workload Identity Federation untuk GKE tidak diaktifkan di cluster Anda.
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses gambar.

      Kolom ini wajib diisi.

    • NAMESPACE_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: tambahkan nama Secret Anda jika token adalah ROOT_AUTH_TYPE. Kolom ini bersifat opsional.

    • NAMESPACE_CA_CERT_SECRET_NAME: tambahkan nama Secret Anda. Jika kolom ini disetel, penyedia Helm Anda harus menggunakan sertifikat yang dikeluarkan oleh certificate authority (CA) ini. Secret harus berisi sertifikat CA dengan kunci bernama cert. Kolom ini bersifat opsional.

      Untuk mempelajari lebih lanjut cara mengonfigurasi objek Secret untuk sertifikat CA, lihat Mengonfigurasi Certificate Authority

    Untuk mengetahui penjelasan kolom dan daftar lengkap kolom yang dapat Anda tambahkan ke kolom spec, lihat Kolom RootSync.

  5. Terapkan konfigurasi RepoSync:

    kubectl apply -f repo-sync.yaml
    
  6. Untuk memverifikasi konfigurasi, gunakan kubectl get pada salah satu objek di sumber yang tercakup namespace. Contoh:

    kubectl get rolebindings -n NAMESPACE
    
  7. Anda dapat mengulangi langkah-langkah di atas jika perlu mengonfigurasi beberapa sumber tepercaya yang tercakup dalam namespace .

Memverifikasi status sinkronisasi sumber kebenaran

Anda dapat menggunakan perintah nomos status untuk memeriksa status sinkronisasi sumber tepercaya:

nomos status

Anda akan melihat output yang mirip dengan contoh berikut ini:

my_managed_cluster-1
  --------------------
  <root>   git@github.com:foo-corp/acme/admin@main
  SYNCED   f52a11e4
  --------------------
  bookstore  git@github.com:foo-corp/acme/bookstore@v1
  SYNCED     34d1a8c8

Dalam contoh output ini, sumber yang tercakup dalam namespace, dalam hal ini repositori Git, dikonfigurasi untuk namespace bernama bookstore.

Memverifikasi penginstalan RootSync

Saat Anda membuat objek RootSync, Config Sync akan membuat rekonsiliasi dengan awalan root-reconciler. Reconciler adalah Pod yang di-deploy sebagai Deployment. Sinkronisasi manifes dari sumber tepercaya ke cluster.

Anda dapat memverifikasi bahwa objek RootSync berfungsi dengan benar dengan memeriksa status Deployment root-reconciler:

kubectl get -n config-management-system deployment \
    -l configsync.gke.io/sync-name=ROOT_SYNC_NAME

Ganti ROOT_SYNC_NAME dengan nama RootSync.

Anda akan melihat output yang mirip dengan contoh berikut ini:

NAME              READY   UP-TO-DATE   AVAILABLE   AGE
root-reconciler   1/1     1            1           3h42m

Untuk mengetahui cara lain dalam menjelajahi status objek RootSync, lihat Memantau objek RootSync dan RepoSync.

Memverifikasi penginstalan RepoSync

Saat Anda membuat objek RepoSync, Config Sync akan membuat rekonsiliasi dengan awalan ns-reconciler-NAMESPACE, dengan NAMESPACE adalah namespace tempat Anda membuat objek RepoSync.

Anda dapat memverifikasi bahwa objek RepoSync berfungsi dengan benar dengan memeriksa status Deployment namespace reconciler:

kubectl get -n config-management-system deployment \
  -l configsync.gke.io/sync-name=REPO_SYNC_NAME \
  -l configsync.gke.io/sync-namespace=NAMESPACE

Ganti REPO_SYNC_NAME dengan nama RepoSync, dan ganti NAMESPACE dengan namespace tempat Anda membuat sumber kebenaran yang tercakup dalam namespace.

Untuk mengetahui cara lain dalam menjelajahi status objek RepoSync, lihat Menjelajahi objek RootSync dan RepoSync.

Menghapus sumber tepercaya

Pilih tab Metode kontrol terpusat atau Metode Kubernetes API untuk melihat petunjuk yang relevan.

Metode kontrol pusat

Jika Anda menggunakan metode Mengontrol sumber tepercaya di sumber tepercaya root, administrator pusat dapat mengikuti dua langkah berikut untuk menghapus sumber tepercaya:

  1. Tentukan apakah Anda ingin menghapus atau mempertahankan resource yang dikelola melalui objek RootSync dan RepoSync.

    • Untuk menghapus semua resource yang dikelola oleh objek RootSync atau RepoSync Anda, sinkronkan objek RootSync atau RepoSync Anda ke sumber kosong. Misalnya, repositori GitHub tanpa konfigurasi. Jika objek RootSync atau RepoSync Anda berisi objek RootSync atau RepoSync lain, RootSync atau RepoSync dalam perlu disinkronkan ke repositori Git kosong terlebih dahulu.

    • Jika Anda telah mengaktifkan webhook dan ingin mempertahankan resource, nonaktifkan pencegahan penyimpangan untuk resource yang ditinggalkan. Jika Anda belum mengaktifkan webhook, Anda tidak perlu melakukan langkah tambahan untuk menyimpan resource.

  2. Hapus objek RootSync atau RepoSync dari sumber tepercaya.

Metode Kubernetes API

Jika Anda menggunakan metode Mengontrol sumber tepercaya yang tercakup dalam namespace dengan Kubernetes API, operator aplikasi dapat menggunakan langkah-langkah berikut untuk menghapus sumber tepercaya yang tercakup dalam namespace:

  1. Tentukan apakah Anda ingin menghapus atau mempertahankan resource yang dikelola melalui objek RootSync dan RepoSync.

    • Untuk menghapus semua resource yang dikelola oleh objek RootSync atau RepoSync Anda, sinkronkan objek RootSync atau RepoSync Anda ke sumber kosong. Misalnya, repositori GitHub tanpa konfigurasi. Jika objek RootSync atau RepoSync Anda berisi objek RootSync atau RepoSync lain, RootSync atau RepoSync dalam perlu disinkronkan ke repositori Git kosong terlebih dahulu.

    • Jika Anda telah mengaktifkan webhook dan ingin mempertahankan resource, nonaktifkan pencegahan penyimpangan untuk resource yang ditinggalkan. Jika Anda belum mengaktifkan webhook, Anda tidak perlu melakukan langkah tambahan untuk menyimpan resource.

  2. Hapus objek RootSync atau RepoSync dengan menjalankan perintah berikut:

    kubectl delete -f FILE_NAME
    

    Ganti FILE_NAME dengan nama file konfigurasi RootSync atau RepoSync Anda. Contoh, root-sync.yaml.

Langkah berikutnya