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:
- 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.
Karena
kubectl
tidak diinstal secara default oleh Google Cloud CLI, instal:gcloud components install kubectl
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.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.
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.
Jika Anda mengalami error selama pembuatan, lihat Memecahkan Masalah Pengontrol Konfigurasi untuk mendapatkan panduan cara menyelesaikan masalah umum.
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 adalahCREATING
, berarti instance Pengontrol Konfigurasi Anda masih dibuat dan Anda harus terus menunggu. Jika melihatERROR
, berarti Anda mengalami masalah yang tidak dapat diselesaikan sendiri. Hubungi Dukungan Google Cloud untuk mendapatkan bantuan.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:
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)"
Buat binding kebijakan:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:${SA_EMAIL}" \ --role "ROLE" \ --project PROJECT_ID
Ganti kode berikut:
PROJECT_ID
: project ID AndaROLE
: Kumpulan peran standar atau peran khusus yang memenuhi kebutuhan Anda. Atau, Anda dapat menggunakanroles/owner
untuk lingkungan non-produksi. Untuk mempelajari izin IAM Pengontrol Konfigurasi lebih lanjut, baca izin IAM untuk Pengontrol Konfigurasi.
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:
Untuk menyinkronkan dari repositori eksternal (misalnya, GitHub), siapkan Cloud NAT dengan GKE. Anda harus melakukannya karena node cluster pribadi tidak memiliki akses internet keluar.
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
: menambahkanunstructured
untuk menggunakan repositori tidak terstruktur atau menambahkanhierarchy
untuk menggunakan repositori hierarkis. Nilai ini peka huruf besar/kecil. Kolom ini bersifat opsional dan nilai defaultnya adalahhierarchy
. Sebaiknya tambahkanunstructured
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 adalahHEAD
. Mulai dari Config Sync versi 1.17.0, Anda juga dapat menentukan nama cabang di kolomrevision
. 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 adalahmaster
. Mulai dari Config Sync versi 1.17.0, sebaiknya gunakan kolomrevision
untuk menentukan nama cabang agar lebih mudah. Jika kolomrevision
dan kolombranch
ditentukan,revision
lebih diprioritaskan daripadabranch
.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 autentikasissh
: Menggunakan pasangan kunci SSHcookiefile
: Gunakancookiefile
token
: Gunakan tokengcpserviceaccount
: 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 menambahkangcpserviceaccount
sebagaiROOT_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 ketrue
. Nilai defaultnya adalahfalse
.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 bernamacert
. 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
: menambahkanunstructured
untuk menggunakan repositori tidak terstruktur atau menambahkanhierarchy
untuk menggunakan repositori hierarkis. Nilai ini peka huruf besar/kecil. Kolom ini bersifat opsional dan nilai defaultnya adalahhierarchy
. Sebaiknya tambahkanunstructured
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, misalnyaLOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
. Secara default, gambar diambil dari taglatest
, tetapi Anda dapat menarik gambar denganTAG
atauDIGEST
sebagai gantinya. TentukanTAG
atauDIGEST
diPACKAGE_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
- Untuk menarik menurut
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 autentikasigcenode
: 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 menambahkangcpserviceaccount
sebagaiROOT_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
: menambahkanunstructured
untuk menggunakan repositori tidak terstruktur atau menambahkanhierarchy
untuk menggunakan repositori hierarkis. Nilai ini peka huruf besar/kecil. Kolom ini bersifat opsional dan nilai defaultnya adalahhierarchy
. Sebaiknya tambahkanunstructured
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 berisinamespace: {{ .Release.Namespace }}
dalam template-nya. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, namespace defaultconfig-management-system
akan digunakan.HELM_INCLUDE_CRDS
: disetel ketrue
jika Anda ingin template Helm juga menghasilkan CustomResourceDefinition. Kolom ini bersifat opsional. Jika tidak ada nilai yang ditentukan, defaultnya adalahfalse
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 autentikasitoken
: 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 menambahkangcpserviceaccount
sebagaiROOT_AUTH_TYPE
, tambahkan alamat email akun layanan Google Anda. Contoh,acm@PROJECT_ID.iam.gserviceaccount.com
.ROOT_SECRET_NAME
: tambahkan nama Secret Anda jikatoken
adalahROOT_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.Untuk membuat konfigurasi Config Sync, buat objek RootSync dengan menerapkan manifes:
kubectl apply -f root-sync.yaml
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
- Pelajari praktik terbaik untuk skalabilitas Pengontrol Konfigurasi
- Memecahkan Masalah Pengontrol Konfigurasi.
- Dapatkan dukungan.
- Pelajari lebih lanjut cara menyinkronkan konfigurasi dan kebijakan dengan Config Sync.
- Pelajari lebih lanjut cara menerapkan kebijakan dengan Pengontrol Kebijakan.
- Pelajari resource Config Connector lebih lanjut.