Menyiapkan Config Controller

Halaman ini menunjukkan cara menyiapkan Pengontrol Konfigurasi.

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

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

Batasan

  • Karena instance Config Controller dikelola sepenuhnya, Anda tidak dapat mendaftarkannya dengan armada.

Sebelum memulai

Sebelum menyiapkan Config Controller, selesaikan langkah-langkah berikut:

  1. Instal dan lakukan inisialisasi pada Google Cloud CLI, yang menyediakan Google Cloud CLI yang digunakan dalam petunjuk ini. Jika Anda menggunakan Cloud Shell, Google Cloud CLI sudah diinstal.
  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 Config Controller:

    gcloud config set project PROJECT_ID
    

    Ganti PROJECT_ID dengan project Google Cloud yang akan menghosting Config Controller.

  4. Aktifkan API yang Anda perlukan:

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

Membuat instance Config Controller

Anda dapat membuat instance Config Controller yang didukung oleh cluster Standard atau cluster Autopilot. Kedua jenis cluster tersebut bersifat pribadi.

Pilih cluster standar jika Anda menginginkan 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, Node GKE yang Terlindungi, Workload Identity Federation untuk GKE, dan Secure Boot.

Pembuatan cluster baru dapat memerlukan waktu hingga 15 menit. 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 tentang cara menyelesaikan masalah umum.

Membuat cluster Autopilot

Untuk membuat instance Config Controller di cluster Autopilot, 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 ke instance Config Controller.
  • LOCATION: lokasi tempat Anda ingin membuat instance Config Controller, misalnya us-central. Untuk daftar lokasi yang didukung, lihat Lokasi.

Membuat cluster Standard

Untuk membuat instance Config Controller di cluster Standard, jalankan perintah berikut:

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

Ganti kode berikut:

  • CONFIG_CONTROLLER_NAME: nama yang ingin Anda berikan ke instance Config Controller.
  • LOCATION: lokasi tempat Anda ingin membuat instance Config Controller, misalnya us-central. Untuk daftar lokasi yang didukung, lihat Lokasi.

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

Mengonfirmasi instance Config Controller

Untuk mengonfirmasi bahwa instance Config Controller Anda telah disiapkan, selesaikan langkah-langkah berikut:

  1. Untuk memverifikasi bahwa instance Config Controller Anda telah dibuat, lihat daftar instance Config Controller:

    gcloud anthos config controller list --location=LOCATION
    

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

  2. Untuk berkomunikasi dengan endpoint Config Controller, 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 Config Controller, 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 Config Controller, pelajari Mendapatkan resource yang ada.

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

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

Untuk contoh terpandu yang menunjukkan cara menyelesaikan tugas-tugas ini dengan Config Controller, lihat Panduan memulai: Mengelola resource dengan Config Controller.

Mengonfigurasi instance Config Controller

Bagian berikut menjelaskan cara mengonfigurasi komponen instance Config Controller Anda.

Mengonfigurasi Config Connector

Anda tidak perlu mengelola setelan apa pun untuk penginstalan Config Connector. Namun, Anda perlu memberikan izin Config Controller untuk 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

Anda mungkin perlu menambahkan atau memperbarui kebijakan IAM untuk mengizinkan Policy Controller 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 Config Controller Anda disinkronkan dari konfigurasi yang disimpan di sumber tepercaya, Anda perlu mengonfigurasi Config Sync.

Jika Anda ingin menggunakan Config Sync untuk membuat resource Config Connector, pastikan Anda juga telah memberikan izin Config Controller 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 perlu 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 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: 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) untuk 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. Saat menggunakan hash dalam versi 1.17.0 atau yang lebih baru, hash tersebut harus berupa hash lengkap, bukan bentuk singkatan.
    • 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 sederhana. Jika kolom revision dan kolom branch ditentukan, revision akan lebih diprioritaskan daripada branch.
    • ROOT_DIRECTORY: tambahkan jalur di repositori Git ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan. Kolom ini bersifat opsional dan defaultnya adalah direktori utama (/) repositori.
    • ROOT_AUTH_TYPE: menambahkan 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 Cloud Source Repositories.
      • gcenode: Menggunakan akun layanan Google untuk mengakses Cloud Source Repositories. Hanya pilih opsi ini jika Workload Identity Federation for GKE tidak diaktifkan di cluster Anda.

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

      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 ditetapkan, 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 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 dengan TAG atau DIGEST. Tentukan TAG atau DIGEST di PACKAGE_NAME:
      • Untuk menarik menurut TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Untuk menarik menurut DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • ROOT_DIRECTORY: tambahkan jalur di repositori ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan. Kolom ini bersifat opsional dan defaultnya adalah direktori utama (/) repositori.
    • ROOT_AUTH_TYPE: menambahkan 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 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 ditetapkan, 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 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 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. 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: tetapkan 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 menyertai diagram Helm. Format kolom ini dengan cara yang sama seperti file values.yaml diagram helm. Kolom ini bersifat opsional.
    • ROOT_AUTH_TYPE: menambahkan 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. Hanya pilih opsi ini 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 ditetapkan, 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 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.

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

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

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

Mengupgrade Config Controller

Karena Config Controller adalah layanan terkelola, Google akan mengupgradenya secara otomatis. Untuk mengetahui detail tentang fitur baru, dan mempelajari versi Config Sync, Policy Controller, dan Config Connector yang digunakan Config Controller, lihat catatan rilis Config Controller.

Menghapus instance Config Controller

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

Menghapus instance Config Controller tanpa terlebih dahulu menghapus resource yang disediakan akan membuat resource dalam status ditinggalkan. Resource tersebut masih ada di Google Cloud (dan dikenai tagihan penagihan), tetapi tidak dikelola dari konfigurasi deklaratif.

Setelah semua resource dihapus, hapus cluster Config Controller:

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

Pertimbangan produksi

Saat beralih ke produksi, Anda harus meninjau terlebih dahulu pertimbangan ketersediaan tinggi untuk Config Controller.

Langkah selanjutnya