Pelajari cara membuat instance Pengontrol Konfigurasi yang sudah diinstal sebelumnya dengan Config Connector, Pengontrol Kebijakan, dan Config Sync. Selanjutnya, pelajari cara memanfaatkan instance Anda dengan menyelesaikan tugas berikut:
- Gunakan Config Connector untuk membuat dan mengelola resource Google Cloud .
- Buat batasan Policy Controller untuk menerapkan kebijakan dan mendeteksi pelanggaran kebijakan sebelum di-deploy.
- Siapkan GitOps dengan mengonfigurasi Config Sync untuk menyinkronkan dari repositori contoh yang berisi resource Google Cloud .
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the KRM, GKE, GKE Enterprise, Resource Manager, and Service Usage APIs:
gcloud services enable krmapihosting.googleapis.com
container.googleapis.com anthos.googleapis.com cloudresourcemanager.googleapis.com serviceusage.googleapis.com -
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the KRM, GKE, GKE Enterprise, Resource Manager, and Service Usage APIs:
gcloud services enable krmapihosting.googleapis.com
container.googleapis.com anthos.googleapis.com cloudresourcemanager.googleapis.com serviceusage.googleapis.com Di terminal, buat instance Autopilot Config Controller:
gcloud anthos config controller create cc-example \ --location=us-central1 \ --full-management
Operasi ini dapat memerlukan waktu hingga 15 menit untuk selesai.
Outputnya adalah sebagai berikut:
Created instance [cc-example]. Fetching cluster endpoint and auth data. kubeconfig entry generated for krmapihost-cc-example.
Pastikan instance Anda telah dibuat dengan melihat daftar instance Config Controller:
gcloud anthos config controller list --location=us-central1
Outputnya adalah sebagai berikut:
NAME LOCATION STATE cc-example us-central1 RUNNING
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 "roles/owner" \ --project PROJECT_ID
Ganti
PROJECT_ID
dengan project ID Anda.Outputnya mirip dengan hal berikut ini:
Updated IAM policy for project [PROJECT_ID]. auditConfigs: - auditLogConfigs: - logType: ADMIN_READ - logType: DATA_READ - logType: DATA_WRITE service: gkehub.googleapis.com # Remainder of output omitted
Gunakan Config Connector untuk mengaktifkan Pub/Sub API:
Dengan menggunakan editor teks pilihan Anda, buat file bernama
enable-pubsub.yaml
dan salin YAML berikut ke dalamnya:# enable-pubsub.yaml apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: pubsub.googleapis.com namespace: config-control spec: projectRef: external: projects/PROJECT_ID
Ganti
PROJECT_ID
dengan project ID Anda.Untuk mengaktifkan Pub/Sub API, terapkan manifes ke cluster Anda:
kubectl apply -f enable-pubsub.yaml
Mengaktifkan API ini mungkin memerlukan waktu beberapa menit.
Gunakan Config Connector untuk membuat topik Pub/Sub:
Buat file bernama
pubsub-topic.yaml
dan salin YAML berikut ke dalamnya:# pubsub-topic.yaml apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: annotations: cnrm.cloud.google.com/project-id: PROJECT_ID labels: label-one: "value-one" name: example-topic namespace: config-control
Buat topik Pub/Sub:
kubectl apply -f pubsub-topic.yaml
Pastikan Config Controller telah membuat resource Anda di Google Cloud dengan melihat daftar topik Pub/Sub:
gcloud pubsub topics list
Outputnya mirip dengan hal berikut ini:
--- name: projects/PROJECT_ID/topics/start-instance-event --- labels: label-one: value-one managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/example-topic
Buat file bernama
bucket-constraint.yaml
dan salin YAML berikut ke dalamnya:# bucket-constraint.yaml apiVersion: constraints.gatekeeper.sh/v1beta1 kind: GCPStorageLocationConstraintV1 metadata: name: storage-only-in-us-central1 spec: match: kinds: - apiGroups: - storage.cnrm.cloud.google.com kinds: - StorageBucket parameters: locations: - us-central1
Buat batasan:
kubectl apply -f bucket-constraint.yaml
Outputnya adalah sebagai berikut:
gcpstoragelocationconstraintv1.constraints.gatekeeper.sh/storage-only-in-us-central1 created`
Tunjukkan bahwa batasan berfungsi dengan mencoba menggunakan Config Connector untuk membuat resource StorageBucket di
asia-southeast1
:Buat file bernama
asia-storage-bucket.yaml
dan salin YAML berikut ke dalamnya:# asia-storage-bucket.yaml apiVersion: storage.cnrm.cloud.google.com/v1beta1 kind: StorageBucket metadata: name: bucket-in-disallowed-location namespace: config-control spec: location: asia-southeast1
Coba buat bucket Cloud Storage:
kubectl apply -f asia-storage-bucket.yaml
Outputnya adalah sebagai berikut:
Error from server (Forbidden): error when creating "STDIN": admission webhook "validation.gatekeeper.sh" denied the request: [storage-only-in-us-central1] Cloud Storage bucket <bucket-in-disallowed-location> uses a disallowed location <asia-southeast1>, allowed locations are ["us-central1"]
Untuk menyinkronkan dari GitHub, siapkan Cloud NAT. Anda harus melakukannya karena instance Config Controller didukung oleh cluster edisi Google Kubernetes Engine (GKE) Enterprise pribadi dan node cluster pribadi tidak memiliki akses internet keluar:
Buat router Cloud NAT. Anda memerlukan router ini untuk menyiapkan gateway NAT.
gcloud compute routers create cc-nat-router \ --network default \ --region us-central1
Outputnya mirip dengan hal berikut ini:
Creating router [cc-nat-router]...done. NAME REGION NETWORK cc-nat-router us-central1 default
Siapkan gateway NAT di router yang Anda buat pada langkah sebelumnya:
gcloud compute routers nats create cc-nat-config \ --router-region us-central1 \ --router cc-nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Outputnya adalah sebagai berikut:
Creating NAT [cc-nat-config] in router [cc-nat-router]...done.
Untuk mengonfigurasi instance Config Controller agar disinkronkan dari repositori contoh, buat file bernama
cc-rootsync.yaml
dan salin YAML berikut ke dalamnya:# cc-rootsync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: unstructured git: repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples branch: main dir: config-controller-quickstart auth: none
Terapkan konfigurasi:
kubectl apply -f cc-rootsync.yaml
Setelah instance Anda disinkronkan dari repositori, Config Sync akan membuat topik Pub/Sub dan menerapkannya ke instance Config Controller Anda.
Verifikasi bahwa Config Sync menyinkronkan repositori Git ke instance Config Controller Anda:
nomos status --contexts gke_PROJECT_ID_us-central1_krmapihost-cc-example
Outputnya mirip dengan hal berikut ini:
*gke_PROJECT_ID_us-central1_krmapihost-cc-example -------------------- <root>:root-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-controller-quickstart@main SYNCED @ 2023-01-10 18:31:02 +0000 UTC 715b4295d3eac07b057cce2543275c1ee104cad8 Managed resources: NAMESPACE NAME STATUS SOURCEHASH config-control pubsubtopic.pubsub.cnrm.cloud.google.com/pubsub-topic-sample-sync Current 715b429 config-control service.serviceusage.cnrm.cloud.google.com/pubsub.googleapis.com Current 715b429
Jika Anda tidak melihat output ini, tunggu beberapa menit dan coba lagi.
Verifikasi bahwa Config Controller telah membuat resource Anda:
gcloud pubsub topics list
Outputnya mirip dengan hal berikut ini:
name: projects/PROJECT_ID/topics/start-instance-event --- labels: managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/sample-topic --- labels: managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/pubsub-topic-sample-sync --- labels: label-one: value-one managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/example-topic
Dalam output ini, Anda dapat melihat Pub/Sub yang Anda buat di bagian Buat instance Config Controller dan yang Anda buat dengan menyinkronkan instance ke repositori GitHub.
Hapus resource Config Connector
PubSubTopic
:kubectl delete -f pubsub-topic.yaml
Hapus batasan Policy Controller:
kubectl delete -f bucket-constraint.yaml
Hapus router NAT:
gcloud compute routers delete cc-nat-router \ --project=PROJECT_ID \ --region=us-central1
Tekan
y
saat diminta.Hapus resource Pub/Sub yang dibuat oleh Config Sync:
kubectl delete PubSubTopic pubsub-topic-sample-sync -n config-control
Hapus resource RootSync:
kubectl delete rootsync root-sync -n config-management-system
Dengan menggunakan editor teks pilihan Anda, hapus semua file YAML yang Anda buat:
enable-pubsub.yaml
pubsub-topic.yaml
bucket-constraint.yaml
asia-storage-bucket.yaml
cc-rootsync.yaml
Hapus instance Config Controller:
gcloud anthos config controller delete --location=us-central1 cc-example
Tekan
y
saat diminta.- Pelajari cara menyiapkan Config Controller.
- Pelajari lebih lanjut Config Controller.
Membuat instance Config Controller
Memberikan izin yang diperlukan Config Controller
Di bagian ini, Anda akan memberikan izin kepada Config Controller untuk mengelola resource: Google Cloud
Menggunakan instance Config Controller
Bagian berikut memperkenalkan cara menggunakan instance Config Controller.
Membuat resource Google Cloud dengan Config Connector
Dengan instance Config Controller, Anda dapat memanfaatkan Config Connector untuk
mengelola banyak Google Cloud layanan dan resource menggunakan alat dan
API Kubernetes. Di bagian ini, Anda akan menggunakan Config Controller untuk membuat
resource PubSubTopic
.
Untuk membuat topik Pub/Sub menggunakan Config Connector, selesaikan langkah-langkah berikut:
Menerapkan kebijakan dengan Pengontrol Kebijakan
Instance Config Controller memungkinkan Anda menggunakan Pengontrol Kebijakan dan batasan Pengontrol Kebijakan. Sebagai bagian dari penginstalan Pengontrol Kebijakan, Config Controller akan otomatis menginstal constraint template library. Anda dapat menggunakan template di library ini untuk menerapkan berbagai kontrol keamanan dan kepatuhan umum pada instance Config Controller Anda.
Di bagian ini, Anda akan membuat batasan menggunakan template batasan
GCPStorageLocationConstraintV1
. Template ini memungkinkan Anda membatasi lokasi tempat Anda dapat membuat bucket Cloud Storage. Batasan yang Anda buat menggunakan template ini
membatasi lokasi ke us-central1
. Anda mungkin ingin menggunakan batasan ini
untuk memastikan bucket Anda dibuat di region yang menawarkan harga
dan performa terbaik.
Untuk membuat batasan:
Menyiapkan GitOps dengan Config Sync
Config Sync adalah layanan GitOps yang memungkinkan Anda menyinkronkan instance Config Controller ke konfigurasi, kebijakan, danGoogle Cloud resource yang disimpan di repositori Git, image OCI, atau repositori Helm. Karena Config Sync terus merekonsiliasi status Config Controller dengan konfigurasi di sumber Anda, Anda dapat membantu memastikan bahwa instance Anda memiliki konfigurasi yang konsisten.
Di bagian ini, Anda akan menyinkronkan instance Config Controller ke
repositori GitHub publik. Repositori ini berisi
resource PubSubTopic
lain. Dengan menyinkronkan instance Anda dari repositori ini, resource akan otomatis dibuat dan diterapkan ke instance Anda. Anda dapat
memilih untuk membuat resource menggunakan Config Sync (daripada
menerapkan resource secara langsung) jika ingin
menggunakan alur kerja GitOps.
Pembersihan
Agar tidak dikenai biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID