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:
- 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.
Karena
kubectl
tidak diinstal secara default oleh Google Cloud CLI, instal:gcloud components install kubectl
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.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.
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, misalnyaus-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, misalnyaus-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:
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 statusnyaCREATING
, berarti instance Config Controller Anda masih dibuat dan Anda harus terus menunggu. Jika Anda melihatERROR
, berarti Anda mengalami masalah yang tidak dapat Anda atasi sendiri. Hubungi Dukungan Google Cloud untuk mendapatkan bantuan.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:
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 bawaan atau peran kustom yang memenuhi kebutuhan Anda. Atau, Anda dapat menggunakanroles/owner
untuk lingkungan non-produksi. Untuk mempelajari izin IAM Config Controller lebih lanjut, baca Izin IAM untuk Config Controller.
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:
Untuk menyinkronkan dari repositori eksternal (misalnya, GitHub), siapkan Cloud NAT dengan GKE. Anda perlu 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 Anda.ROOT_FORMAT
: tambahkanunstructured
untuk menggunakan repositori tidak terstruktur atau tambahkanhierarchy
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) untuk 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
. 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 adalahmaster
. Mulai dari Config Sync versi 1.17.0, sebaiknya gunakan kolomrevision
untuk menentukan nama cabang agar lebih sederhana. Jika kolomrevision
dan kolombranch
ditentukan,revision
akan lebih diprioritaskan daripadabranch
.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 autentikasissh
: Menggunakan pasangan kunci SSHcookiefile
: Menggunakancookiefile
token
: Menggunakan 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 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 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. 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 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 bernamacert
. 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
: tambahkanunstructured
untuk menggunakan repositori tidak terstruktur atau tambahkanhierarchy
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 mengambil gambar denganTAG
atauDIGEST
. 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
: 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 autentikasigcenode
: 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 menambahkangcpserviceaccount
sebagaiROOT_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 bernamacert
. 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
: tambahkanunstructured
untuk menggunakan repositori tidak terstruktur atau tambahkanhierarchy
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 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 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
: tetapkan ketrue
jika Anda ingin template Helm juga membuat 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 values.yaml diagram helm. Kolom ini bersifat opsional.ROOT_AUTH_TYPE
: menambahkan salah satu jenis autentikasi berikut:none
: Tidak menggunakan autentikasitoken
: 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 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.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 bernamacert
. 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.Untuk membuat konfigurasi Config Sync, buat objek RootSync dengan menerapkan manifes:
kubectl apply -f root-sync.yaml
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
- Pelajari praktik terbaik untuk skalabilitas Pengontrol Konfigurasi
- Men-deploy workload kustom di cluster Config Controller
- Memecahkan masalah Config Controller.
- Dapatkan dukungan.
- Pelajari lebih lanjut cara menyinkronkan konfigurasi dan kebijakan dengan Config Sync.
- Pelajari lebih lanjut cara menerapkan kebijakan dengan Pengontrol Kebijakan.
- Pelajari lebih lanjut resource Config Connector.