Menyiapkan Config Controller

Halaman ini menunjukkan cara menyiapkan Pengontrol Konfigurasi.

Pengontrol Konfigurasi menyediakan bidang kontrol terkelola berdasarkan Kubernetes. Selain itu, instance Pengontrol Konfigurasi sudah diinstal sebelumnya dengan Pengontrol Kebijakan, Config Sync, dan Config Connector. Dengan menggunakan komponen ini, Anda dapat memanfaatkan alat dan alur kerja Kubernetes untuk mengelola resource Google Cloud dan mencapai konsistensi menggunakan alur kerja GitOps. Untuk mempelajari lebih lanjut, lihat ringkasan Pengontrol Konfigurasi.

Jika Anda membuat instance Pengontrol Konfigurasi untuk pertama kalinya, lihat Panduan memulai: Mengelola resource dengan Pengontrol Konfigurasi.

Batasan

  • Karena instance Pengontrol Konfigurasi terkelola sepenuhnya, Anda tidak dapat mendaftarkannya dengan fleet.

Sebelum memulai

Sebelum menyiapkan Pengontrol Konfigurasi, selesaikan langkah-langkah berikut:

  1. Instal dan inisialisasi Google Cloud CLI, yang menyediakan Google Cloud CLI yang digunakan dalam petunjuk ini. Jika Anda menggunakan Cloud Shell, Google Cloud CLI sudah terinstal.
  2. Karena kubectl tidak diinstal secara default oleh Google Cloud CLI, instal:

    gcloud components install kubectl
    
  3. Tetapkan project Google Cloud tempat Anda ingin menghosting Pengontrol Konfigurasi:

    gcloud config set project PROJECT_ID
    

    Ganti PROJECT_ID dengan project Google Cloud yang akan menghosting Pengontrol Konfigurasi.

  4. Aktifkan API yang Anda perlukan:

    gcloud services enable krmapihosting.googleapis.com \
        anthos.googleapis.com  \
        cloudresourcemanager.googleapis.com \
        serviceusage.googleapis.com
    

Membuat instance Pengontrol Konfigurasi

Anda dapat membuat instance Pengontrol Konfigurasi yang didukung oleh cluster Standar atau cluster Autopilot. Kedua jenis cluster bersifat pribadi.

Pilih cluster standar jika Anda ingin lebih banyak opsi penyesuaian. Pilih cluster Autopilot jika Anda menginginkan penginstalan yang lebih cepat, penskalaan otomatis Pod horizontal dan vertikal, serta fitur keamanan yang ditingkatkan seperti Container-Optimized OS, Shielded GKE Nodes, Workload Identity, dan Secure Boot.

  1. Buat instance Pengontrol Konfigurasi:

    Standar

    Buat instance Pengontrol Konfigurasi yang didukung oleh cluster GKE Standar pribadi:

    gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
        --location=LOCATION
    

    Ganti kode berikut:

    • CONFIG_CONTROLLER_NAME: nama yang ingin Anda berikan instance Pengontrol Konfigurasi.
    • LOCATION: tambahkan salah satu region berikut:

      • us-central1
      • us-east1
      • us-east4
      • us-east5
      • us-west2
      • northamerica-northeast1
      • northamerica-northeast2
      • europe-north1
      • europe-west1
      • europe-west3
      • europe-west6
      • australia-southeast1
      • australia-southeast2
      • asia-northeast1
      • asia-northeast2
      • asia-southeast1

      Ini adalah region tempat instance Pengontrol Konfigurasi Anda dibuat. Tidak ada wilayah lain yang didukung.

    Anda dapat menetapkan beberapa parameter opsional saat membuat instance Pengontrol Konfigurasi standar. Untuk mengetahui daftar lengkap opsi, lihat dokumentasi gcloud anthos config controller create.

    Autopilot

    Untuk membuat instance Pengontrol Konfigurasi yang didukung oleh cluster GKE Autopilot pribadi, jalankan perintah berikut:

    gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
        --location=LOCATION \
        --full-management
    

    Ganti kode berikut:

    • CONFIG_CONTROLLER_NAME: nama yang ingin Anda berikan kepada pengontrol.
    • LOCATION: tambahkan salah satu region berikut:

      • us-central1
      • us-east1
      • us-east4
      • us-east5
      • us-west2
      • northamerica-northeast1
      • northamerica-northeast2
      • europe-north1
      • europe-west1
      • europe-west3
      • europe-west6
      • australia-southeast1
      • australia-southeast2
      • asia-northeast1
      • asia-northeast2
      • asia-southeast1

      Tidak ada wilayah lain yang didukung.

    Operasi ini bisa memakan waktu hingga 15 menit sampai selesai. Jika ingin mengamati apa yang terjadi selama pembuatan, Anda dapat melihat Logs Explorer di Konsol Google Cloud.

    Buka Logs Explorer

    Jika Anda mengalami error selama pembuatan, lihat Memecahkan Masalah Pengontrol Konfigurasi untuk mendapatkan panduan cara menyelesaikan masalah umum.

  2. Untuk memverifikasi bahwa instance Pengontrol Konfigurasi Anda sudah dibuat, lihat daftar instance Pengontrol Konfigurasi:

    gcloud anthos config controller list --location=LOCATION
    

    Anda akan melihat nilai RUNNING di kolom status. Jika statusnya adalah CREATING, berarti instance Pengontrol Konfigurasi Anda masih dibuat dan Anda harus terus menunggu. Jika melihat ERROR, berarti Anda mengalami masalah yang tidak dapat diselesaikan sendiri. Hubungi Dukungan Google Cloud untuk mendapatkan bantuan.

  3. Untuk berkomunikasi dengan endpoint Pengontrol Konfigurasi, dapatkan kredensial dan informasi endpoint yang sesuai:

    gcloud anthos config controller get-credentials CONFIG_CONTROLLER_NAME \
        --location LOCATION
    

