Panduan memulai: Sinkronisasi konfigurasi dari repositori

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

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

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Pastikan Anda memiliki peran berikut di project: GKE Hub Admin

    Memeriksa peran

    1. Di konsol Google Cloud, buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. Di kolom Akun utama, cari baris yang berisi alamat email Anda.

      Jika alamat email Anda tidak ada di kolom tersebut, berarti Anda tidak memiliki peran apa pun.

    4. Di kolom Peran untuk baris yang berisi alamat email Anda, periksa apakah daftar peran menyertakan peran yang diperlukan.

    Memberikan peran

    1. Di konsol Google Cloud, buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. Klik Berikan akses.
    4. Di kolom Akun utama baru, masukkan alamat email Anda.
    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 perlu mengelola beberapa cluster, untuk menyederhanakan tutorial ini, Anda hanya perlu membuat dan mengelola satu cluster.

Untuk membuat cluster, selesaikan langkah-langkah berikut:

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

    Buka Google Kubernetes Engine

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

  3. Klik Create.

  4. Di bagian Autopilot, pilih Configure.

  5. Di bagian Dasar-dasar cluster, masukkan cs-cluster di kolom Name, dan biarkan semua kolom lainnya dengan setelan default yang direkomendasikan.

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

Konfigurasi cluster Anda

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

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

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

    Buka GKE Hub API

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

    Buka dasbor Config Sync

  3. Pada kotak Config Sync settings, klik Install Config Sync.

  4. Pada tabel Available Clusters, pilih cs-cluster dan klik Install Config Sync.

    Setelah beberapa menit, buka tab Setelan. Anda akan melihat Diinstal di kolom Status sinkronisasi konfigurasi untuk cs-cluster.

  5. Di dasbor Config Sync, klik Deploy Package.

  6. Di tabel SelectCluster for package deployment, pilih cs-cluster, lalu klik Continue.

  7. Biarkan Package host on Git tetap dipilih, lalu klik Continue.

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

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

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

  11. Biarkan semua kolom lain tetap pada nilai defaultnya.

  12. 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.

Mempelajari penginstalan Config Sync

Di bagian berikut, Anda akan menggunakan Cloud Shell untuk mempelajari repositori tempat cs-cluster disinkronkan dan mengonfirmasi bahwa konfigurasi dalam repositori sedang di-deploy.

Buka Cloud Shell

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  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

    Output-nya adalah sebagai berikut:

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

    Jika Anda diminta untuk memberikan otorisasi, klik Otorisasi.

Memeriksa cluster dan repositori Anda

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

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

Untuk menampilkan daftar 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 /config-sync-quickstart/multirepo/ pada repositori di GitHub untuk mempelajari konfigurasi yang menyebabkan namespace ini dibuat.

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

Memeriksa status sinkronisasi

Saat menggunakan Config Sync, Anda dapat menggunakan alat command line nomos. Alat ini menyediakan 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 disinkronkan dari dua repositori. Selain itu, karena semua resource memiliki status Current, status resource cocok dengan status yang Anda inginkan.

Pembersihan

  1. Buka menu GKE di Google Cloud Console.

    Buka GKE

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

  3. Saat diminta untuk mengonfirmasi, klik Hapus lagi.

Langkah selanjutnya