Tutorial ini juga menunjukkan cara menggabungkan kpt dengan solusi Google lainnya seperti Config Sync dan blueprint keamanan GKE Enterprise. Baik Anda developer yang bekerja dengan Kubernetes atau engineer platform yang mengelola platform berbasis Kubernetes, tutorial ini memungkinkan Anda mengetahui cara menggunakan kpt dalam alur kerja terkait Kubernetes Anda sendiri. Tutorial ini mengasumsikan bahwa Anda sudah memahami Kubernetes dan Google Cloud.
Konfigurasi deklaratif untuk infrastruktur cloud adalah praktik yang umum di industri IT. Hal ini menghadirkan abstraksi yang canggih dari sistem yang mendasarinya. Abstraksi ini membebaskan Anda untuk tidak mengelola dependensi dan detail konfigurasi tingkat rendah. Oleh karena itu, konfigurasi deklaratif memiliki keunggulan dibandingkan dengan pendekatan imperatif, seperti operasi yang dilakukan dalam antarmuka grafis dan command line.
Model resource Kubernetes telah berpengaruh dalam membuat pendekatan konfigurasi deklaratif menjadi mainstream. Karena Kubernetes API pada dasarnya bersifat deklaratif, Anda hanya perlu memberi tahu Kubernetes apa yang Anda inginkan, bukan cara mencapai apa yang Anda inginkan. Kubernetes API memungkinkan Anda memisahkan konfigurasi (baik yang diinginkan maupun yang sebenarnya) dari operasi pada konfigurasi (menambahkan, menghapus, dan memodifikasi objek). Dengan kata lain, dalam model resource Kubernetes, konfigurasinya adalah data, bukan kode.
Pemisahan konfigurasi dari operasi ini memiliki banyak keuntungan: pengguna dan sistem otomatis dapat memahami serta mengerjakan konfigurasi, dan software yang memodifikasi konfigurasi dapat digunakan kembali dengan mudah. Pemisahan ini juga memungkinkan Anda mengimplementasikan metodologi GitOps dengan mudah (seperti yang didefinisikan dalam tutorial Continuous delivery bergaya GitOps dengan Cloud Build).
Dalam tutorial ini, Anda akan mempelajari pemisahan deklarasi konfigurasi dari operasi konfigurasi menggunakan kpt. Tutorial ini berfokus pada fitur-fitur kpt sebagai berikut:
- Pengelolaan paket: mendownload dan mengupdate paket konfigurasi Kubernetes.
- Fungsi: menjalankan potongan kode arbitrer untuk mengubah atau memvalidasi konfigurasi.
- Pipeline fungsi: sekumpulan fungsi yang disertakan oleh pembuat paket di dalam paket.
- Pengelolaan resource: menerapkan, mengupdate, dan menghapus resource yang sesuai dengan konfigurasi Anda di cluster Kubernetes.
Tujuan
- Membuat cluster Google Kubernetes Engine (GKE).
- Menggunakan kpt untuk mendownload kumpulan konfigurasi Kubernetes yang sudah ada.
- Menggunakan fungsi kpt untuk menyesuaikan konfigurasi.
- Menerapkan konfigurasi Anda ke cluster GKE.
- Menggunakan kpt untuk mengambil beberapa perubahan upstream untuk konfigurasi Anda.
- Menggunakan kpt dalam praktiknya untuk memperkuat cluster GKE Anda.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Google Kubernetes Engine
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Konfigurasikan Cloud Shell untuk menggunakan project Anda:
gcloud config set project PROJECT_ID
-
Di Cloud Shell, aktifkan Google Kubernetes Engine dan Cloud Source Repositories API:
gcloud services enable container.googleapis.com \ sourcerepo.googleapis.com
Setelah menyelesaikan tutorial ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk detail selengkapnya, lihat Pembersihan.
Membuat cluster GKE
Di bagian ini, Anda akan membuat cluster GKE tempat Anda men-deploy konfigurasi nanti dalam tutorial.
Di Cloud Shell, buat cluster GKE:
gcloud container clusters create kpt-tutorial \ --num-nodes=1 --machine-type=n1-standard-4 \ --zone=us-central1-a --enable-network-policy
Pastikan Anda memiliki akses ke cluster. Perintah berikut menampilkan informasi tentang node atau node yang ada di cluster.
kubectl get nodes
Menerapkan paket kpt
Di bagian ini, Anda akan menggunakan kpt untuk mendownload serangkaian konfigurasi, menyesuaikannya,
dan menerapkannya ke cluster yang telah dibuat di bagian sebelumnya.
kpt
harus diinstal di dalam lingkungan Cloud Shell Anda. Jika belum,
instal dengan perintah berikut:
Di Cloud Shell, instal kpt:
sudo apt update && sudo apt-get install google-cloud-sdk-kpt
Download contoh kumpulan konfigurasi. Untuk informasi selengkapnya, lihat
kpt pkg get
.kpt pkg get https://github.com/GoogleContainerTools/kpt.git/package-examples/wordpress@v0.9
Perintah sebelumnya mendownload paket contoh
wordpress
yang tersedia di repositori GitHub kpt, pada versiv0.9
yang diberi tag.Periksa konten paket:
kpt pkg tree
.kpt pkg tree wordpress
Outputnya akan terlihat seperti berikut:
Package "wordpress" ├── [Kptfile] Kptfile wordpress ├── [service.yaml] Service wordpress ├── deployment │ ├── [deployment.yaml] Deployment wordpress │ └── [volume.yaml] PersistentVolumeClaim wp-pv-claim └── Package "mysql" ├── [Kptfile] Kptfile mysql ├── [deployment.yaml] PersistentVolumeClaim mysql-pv-claim ├── [deployment.yaml] Deployment wordpress-mysql └── [deployment.yaml] Service wordpress-mysql
Paket ini berisi dua paket, satu
wordpress
tingkat atas dan sub-paketwordpress/mysql
. Kedua paket ini berisi file metadataKptfile
.Kptfile
hanya digunakan oleh kpt itu sendiri dan memiliki data mengenai sumber upstream, penyesuaian, dan validasi paketUpdate label paket
Penulis paket menambahkan pipeline rendering yang sering digunakan untuk memberikan penyesuaian yang diharapkan.
less wordpress/Kptfile
Kontennya kurang lebih akan seperti ini:
apiVersion: kpt.dev/v1 kind: Kptfile metadata: name: wordpress upstream: type: git git: repo: https://github.com/GoogleContainerTools/kpt directory: /package-examples/wordpress ref: v0.9 updateStrategy: resource-merge upstreamLock: type: git git: repo: https://github.com/GoogleContainerTools/kpt directory: /package-examples/wordpress ref: package-examples/wordpress/v0.9 commit: b9ea0bca019dafa9f9f91fd428385597c708518c info: emails: - kpt-team@google.com description: This is an example wordpress package with mysql subpackage. pipeline: mutators: - image: gcr.io/kpt-fn/set-labels:v0.1 configMap: app: wordpress validators: - image: gcr.io/kpt-fn/kubeval:v0.3
Anda dapat menggunakan editor pilihan Anda untuk mengubah parameter fungsi set-label dari
app: wordpress
menjadiapp: my-wordpress
.Edit deployment MySQL
wordpress/mysql/deployment.yaml
menggunakan editor kode pilihan Anda untuk mengubah versi MySQL. Selain itu, untuk lebih memperkuat keamanan, ubah variabelMYSQL_ROOT_PASSWORD
menjadiMYSQL_PASSWORD
, dan tambahkan variabel berikut:MYSQL_USER
MYSQL_RANDOM_ROOT_PASSWORD
MYSQL_DATABASE
Sebelum:
[...] containers: - name: mysql image: mysql:5.6 ports: - name: mysql protocol: TCP containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password [...]
Sesudah:
[...] containers: - name: mysql image: mysql:8.0 ports: - name: mysql protocol: TCP containerPort: 3306 env: - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password - name: MYSQL_RANDOM_ROOT_PASSWORD value: '1' - name: MYSQL_USER value: wordpress - name: MYSQL_DATABASE value: wordpress [...]
Edit deployment Wordpress
wordpress/deployment/deployment.yaml
menggunakan editor kode pilihan Anda untuk mengubah versi Wordpress dan menambahkan variabelWORDPRESS_DB_USER
.Sebelum:
[...] containers: - name: wordpress image: wordpress:6.1-apache ports: - name: wordpress protocol: TCP containerPort: 80 env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password [...]
Sesudah:
[...] containers: - name: wordpress image: wordpress:4.8-apache ports: - name: wordpress protocol: TCP containerPort: 80 env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password - name: WORDPRESS_DB_USER value: wordpress [...]
Tidak seperti alat yang beroperasi melalui parameter saja, kpt memungkinkan Anda mengedit file menggunakan editor dan selanjutnya akan tetap menggabungkan update upstream. Anda dapat mengedit
deployment.yaml
secara langsung tanpa harus membuat patch atau membuat fungsi di pipeline.Anotasikan konfigurasi dengan
sample-annotation: sample-value
.kpt fn eval wordpress --image gcr.io/kpt-fn/set-annotations:v0.1 \ -- sample-annotation=sample-value
Outputnya kurang lebih akan seperti ini:
[RUNNING] "gcr.io/kpt-fn/set-annotations:v0.1" [PASS] "gcr.io/kpt-fn/set-annotations:v0.1"
Untuk melihat anotasi baru, Anda dapat periksa nilai konfigurasi apa saja, yang mudah dilihat adalah
wordpress/service.yaml
Dalam contoh ini, kita melakukan penyesuaian menggunakan fungsi dengan cara yang tidak terpikirkan oleh penulis paket. kpt dapat mendukung eksekusi fungsi deklaratif dan imperatif untuk memungkinkan berbagai skenario.
Jika paket ini dikembangkan menggunakan infrastruktur sebagai kode, kita harus membuka sumber paket dan mengedit kode di sana.
Jalankan pipeline dan validasi perubahan menggunakan kubeval melalui kpt.
kpt fn render wordpress
Penulis paket telah menyertakan langkah validasi dalam pipeline:
... validators: - image: gcr.io/kpt-fn/kubeval:v0.3
Output yang berhasil dari pipeline rendering ini akan tampak seperti ini:
Package "wordpress/mysql": [RUNNING] "gcr.io/kpt-fn/set-labels:v0.1" [PASS] "gcr.io/kpt-fn/set-labels:v0.1" in 1.3s Package "wordpress": [RUNNING] "gcr.io/kpt-fn/set-labels:v0.1" [PASS] "gcr.io/kpt-fn/set-labels:v0.1" in 1.3s [RUNNING] "gcr.io/kpt-fn/kubeval:v0.3" [PASS] "gcr.io/kpt-fn/kubeval:v0.3" in 3.7s Successfully executed 3 function(s) in 2 package(s).
Langkah ini merupakan contoh manfaat dari model resource Kubernetes: karena konfigurasi Anda direpresentasikan dalam model yang sudah dikenal ini, Anda dapat menggunakan alat Kubernetes yang sudah ada, seperti kubeval.
Periksa perbedaan antara konfigurasi versi lokal dan konfigurasi upstream:
kpt pkg diff wordpress
Lakukan inisialisasi paket untuk deployment:
kpt live init wordpress
Perintah sebelumnya mem-build inventaris konfigurasi yang ada dalam paket. Di antara hal lainnya, kpt menggunakan inventaris untuk pruning konfigurasi saat Anda menghapusnya dari paket. Untuk informasi selengkapnya, lihat
kpt live
.Buat secret yang berisi sandi MySQL:
kubectl create secret generic mysql-pass --from-literal=password=foobar
Terapkan konfigurasi ke cluster GKE Anda:
kpt live apply wordpress
Outputnya akan terlihat seperti berikut:
installing inventory ResourceGroup CRD. inventory update started inventory update finished apply phase started service/wordpress apply successful service/wordpress-mysql apply successful deployment.apps/wordpress apply successful deployment.apps/wordpress-mysql apply successful persistentvolumeclaim/mysql-pv-claim apply successful persistentvolumeclaim/wp-pv-claim apply successful apply phase finished reconcile phase started service/wordpress reconcile successful service/wordpress-mysql reconcile successful deployment.apps/wordpress reconcile pending deployment.apps/wordpress-mysql reconcile pending persistentvolumeclaim/mysql-pv-claim reconcile pending persistentvolumeclaim/wp-pv-claim reconcile pending persistentvolumeclaim/wp-pv-claim reconcile successful persistentvolumeclaim/mysql-pv-claim reconcile successful deployment.apps/wordpress-mysql reconcile successful deployment.apps/wordpress reconcile successful reconcile phase finished inventory update started inventory update finished apply result: 6 attempted, 6 successful, 0 skipped, 0 failed reconcile result: 6 attempted, 6 successful, 0 skipped, 0 failed, 0 timed out
Tunggu beberapa menit, lalu pastikan semuanya berjalan seperti yang diharapkan:
kpt live status wordpress
Outputnya akan terlihat seperti berikut:
inventory-88521939/deployment.apps/default/wordpress is Current: Deployment is available. Replicas: 1 inventory-88521939/persistentvolumeclaim/default/wp-pv-claim is Current: PVC is Bound inventory-88521939/service/default/wordpress-mysql is Current: Service is ready inventory-88521939/persistentvolumeclaim/default/mysql-pv-claim is Current: PVC is Bound inventory-88521939/deployment.apps/default/wordpress-mysql is Current: Deployment is available. Replicas: 1 inventory-88521939/service/default/wordpress is Current: Service is ready
Mengupdate paket lokal Anda
Di bagian ini, Anda akan mengupdate versi lokal paket dengan beberapa perubahan dari paket upstream.
Buat repositori Git untuk konfigurasi Anda serta konfigurasikan email dan nama Anda. Anda memerlukan repositori Git lokal agar dapat mengupdate paket. Ganti
YOUR_EMAIL
dengan alamat email Anda dan gantiYOUR_NAME
dengan nama Anda.cd wordpress/ git init -b main git config user.email "YOUR_EMAIL" git config user.name "YOUR_NAME"
Commit konfigurasi Anda:
git add . git commit -m "First version of Wordpress package" cd ..
Update paket lokal Anda. Pada langkah ini, Anda akan menarik versi
v0.10
dari upstream.kpt pkg update wordpress@v0.10
Perhatikan bahwa update dari upstream diterapkan ke paket lokal Anda:
cd wordpress/ git diff
Dalam hal ini, update telah mengubah volume deployment wordpress dari 3Gi menjadi 4Gi. Anda juga dapat melihat perubahan yang Anda buat sendiri.
Commit perubahan Anda:
git commit -am "Update to package version v0.10"
Terapkan versi baru paket:
kpt live apply .
Menghapus resource dan paket
Karena kpt melacak resource yang dibuatnya, kpt dapat melakukan pruning resource dari cluster saat Anda menghapus resource dari paket. Juga bisa benar-benar menghapus paket dari cluster. Di bagian ini, Anda akan menghapus resource dari paket, lalu menghapus paket tersebut.
Hapus file
service.yaml
dari paket:git rm service.yaml git commit -m "Remove service"
Terapkan perubahan, lalu pastikan bahwa kpt telah melakukan pruning pada layanan wordpress:
kpt live apply . kubectl get svc
Hapus paket lainnya dari cluster, lalu pastikan bahwa Anda tidak memiliki sisa paket di cluster:
kpt live destroy . kubectl get deployment
Menggunakan kpt untuk hardening GKE Anda
Perintah kpt live
bukan satu-satunya cara agar Anda dapat menerapkan paket ke
cluster Kubernetes. Di bagian ini, Anda akan menggunakan kpt dengan
Config Sync
dalam skenario dasar tetapi realistis. Dengan alat Config Sync, Anda dapat mengelola
konfigurasi secara terpusat, seragam, dan deklaratif untuk semua
cluster Kubernetes dari repositori Git. GKE Enterprise (yang Anda gunakan dalam
tutorial ini) mencakup
Config Sync.
Blueprint keamanan GKE Enterprise memberi Anda berbagai setelan keamanan dalam bentuk paket untuk workload berbasis GKE Enterprise. Di bagian ini, Anda akan menggunakan
blueprint membatasi traffic
dan
direktorinya di repositori GitHub).
Anda menggunakan kpt untuk mendownload paket default-deny
. Paket ini menggunakan
kebijakan jaringan
Kubernetes untuk menolak traffic apa pun di cluster GKE secara default (kecuali
untuk resolusi DNS). Untuk menerapkan konfigurasi, Anda kemudian meng-commit
konfigurasi ke repositori Git Config Sync.
Menginstal Config Sync
Di bagian ini, Anda akan membuat repositori Git yang diperlukan Config Sync, lalu menginstal Config Sync pada cluster GKE.
Di Cloud Shell, gunakan Cloud Source Repositories untuk membuat repositori Git untuk Config Sync:
cd ~ gcloud source repos create config-management
Buat pasangan kunci SSH untuk melakukan autentikasi pada repositori Git:
cd ~ ssh-keygen -t rsa -b 4096 -N '' \ -f cloud_source_repositories_key
Buat Secret Kubernetes yang berisi kunci pribadi SSH untuk mengakses repositori Git:
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-file=ssh=cloud_source_repositories_key
Tampilkan kunci publik, lalu salin:
cat cloud_source_repositories_key.pub
Buka Cloud Source Repositories
Halaman Mengelola Kunci SSH.
Pada dialog Daftarkan SSH Key yang muncul, masukkan nilai berikut:
- Di kolom Nama Kunci, masukkan
config-management
. - Tempelkan kunci publik pada kolom Kunci.
- Klik Daftar.
- Di kolom Nama Kunci, masukkan
Buat clone repositori Git ke Cloud Shell:
gcloud source repos clone config-management cd config-management git checkout -b main
Download alat command line Config Sync yang disebut
nomos
.nomos
harus diinstal di dalam lingkungan Cloud Shell Anda. Jika belum, instal dengan perintah berikut:sudo apt update && sudo apt-get install google-cloud-sdk-nomos
Lakukan inisialisasi repositori Config Sync:
nomos init git add . git commit -m "Config Management directory structure" git push -u origin main
Deploy operator Config Sync:
gsutil cp gs://config-management-release/released/latest/config-management-operator.yaml /tmp/config-management-operator.yaml kubectl apply -f /tmp/config-management-operator.yaml
Mengonfigurasi Config Sync
Buat resource khusus ConfigManagement untuk mengonfigurasi Config Sync:
PROJECT=$(gcloud config get-value project) EMAIL=$(gcloud config get-value account) cat <<EOF > /tmp/config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: clusterName: kpt-tutorial git: syncRepo: ssh://${EMAIL}@source.developers.google.com:2022/p/${PROJECT}/r/config-management syncBranch: main secretType: ssh EOF kubectl -n config-management-system \ apply -f /tmp/config-management.yaml
Untuk opsi penginstalan lainnya, lihat dokumentasi penginstalan Config Sync.
Di Cloud Shell, pastikan Config Sync berfungsi dengan benar:
nomos status --contexts=$(kubectl config current-context)
Perintah ini akan menampilkan status sebagai
SYNCED
. Config Sync mungkin memerlukan beberapa saat untuk diinisialisasi. Jika statusnya belum diupdate, tunggu beberapa menit, lalu jalankan kembali perintah.
Terapkan blueprint keamanan GKE Enterprise
Di bagian ini, Anda akan menggunakan kpt untuk mendownload paket default-deny
dari blueprint keamanan GKE Enterprise yang membatasi traffic. Kemudian, Anda menggunakan
Config Sync untuk menerapkan paket hanya ke namespace default
.
Download paket
default-deny
:cd ~ kpt pkg get https://github.com/GoogleCloudPlatform/anthos-security-blueprints.git/restricting-traffic/default-deny ./
Anda dapat mempelajari konten paket: file
default-deny/Kptfile
berisi metadata paket, dan filedefault-deny/default-deny.yaml
berisi Kubernetes NetworkPolicy, yang merupakan satu-satunya konfigurasi dari blueprint ini.Gunakan kpt untuk menyalin konten paket di repositori Config Sync, lalu tambahkan label untuk menyesuaikannya:
kpt fn source default-deny/ | \ kpt fn eval - --image=gcr.io/kpt-fn/set-annotations:v0.1 -- \ anthos-security-blueprint=restricting-traffic | \ kpt fn sink ~/config-management/namespaces/default/
Seperti yang ditunjukkan dalam contoh ini, Anda dapat menggunakan pipe untuk merangkai perintah
kpt fn
secara bersamaan. Membuat rantai perintahkpt fn
memungkinkan Anda membaca konfigurasi, mengubahnya sesuai keinginan, dan menulis hasilnya. Anda dapat merangkai perintahkpt fn
sebanyak yang Anda inginkan.Buat file
namespace.yaml
di repositori Config Sync:cat >> ~/config-management/namespaces/default/namespace.yaml <<EOF apiVersion: v1 kind: Namespace metadata: name: default EOF
Namespace
default
ada di cluster GKE, tetapi Config Sync tidak mengelolanya. Saat Anda membuat direktori dan file pada langkah ini, Anda membuat Config Sync mengelola namespace. Untuk menerapkan paket ke beberapa namespace sekaligus, Anda dapat membuat namespace abstrak.Pastikan bahwa NetworkPolicies Kubernetes ditulis ke repositori Config Sync, dan dianotasi dengan
anthos-security-blueprint: restricting-traffic
:cat config-management/namespaces/default/default-deny.yaml
Outputnya akan terlihat seperti berikut:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: # kpt-merge: /default-deny name: default-deny annotations: internal.kpt.dev/upstream-identifier: 'networking.k8s.io|NetworkPolicy|default|default-deny' anthos-security-blueprint: restricting-traffic spec: policyTypes: - Ingress - Egress podSelector: {} egress: - to: - namespaceSelector: matchLabels: k8s-namespace: kube-system podSelector: matchExpressions: - key: k8s-app operator: In values: ["kube-dns", "node-local-dns"] ports: - protocol: TCP port: 53 - protocol: UDP port: 53
Commit dan kirim perubahan:
cd ~/config-management/ git add namespaces/default/ git commit -m "Default deny" git push
Pastikan kebijakan baru diterapkan:
kubectl get networkpolicies
Jika kebijakan baru muncul, tunggu beberapa detik, lalu jalankan perintah kembali. Config Sync mengupdate konfigurasi setiap 15 detik secara default. Jika Anda perlu melakukan beberapa pemecahan masalah tambahan, jalankan perintah berikut untuk mendapatkan informasi tentang potensi error Config Sync:
nomos status --contexts=$(kubectl config current-context)
Untuk menguji kebijakan baru, dapatkan shell di pod yang berjalan di dalam namespace
default
:kubectl -n default run -i --tty --rm test \ --image=busybox --restart=Never -- sh
Coba ping
8.8.8.8
, dan lihat apakah URL tersebut memang tidak berfungsi seperti yang diharapkan:ping -c 3 -W 1 8.8.8.8
Outputnya akan terlihat seperti berikut:
PING 8.8.8.8 (8.8.8.8): 56 data bytes --- 8.8.8.8 ping statistics --- 3 packets transmitted, 0 packets received, 100% packet loss
Coba buat kueri server Kubernetes API, dan lihat apakah server tersebut memang tidak berfungsi seperti yang diharapkan:
wget --timeout=3 https://${KUBERNETES_SERVICE_HOST}
Outputnya akan terlihat seperti berikut:
Connecting to 10.3.240.1 (10.3.240.1:443) wget: download timed out
Keluar dari pod:
exit
Pembersihan
Agar tidak perlu membayar 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
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource
Jika ingin menyimpan project Google Cloud yang telah Anda gunakan dalam tutorial ini, Anda dapat menghapus repositori Git dan cluster GKE. Pada Cloud Shell, jalankan perintah berikut:
gcloud source repos delete config-management --quiet
gcloud container clusters delete kpt-tutorial \
--async --quiet --zone=us-central1-a
Langkah selanjutnya
- Pelajari Config Sync dan komponennya lebih lanjut.
- Pelajari Pengontrol Kebijakan untuk memvalidasi konfigurasi deployment aplikasi Anda.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.