Menggunakan instance Config Controller

Setelah membuat instance Pengontrol Konfigurasi, Anda dapat mulai menggunakan komponen yang diinstal dan menyelesaikan tugas berikut:

  • Gunakan Config Connector untuk membuat resource Google Cloud. Jika Anda sudah memiliki resource Google Cloud yang ingin digunakan dengan Pengontrol Konfigurasi, pelajari cara Memperoleh resource yang ada.

  • Gunakan Pengontrol Kebijakan untuk menerapkan batasan yang menegakkan kepatuhan terhadap peraturan dan standar Kubernetes.

  • Setelah Anda mengonfigurasi Config Sync, di bagian berikut, sinkronkan instance Pengontrol Konfigurasi Anda ke konfigurasi (termasuk batasan Pengontrol Kebijakan dan resource Config Connector) yang disimpan dalam sumber kebenaran.

Untuk contoh terpandu yang menunjukkan cara menyelesaikan tugas ini dengan Pengontrol Konfigurasi, lihat Panduan memulai: Mengelola resource dengan Pengontrol Konfigurasi.

Mengonfigurasi instance Pengontrol Konfigurasi

Bagian berikut menjelaskan cara mengonfigurasi komponen instance Pengontrol Konfigurasi.

Mengonfigurasi Config Connector

Anda tidak perlu mengelola setelan apa pun untuk penginstalan Config Connector. Namun, Anda harus memberikan izin Pengontrol Konfigurasi agar dapat mengelola resource Google Cloud:

  1. Tetapkan variabel lingkungan untuk email akun layanan Anda:

    export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \
        -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)"
    
  2. Buat binding kebijakan:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${SA_EMAIL}" \
        --role "ROLE" \
        --project PROJECT_ID
    

    Ganti kode berikut:

    Jika operasi sebelumnya gagal, periksa apakah pengontrol sudah siap:

    kubectl wait pod --all --all-namespaces --for=condition=Ready
    

Setelah memberikan izin ini, Anda dapat mulai membuat resource Google Cloud.

Mengonfigurasi Pengontrol Kebijakan

Mengonfigurasi Pengontrol Kebijakan bersifat opsional, tetapi Anda dapat membuat perubahan pada penginstalan default jika diperlukan.

Untuk mengonfigurasi Pengontrol Kebijakan, edit kolom spec.policyController dari objek ConfigManagement yang bernama config-management. Pengontrol Konfigurasi secara otomatis membuat objek ConfigManagement ini selama penginstalan. Saat mengedit objek ConfigManagement, jangan tetapkan spec.policyController.enabled ke false. Pengontrol Konfigurasi otomatis mengganti perubahan ini. Untuk pemantauan, Anda juga perlu mengizinkan Pengontrol Kebijakan untuk mengirim metrik.

Izinkan Pengontrol Kebijakan mengirim metrik dengan menjalankan perintah ini:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[gatekeeper-system/gatekeeper-admin]" \
  --role=roles/monitoring.metricWriter

Ganti PROJECT_ID dengan project ID Google Cloud cluster.

Mengonfigurasi Config Sync

Jika ingin instance Pengontrol Konfigurasi disinkronkan dari konfigurasi yang disimpan dalam sumber kebenaran, Anda harus mengonfigurasi Config Sync.

Jika ingin menggunakan Config Sync untuk membuat resource Config Connector, pastikan Anda juga memberikan izin Pengontrol Konfigurasi untuk mengelola resource.

