Panduan ini menunjukkan cara menggunakan operator Zalando Postgres untuk men-deploy cluster Postgres ke Google Kubernetes Engine (GKE).
PostgreSQL adalah sistem database relasional objek open source yang andal dengan pengembangan aktif selama beberapa dekade yang telah mendapatkan reputasi kuat dalam hal keandalan, keandalan fitur, dan performa.
Panduan ini ditujukan bagi administrator platform, arsitek cloud, dan profesional operasi yang tertarik untuk menjalankan PostgreSQL sebagai aplikasi database di GKE, bukan menggunakan Cloud SQL untuk PostgreSQL.
Tujuan
- Merencanakan dan men-deploy infrastruktur GKE untuk Postgres
- Men-deploy dan mengonfigurasi operator Zalando Postgres
- Konfigurasikan Postgres menggunakan operator untuk memastikan ketersediaan, keamanan, kemampuan observasi, dan performa
Manfaat
Zalando menawarkan manfaat berikut:
- Cara deklaratif dan berbasis Kubernetes untuk mengelola dan mengonfigurasi cluster PostgreSQL
- Ketersediaan tinggi disediakan oleh Patroni
- Dukungan pengelolaan pencadangan menggunakan bucket Cloud Storage
- Update berkelanjutan pada perubahan cluster Postgres, termasuk update versi minor yang cepat
- Pengelolaan Pengguna deklaratif dengan pembuatan dan rotasi sandi menggunakan resource kustom
- Dukungan untuk TLS, rotasi sertifikat, dan kumpulan koneksi
- Kloning cluster dan replikasi data
Arsitektur deployment
Dalam tutorial ini, Anda akan menggunakan operator Zalando Postgres untuk men-deploy dan mengonfigurasi cluster Postgres yang sangat tersedia ke GKE. Cluster memiliki satu replika pemimpin dan dua replika standby (hanya baca) yang dikelola oleh Patroni. Patroni adalah solusi open source yang dikelola oleh Zalando untuk memberikan kemampuan ketersediaan tinggi dan failover otomatis ke Postgres. Jika terjadi kegagalan pemimpin, satu replika standby otomatis dipromosikan menjadi peran pemimpin.
Anda juga akan men-deploy cluster GKE regional yang sangat tersedia untuk Postgres, dengan beberapa node >Kubernetes yang tersebar di beberapa zona ketersediaan. Penyiapan ini membantu memastikan fault tolerance, skalabilitas, dan redundansi geografis. Layanan ini memungkinkan update dan pemeliharaan berkelanjutan sambil memberikan SLA untuk waktu beroperasi dan ketersediaan. Untuk mengetahui informasi selengkapnya, lihat Cluster regional.
Diagram berikut menunjukkan cluster Postgres yang berjalan di beberapa node dan zona di cluster GKE:
Dalam diagram, StatefulSet
Postgres di-deploy di tiga node di tiga zona yang berbeda. Anda dapat mengontrol cara GKE men-deploy ke node dengan
menetapkan aturan
afinitas dan anti-afinitas
pod yang diperlukan pada
spesifikasi resource kustom postgresql
. Jika satu zona gagal, menggunakan konfigurasi yang direkomendasikan, GKE akan menjadwalkan ulang Pod pada node lain yang tersedia di cluster Anda. Untuk mempertahankan data, Anda menggunakan disk SSD (premium-rwo
StorageClass), yang direkomendasikan pada sebagian besar kasus untuk database yang dimuat dengan tinggi karena latensi rendah dan IOPS yang tinggi.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Cloud Shell telah diinstal dengan software yang Anda perlukan untuk tutorial ini, termasuk kubectl
, gcloud CLI, Helm, dan Terraform. Jika tidak menggunakan Cloud Shell, Anda harus menginstal gcloud CLI.
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Compute Engine, IAM, GKE, Backup for GKE:
gcloud services enable compute.googleapis.com
iam.googleapis.com container.googleapis.com gkebackup.googleapis.com - Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Compute Engine, IAM, GKE, Backup for GKE:
gcloud services enable compute.googleapis.com
iam.googleapis.com container.googleapis.com gkebackup.googleapis.com -
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/storage.objectViewer, roles/container.admin, roles/iam.serviceAccountAdmin, roles/compute.admin, roles/gkebackup.admin, roles/monitoring.viewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
- Ganti
Menyiapkan lingkungan Anda
Untuk menyiapkan lingkungan, ikuti langkah-langkah berikut
Menetapkan variabel lingkungan:
export PROJECT_ID=PROJECT_ID export KUBERNETES_CLUSTER_PREFIX=postgres export REGION=us-central1
Ganti
PROJECT_ID
dengan project ID Google Cloud Anda.Buat clone repositori GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
Ubah ke direktori kerja:
cd kubernetes-engine-samples/databases/postgres-zalando
Membuat infrastruktur cluster
Di bagian ini, Anda akan menjalankan skrip Terraform untuk membuat cluster GKE regional pribadi yang sangat tersedia.
Anda dapat menginstal operator menggunakan cluster Standard atau Autopilot.
Standar
Diagram berikut menunjukkan cluster GKE Standard regional pribadi yang di-deploy ke tiga zona yang berbeda:
Deploy infrastruktur ini:
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
terraform -chdir=terraform/gke-standard init
terraform -chdir=terraform/gke-standard apply \
-var project_id=${PROJECT_ID} \
-var region=${REGION} \
-var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}
Saat diminta, ketik yes
. Anda mungkin perlu menunggu beberapa menit agar perintah ini selesai
dan cluster akan menampilkan status siap.
Terraform membuat resource berikut:
- Jaringan VPC dan subnet pribadi untuk node Kubernetes
- {i>Router<i} untuk mengakses internet melalui NAT
- Cluster GKE pribadi di region
us-central1
- Kumpulan node dengan penskalaan otomatis diaktifkan (satu hingga dua node per zona, minimum satu node per zona)
ServiceAccount
dengan izin logging dan pemantauan- Pencadangan GKE untuk pemulihan dari bencana
- Google Cloud Managed Service for Prometheus untuk pemantauan cluster
Outputnya mirip dengan hal berikut ini:
...
Apply complete! Resources: 14 added, 0 changed, 0 destroyed.
...
Autopilot
Diagram berikut menunjukkan cluster GKE Autopilot regional pribadi:
Deploy infrastruktur:
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
terraform -chdir=terraform/gke-autopilot init
terraform -chdir=terraform/gke-autopilot apply \
-var project_id=${PROJECT_ID} \
-var region=${REGION} \
-var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}
Saat diminta, ketik yes
. Anda mungkin perlu menunggu beberapa menit agar perintah ini selesai
dan cluster akan menampilkan status siap.
Terraform membuat resource berikut:
- Jaringan VPC dan subnet pribadi untuk node Kubernetes
- {i>Router<i} untuk mengakses internet melalui NAT
- Cluster GKE pribadi di region
us-central1
ServiceAccount
dengan izin logging dan pemantauan- Google Cloud Managed Service for Prometheus untuk pemantauan cluster
Outputnya mirip dengan hal berikut ini:
...
Apply complete! Resources: 12 added, 0 changed, 0 destroyed.
...
Hubungkan ke cluster
Konfigurasi kubectl
untuk berkomunikasi dengan cluster:
gcloud container clusters get-credentials ${KUBERNETES_CLUSTER_PREFIX}-cluster --region ${REGION}
Men-deploy operator Zalando ke cluster Anda
Men-deploy operator Zalando ke cluster Kubernetes Anda menggunakan chart Helm.
Tambahkan repositori Helm Chart operator Zalando:
helm repo add postgres-operator-charts https://opensource.zalando.com/postgres-operator/charts/postgres-operator
Buat namespace untuk operator Zalando dan cluster Postgres:
kubectl create ns postgres kubectl create ns zalando
Deploy operator Zalando menggunakan alat command line Helm:
helm install postgres-operator postgres-operator-charts/postgres-operator -n zalando \ --set configKubernetes.enable_pod_antiaffinity=true \ --set configKubernetes.pod_antiaffinity_preferred_during_scheduling=true \ --set configKubernetes.pod_antiaffinity_topology_key="topology.kubernetes.io/zone" \ --set configKubernetes.spilo_fsgroup="103"
Anda tidak dapat mengonfigurasi setelan
podAntiAffinity
secara langsung pada resource kustom yang mewakili cluster Postgres. Sebagai gantinya, tetapkan setelanpodAntiAffinity
secara global untuk semua cluster Postgres di setelan operator.Periksa status deployment operator Zalando menggunakan Helm:
helm ls -n zalando
Outputnya mirip dengan hal berikut ini:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION postgres-operator zalando 1 2023-10-13 16:04:13.945614 +0200 CEST deployed postgres-operator-1.10.1 1.10.1
Men-deploy Postgre
Konfigurasi dasar untuk instance cluster Postgres mencakup komponen berikut:
- Tiga replika Postgres: satu replika pemimpin dan dua replika standby.
- Alokasi resource CPU sebesar satu permintaan CPU dan dua batas CPU, dengan permintaan dan batas memori 4 GB.
- Toleransi,
nodeAffinities
, dantopologySpreadConstraints
yang dikonfigurasi untuk setiap beban kerja, memastikan distribusi yang tepat di seluruh node Kubernetes, dengan memanfaatkan kumpulan node masing-masing dan zona ketersediaan yang berbeda.
Konfigurasi ini mewakili penyiapan minimal yang diperlukan untuk membuat cluster Postgres siap produksi.
Manifes berikut menjelaskan cluster Postgres:
Manifes ini memiliki kolom berikut:
spec.teamId
: awalan untuk objek cluster yang Anda pilihspec.numberOfInstances
: jumlah total instance untuk sebuah clusterspec.users
: daftar pengguna dengan hak istimewaspec.databases
: daftar database dalam formatdbname: ownername
spec.postgresql
: parameter postgresspec.volume
: Parameter Persistent Diskspec.tolerations
: template Pod toleransi yang memungkinkan Pod cluster dijadwalkan padapool-postgres
nodespec.nodeAffinity
: template PodnodeAffinity
yang memberi tahu GKE bahwa Pod cluster lebih suka dijadwalkan untuk dijadwalkan pada nodepool-postgres
.spec.resources
: permintaan dan batas untuk Pod clusterspec.sidecars
: daftar container file bantuan, yang berisipostgres-exporter
Untuk mengetahui informasi selengkapnya, baca Referensi manifes cluster dalam dokumentasi Postgres.
Membuat cluster Postgres dasar
Buat cluster Postgres baru menggunakan konfigurasi dasar:
kubectl apply -n postgres -f manifests/01-basic-cluster/my-cluster.yaml
Perintah ini membuat Resource Kustom PostgreSQL dari operator Zalando dengan:
- Permintaan dan batas CPU dan memori
- Taint dan afinitas untuk mendistribusikan replika Pod yang disediakan di seluruh node GKE.
- Suatu{i> database<i}
- Dua pengguna dengan izin pemilik database
- Pengguna tanpa izin
Tunggu GKE memulai workload yang diperlukan:
kubectl wait pods -l cluster-name=my-cluster --for condition=Ready --timeout=300s -n postgres
Pemrosesan perintah ini mungkin membutuhkan waktu beberapa menit.
Pastikan GKE membuat workload Postgres:
kubectl get pod,svc,statefulset,deploy,pdb,secret -n postgres
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE pod/my-cluster-0 1/1 Running 0 6m41s pod/my-cluster-1 1/1 Running 0 5m56s pod/my-cluster-2 1/1 Running 0 5m16s pod/postgres-operator-db9667d4d-rgcs8 1/1 Running 0 12m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/my-cluster ClusterIP 10.52.12.109 <none> 5432/TCP 6m43s service/my-cluster-config ClusterIP None <none> <none> 5m55s service/my-cluster-repl ClusterIP 10.52.6.152 <none> 5432/TCP 6m43s service/postgres-operator ClusterIP 10.52.8.176 <none> 8080/TCP 12m NAME READY AGE statefulset.apps/my-cluster 3/3 6m43s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/postgres-operator 1/1 1 1 12m NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE poddisruptionbudget.policy/postgres-my-cluster-pdb 1 N/A 0 6m44s NAME TYPE DATA AGE secret/my-user.my-cluster.credentials.postgresql.acid.zalan.do Opaque 2 6m45s secret/postgres.my-cluster.credentials.postgresql.acid.zalan.do Opaque 2 6m44s secret/sh.helm.release.v1.postgres-operator.v1 helm.sh/release.v1 1 12m secret/standby.my-cluster.credentials.postgresql.acid.zalan.do Opaque 2 6m44s secret/zalando.my-cluster.credentials.postgresql.acid.zalan.do Opaque 2 6m44s
Operator membuat resource berikut:
- Postgres StatefulSet, yang mengontrol tiga replika Pod untuk Postgres
PodDisruptionBudgets
, yang memastikan minimal satu replika yang tersedia- Layanan
my-cluster
, yang hanya menargetkan replika pemimpin - Layanan
my-cluster-repl
, yang mengekspos port Postgres untuk koneksi masuk dan untuk replikasi di antara replika Postgres - Layanan headless
my-cluster-config
, untuk mendapatkan daftar replika Postgres Pod yang berjalan - Secret dengan kredensial pengguna untuk mengakses database dan replikasi di antara node Postgres
Melakukan autentikasi ke Postgres
Anda dapat membuat pengguna Postgres dan menetapkan izin database kepada mereka. Misalnya, manifes berikut menjelaskan resource kustom yang menetapkan pengguna dan peran:
apiVersion: "acid.zalan.do/v1"
kind: postgresql
metadata:
name: my-cluster
spec:
...
users:
mydatabaseowner:
- superuser
- createdb
myuser: []
databases:
mydatabase: mydatabaseowner
Dalam manifes ini:
- Pengguna
mydatabaseowner
memiliki peranSUPERUSER
danCREATEDB
, yang mengizinkan hak administrator penuh (yaitu mengelola konfigurasi Postgres, membuat database, tabel, dan pengguna baru). Anda tidak boleh membagikan pengguna ini dengan klien. Misalnya, Cloud SQL tidak mengizinkan pelanggan untuk mengakses pengguna dengan peranSUPERUSER
. - Pengguna
myuser
tidak memiliki peran yang ditetapkan. Langkah ini mengikuti praktik terbaik penggunaanSUPERUSER
untuk membuat pengguna dengan hak istimewa terendah. Hak terperinci diberikan kepadamyuser
olehmydatabaseowner
. Untuk menjaga keamanan, Anda hanya boleh membagikan kredensialmyuser
ke aplikasi klien.
Simpan sandi
Anda harus menggunakan scram-sha-256
metode yang direkomendasikan untuk menyimpan sandi. Misalnya, manifes berikut menjelaskan resource
kustom yang menentukan enkripsi scram-sha-256
menggunakan
kolom postgresql.parameters.password_encryption
:
apiVersion: "acid.zalan.do/v1"
kind: postgresql
metadata:
name: my-cluster
spec:
...
postgresql:
parameters:
password_encryption: scram-sha-256
Merotasi kredensial pengguna
Anda dapat merotasi kredensial pengguna yang disimpan di Kubernetes Secrets dengan Zalando. Misalnya, manifes
berikut menjelaskan resource kustom yang menentukan rotasi kredensial pengguna menggunakan
kolom usersWithSecretRotation
:
apiVersion: "acid.zalan.do/v1"
kind: postgresql
metadata:
name: my-cluster
spec:
...
usersWithSecretRotation:
- myuser
- myanotheruser
- ...
Contoh autentikasi: terhubung ke Postgres
Bagian ini menunjukkan cara men-deploy contoh klien Postgres dan terhubung ke database menggunakan sandi dari Secret Kubernetes.
Jalankan Pod klien untuk berinteraksi dengan cluster Postgres Anda:
kubectl apply -n postgres -f manifests/02-auth/client-pod.yaml
Kredensial pengguna
myuser
danmydatabaseowner
diambil dari Secret terkait dan dipasang sebagai variabel lingkungan ke Pod.Hubungkan ke Pod setelah siap:
kubectl wait pod postgres-client --for=condition=Ready --timeout=300s -n postgres kubectl exec -it postgres-client -n postgres -- /bin/bash
Hubungkan ke Postgres dan coba buat tabel baru menggunakan kredensial
myuser
:PGPASSWORD=$CLIENTPASSWORD psql \ -h my-cluster \ -U $CLIENTUSERNAME \ -d mydatabase \ -c "CREATE TABLE test (id serial PRIMARY KEY, randomdata VARCHAR ( 50 ) NOT NULL);"
Perintah akan gagal dengan error seperti berikut:
ERROR: permission denied for schema public LINE 1: CREATE TABLE test (id serial PRIMARY KEY, randomdata VARCHAR...
Perintah gagal karena pengguna tanpa hak istimewa yang ditetapkan secara default hanya dapat login ke Postgres dan daftar database.
Buat tabel dengan kredensial
mydatabaseowner
dan berikan semua hak istimewa pada tabel kepadamyuser
:PGPASSWORD=$OWNERPASSWORD psql \ -h my-cluster \ -U $OWNERUSERNAME \ -d mydatabase \ -c "CREATE TABLE test (id serial PRIMARY KEY, randomdata VARCHAR ( 50 ) NOT NULL);GRANT ALL ON test TO myuser;GRANT ALL ON SEQUENCE test_id_seq TO myuser;"
Outputnya mirip dengan hal berikut ini:
CREATE TABLE GRANT GRANT
Masukkan data acak ke dalam tabel menggunakan kredensial
myuser
:for i in {1..10}; do DATA=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13) PGPASSWORD=$CLIENTPASSWORD psql \ -h my-cluster \ -U $CLIENTUSERNAME \ -d mydatabase \ -c "INSERT INTO test(randomdata) VALUES ('$DATA');" done
Outputnya mirip dengan hal berikut ini:
INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1
Dapatkan nilai yang Anda sisipkan:
PGPASSWORD=$CLIENTPASSWORD psql \ -h my-cluster \ -U $CLIENTUSERNAME \ -d mydatabase \ -c "SELECT * FROM test;"
Outputnya mirip dengan hal berikut ini:
id | randomdata ----+--------------- 1 | jup9HYsAjwtW4 2 | 9rLAyBlcpLgNT 3 | wcXSqxb5Yz75g 4 | KoDRSrx3muD6T 5 | b9atC7RPai7En 6 | 20d7kC8E6Vt1V 7 | GmgNxaWbkevGq 8 | BkTwFWH6hWC7r 9 | nkLXHclkaqkqy 10 | HEebZ9Lp71Nm3 (10 rows)
Keluar dari shell Pod:
exit
Memahami cara Prometheus mengumpulkan metrik untuk gugus Postgres
Diagram berikut menunjukkan cara kerja pengumpulan metrik Prometheus:
Dalam diagram, cluster pribadi GKE berisi:
- Pod Postgres yang mengumpulkan metrik di jalur
/
dan port9187
- Kolektor berbasis Prometheus yang memproses metrik dari Pod Postgres
- Resource
PodMonitoring
yang mengirimkan metrik ke Cloud Monitoring
Google Cloud Managed Service for Prometheus mendukung pengumpulan metrik dalam format Prometheus. Cloud Monitoring menggunakan dasbor terintegrasi untuk metrik Postgres.
Zalando mengekspos metrik cluster dalam format Prometheus menggunakan komponen postgres_exporter sebagai container bantuan.
Buat resource
PodMonitoring
untuk menyalin metrik menurutlabelSelector
:kubectl apply -n postgres -f manifests/03-prometheus-metrics/pod-monitoring.yaml
Di konsol Google Cloud, buka halaman Dasbor Cluster GKE.
Dasbor menampilkan rasio penyerapan metrik yang bukan nol.
Di Konsol Google Cloud, buka halaman Dashboards.
Buka dasbor PostgreSQL Prometheus Overview. Dasbor menunjukkan jumlah baris yang diambil. Mungkin perlu waktu beberapa menit hingga dasbor menyediakannya secara otomatis.
Menghubungkan ke Pod klien:
kubectl exec -it postgres-client -n postgres -- /bin/bash
Menyisipkan data acak:
for i in {1..100}; do DATA=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13) PGPASSWORD=$CLIENTPASSWORD psql \ -h my-cluster \ -U $CLIENTUSERNAME \ -d mydatabase \ -c "INSERT INTO test(randomdata) VALUES ('$DATA');" done
Muat ulang halaman. Grafik Rows dan Blocks diperbarui untuk menampilkan status database yang sebenarnya.
Keluar dari shell Pod:
exit
Pembersihan
Menghapus project
Menghapus project Google Cloud:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
Menetapkan variabel lingkungan.
export PROJECT_ID=${PROJECT_ID} export KUBERNETES_CLUSTER_PREFIX=postgres export REGION=us-central1
Jalankan perintah
terraform destroy
:export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token) terraform -chdir=terraform/FOLDER destroy \ -var project_id=${PROJECT_ID} \ -var region=${REGION} \ -var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}
Ganti
FOLDER
dengangke-autopilot
ataugke-standard
.Saat diminta, ketik
yes
.Temukan semua disk yang tidak terpasang:
export disk_list=$(gcloud compute disks list --filter="-users:* AND labels.name=${KUBERNETES_CLUSTER_PREFIX}-cluster" --format "value[separator=|](name,zone)")
Hapus disk:
for i in $disk_list; do disk_name=$(echo $i| cut -d'|' -f1) disk_zone=$(echo $i| cut -d'|' -f2|sed 's|.*/||') echo "Deleting $disk_name" gcloud compute disks delete $disk_name --zone $disk_zone --quiet done
Hapus repositori GitHub:
rm -r ~/kubernetes-engine-samples/
Langkah selanjutnya
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.