Panduan memulai: Sinkronisasi konfigurasi dari repositori

Dalam tutorial ini, Anda akan membuat cluster edisi Enterprise Google Kubernetes Engine (GKE) dan menggunakan Config Sync untuk menyinkronkan ke konfigurasi di repositori contoh multi-repo.

Bayangkan tim kepatuhan Anda bertanggung jawab untuk memastikan semua orang di organisasi Anda mengikuti aturan internal. Untuk menerapkan aturan ini, tim kepatuhan telah membuat konfigurasi, yang telah ditambahkan ke repositori contoh. Setiap cluster di organisasi Anda harus disinkronkan ke repositori dan Anda bertanggung jawab untuk membuat dan menyinkronkan cluster.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Make sure that you have the following role or roles on the project: GKE Hub Admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Buka IAM
    2. Pilih project.
    3. Klik Berikan akses.
    4. Di kolom New principals, masukkan ID pengguna Anda. Ini biasanya adalah alamat email untuk Akun Google.

    5. Di daftar Pilih peran, pilih peran.
    6. Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
    7. Klik Simpan.

    Membuat cluster

    Di bagian ini, Anda akan membuat cluster yang dapat digunakan dalam tutorial ini. Meskipun dalam skenario dunia nyata Anda mungkin akan mengelola beberapa cluster, untuk menyederhanakan tutorial ini, Anda hanya membuat dan mengelola satu cluster.

    Untuk membuat cluster, selesaikan langkah-langkah berikut:

    1. Di konsol Google Cloud, buka halaman Kubernetes Engine.

      Buka Google Kubernetes Engine

    2. Jika Anda menggunakan GKE untuk pertama kalinya, klik Enable untuk mengaktifkan Kubernetes Engine API.

    3. Klik Create.

    4. Di bagian Autopilot, pilih Configure.

    5. Di bagian Cluster basics, masukkan cs-cluster di kolom Name dan biarkan semua kolom lain dengan setelan default yang direkomendasikan.

    6. Klik Create. Anda akan diarahkan ke halaman Cluster Kubernetes. Pembuatan cluster Anda memerlukan waktu beberapa menit. Jika Anda melihat tanda centang hijau di kolom Status di samping cluster, berarti cluster tersebut sudah siap.

    Konfigurasi cluster Anda

    Setelah membuat cluster, Anda dapat mengonfigurasi Config Sync untuk menyinkronkan ke konfigurasi di direktori config-sync-quickstart repositori contoh.

    Untuk mengonfigurasi Config Sync di konsol Google Cloud, selesaikan langkah-langkah berikut:

    1. Di konsol Google Cloud, aktifkan GKE Hub API.

      Buka GKE Hub API

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

      Buka Config

    3. Klik Install Config Sync.

    4. Pilih Auto-upgrades untuk mengaktifkan Config Sync guna mengupgrade versi secara otomatis.

    5. Di bagian Opsi penginstalan, pilih Instal Config Sync di setiap cluster.

    6. Di tabel Available clusters, pilih cs-cluster, lalu klik Install Config Sync. Di tab Setelan, Anda akan melihat status untuk cs-cluster sebagai Diaktifkan setelah beberapa menit.

    7. Di dasbor Config Sync, klik Deploy Package.

    8. Di tabel Select clusters for package deployment, pilih cs-cluster, lalu klik Continue.

    9. Biarkan Paket dihosting di Git dipilih, lalu klik Lanjutkan.

    10. Di kolom Package name, masukkan sample-repository.

    11. Di kolom Repository URL, masukkan https://github.com/GoogleCloudPlatform/anthos-config-management-samples.

    12. Di kolom Path, masukkan config-sync-quickstart/multirepo/root.

    13. Biarkan kolom lain tetap pada nilai defaultnya.

    14. Klik Deploy Package.

      Setelah beberapa menit, Anda akan melihat Disinkronkan di kolom Status sinkronisasi untuk cs-cluster.

    Setelah disinkronkan ke repositori, Config Sync akan terus merekonsiliasi status cluster Anda dengan konfigurasi di repositori.

    Menjelajahi penginstalan Config Sync

    Di bagian berikut, Anda akan menggunakan Cloud Shell untuk menjelajahi repositori yang digunakan cs-cluster untuk menyinkronkan dan mengonfirmasi bahwa konfigurasi di repositori tersebut sedang di-deploy.

    Buka Cloud Shell

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Untuk menggunakan perintah di bagian berikut, konfigurasikan akses command line kubectl:

      gcloud container clusters get-credentials cs-cluster \
          --zone ZONE \
          --project PROJECT_ID
      

      Ganti kode berikut:

      • ZONE: zona tempat Anda membuat cluster
      • PROJECT_ID: project ID Anda

      Outputnya adalah sebagai berikut:

      Fetching cluster endpoint and auth data.
      kubeconfig entry generated for cs-cluster.
      

      Jika Anda diminta memberikan otorisasi, klik Authorize.

    Memeriksa cluster dan repositori Anda

    Direktori config-sync-quickstart mencakup konfigurasi ClusterRole, CustomResourceDefinition, Rolebinding, Namespace, dan RepoSync. File ini juga menyertakan konfigurasi untuk Prometheus Operator untuk pemantauan. Konfigurasi ini diterapkan segera setelah Config Sync dikonfigurasi untuk membaca dari repositori.

    Semua objek yang dikelola oleh Config Sync memiliki label app.kubernetes.io/managed-by yang disetel ke configmanagement.gke.io. Anda dapat menggunakan label ini untuk melihat objek terkelola.

    Untuk menampilkan namespace yang dikelola oleh Config Sync, jalankan perintah berikut:

    kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io
    

    Outputnya mirip dengan hal berikut ini:

    NAME         STATUS   AGE
    gamestore    Active   58s
    monitoring   Active   58s
    

    Anda dapat membuka folder repositori di GitHub, yaitu /config-sync-quickstart/multirepo/, untuk menjelajahi konfigurasi yang menyebabkan namespace ini dibuat.

    Anda dapat memeriksa objek lain, seperti ClusterRole, Reposyncs, CRD, dan Rolebindings, dengan cara yang sama.

    Memeriksa status sinkronisasi

    Saat menggunakan Config Sync, Anda dapat menggunakan alat command line nomos. Alat ini memberikan fungsi tambahan untuk Config Sync.

    Di bagian ini, Anda akan memeriksa apakah Config Sync berhasil menyinkronkan semua konfigurasi ke cluster menggunakan perintah nomos status:

    nomos status

    Outputnya mirip dengan hal berikut ini:

    *gke_PROJECT_ID_ZONE_cs-cluster
      --------------------
      <root>:root-sync                         https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main
      SYNCED @ 2023-02-03 16:58:42 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
      Managed resources:
         NAMESPACE    NAME                                                                                      STATUS    SOURCEHASH
                      clusterrole.rbac.authorization.k8s.io/namespace-reader                                    Current   1fbab5c
                      clusterrole.rbac.authorization.k8s.io/prometheus-acm                                      Current   1fbab5c
                      clusterrole.rbac.authorization.k8s.io/prometheus-operator                                 Current   1fbab5c
                      clusterrole.rbac.authorization.k8s.io/webstore-admin                                      Current   1fbab5c
                      clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm                               Current   1fbab5c
                      clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator                          Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com   Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com         Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/anvils.acme.com                             Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com           Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com                Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com          Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com       Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com       Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com          Current   1fbab5c
                      customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com                   Current   1fbab5c
                      namespace/gamestore                                                                       Current   1fbab5c
                      namespace/monitoring                                                                      Current   1fbab5c
         gamestore    reposync.configsync.gke.io/repo-sync                                                      Current   1fbab5c
         gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-admin                                     Current   1fbab5c
         gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin                            Current   1fbab5c
         monitoring   deployment.apps/prometheus-operator                                                       Current   1fbab5c
         monitoring   prometheus.monitoring.coreos.com/acm                                                      Current   1fbab5c
         monitoring   service/prometheus-acm                                                                    Current   1fbab5c
         monitoring   service/prometheus-operator                                                               Current   1fbab5c
         monitoring   serviceaccount/prometheus-acm                                                             Current   1fbab5c
         monitoring   serviceaccount/prometheus-operator                                                        Current   1fbab5c
         monitoring   servicemonitor.monitoring.coreos.com/acm-service                                          Current   1fbab5c
      --------------------
      gamestore:repo-sync                      https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main
      SYNCED @ 2023-02-03 16:58:51 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
      Managed resources:
         NAMESPACE   NAME                                 STATUS    SOURCEHASH
         gamestore   configmap/store-inventory            Current   1fbab5c
         gamestore   webstore.marketplace.com/gameplace   Current   1fbab5c
    

    Dalam output ini, Anda dapat melihat bahwa cs-cluster berhasil menyinkronkan dari dua repositori. Selain itu, karena semua resource memiliki status Current, status resource akan cocok dengan status yang Anda inginkan.

    Pembersihan

    1. Buka menu GKE di konsol Google Cloud.

      Buka GKE

    2. Di samping cs-cluster, klik Tindakan, lalu klik Hapus.

    3. Saat diminta untuk mengonfirmasi, klik Hapus lagi.

    Langkah selanjutnya