Untuk mengonfigurasi Config Sync, buat dan edit objek RootSync:

  1. Untuk menyinkronkan dari repositori eksternal (misalnya, GitHub), siapkan Cloud NAT dengan GKE. Anda harus melakukannya karena node cluster pribadi tidak memiliki akses internet keluar.

  2. 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.
    • ROOT_FORMAT: menambahkan unstructured untuk menggunakan repositori tidak terstruktur atau menambahkan 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: menambahkan URL repositori Git untuk 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: menambahkan revisi Git (tag atau hash) yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah HEAD. Mulai dari Config Sync versi 1.17.0, Anda juga dapat menentukan nama cabang di kolom revision. Jika menggunakan hash dalam versi 1.17.0 atau yang lebih baru, hash tersebut harus berupa hash penuh, bukan bentuk singkat.
    • ROOT_BRANCH: menambahkan cabang repositori yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah master. Mulai dari Config Sync versi 1.17.0, sebaiknya gunakan kolom revision untuk menentukan nama cabang agar lebih mudah. Jika kolom revision dan kolom branch ditentukan, revision lebih diprioritaskan daripada branch.
    • ROOT_DIRECTORY: menambahkan jalur di repositori Git ke direktori utama yang berisi konfigurasi yang ingin Anda sinkronkan. Kolom ini bersifat opsional dan defaultnya adalah direktori utama (/) repositori.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

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

      Untuk mengetahui informasi lebih lanjut tentang jenis autentikasi ini, lihat Memberi Config Sync akses hanya baca 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 Rahasia 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 Rahasia Anda. Jika kolom ini disetel, penyedia Git Anda harus menggunakan sertifikat yang diterbitkan oleh certificate authority (CA) ini. Secret harus berisi Sertifikat CA di bagian kunci yang bernama cert. Kolom ini bersifat opsional.

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

    Untuk mengetahui penjelasan tentang 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
    

    Ganti kode berikut:

    • ROOT_SYNC_NAME: tambahkan nama objek RootSync.
    • ROOT_FORMAT: menambahkan unstructured untuk menggunakan repositori tidak terstruktur atau menambahkan 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 menarik gambar dengan TAG atau DIGEST sebagai gantinya. 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: menambahkan jalur di repositori ke direktori utama yang berisi konfigurasi yang ingin Anda sinkronkan. Kolom ini bersifat opsional dan defaultnya adalah direktori utama (/) 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. Hanya pilih opsi ini jika Workload Identity 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.

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

    Manifes ini membuat objek RootSync yang menggunakan gambar 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
    

    Ganti kode berikut:

    • ROOT_SYNC_NAME: tambahkan nama objek RootSync.
    • ROOT_FORMAT: menambahkan unstructured untuk menggunakan repositori tidak terstruktur atau menambahkan 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 untuk 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: menambahkan nama diagram Helm 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. Library ini hanya menetapkan namespace untuk resource yang berisi namespace: {{ .Release.Namespace }} dalam template-nya. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, namespace default config-management-system akan digunakan.
    • HELM_INCLUDE_CRDS: disetel ke true jika Anda ingin template Helm juga menghasilkan 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 menyertai diagram Helm. Format kolom ini dengan cara yang sama seperti file helm chart's values.yaml. Kolom ini bersifat opsional.
    • ROOT_AUTH_TYPE: tambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • token: Gunakan nama pengguna dan sandi untuk mengakses repositori Helm pribadi.
      • gcenode: Gunakan akun layanan default Compute Engine untuk mengakses image di Artifact Registry. Hanya pilih opsi ini jika Workload Identity 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.

    Untuk mengetahui penjelasan tentang 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.

  3. Untuk membuat konfigurasi Config Sync, buat objek RootSync dengan menerapkan manifes:

    kubectl apply -f root-sync.yaml
    
  4. Untuk memastikan bahwa perubahan Anda telah diterapkan, lihat objek RootSync:

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

Upgrade Pengontrol Konfigurasi

Karena Pengontrol Konfigurasi adalah layanan terkelola, Google mengupgradenya secara otomatis. Untuk mengetahui detail tentang fitur baru, dan untuk mempelajari versi Sinkronisasi Konfigurasi, Pengontrol Kebijakan, dan Konektor Config mana yang digunakan Pengontrol Konfigurasi, lihat Catatan rilis Pengontrol Konfigurasi.

Menghapus instance Pengontrol Konfigurasi

Jika Anda memutuskan untuk berhenti menggunakan instance Pengontrol Konfigurasi, hapus semua resource Config Connector yang dibuat sebelum Anda menghapus cluster Pengontrol Konfigurasi itu sendiri.

Menghapus instance Pengontrol Konfigurasi tanpa terlebih dahulu menghapus resource yang disediakan akan membuat resource berstatus diabaikan. Resource-nya masih ada di Google Cloud (dan dikenai biaya penagihan), tetapi tidak dikelola dari konfigurasi deklaratif.

Setelah semua resource dihapus, hapus cluster Pengontrol Konfigurasi Anda:

gcloud anthos config controller delete \
    --location=LOCATION CONFIG_CONTROLLER_NAME

Pertimbangan produksi

Saat beralih ke produksi, Anda harus meninjau pertimbangan ketersediaan tinggi untuk Pengontrol Konfigurasi terlebih dahulu.

Langkah selanjutnya