Ringkasan pembatasan
Guardrail hybrid Apigee adalah mekanisme yang akan memberi tahu pelanggan tentang potensi masalah sebelum masalah tersebut dapat memengaruhi instance Hybrid. Dengan kata lain, Hybrid Guardrails akan menghentikan perintah jika perintah tersebut membahayakan stabilitas instance Hybrid. Baik konfigurasi yang salah maupun resource yang tidak memadai, Hybrid Guardrails akan mencegah modifikasi apa pun pada instance Hybrid hingga risiko masalah dihilangkan. Hal ini menghemat waktu pelanggan untuk menyelesaikan masalah yang biasanya memerlukan waktu berjam-jam atau berhari-hari.
Menggunakan Pagar dengan Apigee hybrid
Untuk menggunakan Hybrid Guardrails, jalankan perintah penginstalan Hybrid Helm atau upgrade Hybrid Helm yang sama yang didokumentasikan dalam petunjuk penginstalan Hybrid. Tidak diperlukan perintah tambahan untuk menjalankan Guardrails.
Saat Anda mengeluarkan perintah Helm untuk Apigee hybrid, dua hal akan terjadi sebelum perintah helm menerapkan konfigurasi ke instance hybrid Anda:
- Helm membuat pod Guardrails sementara dengan konfigurasi yang diterapkan. Jika pod Guardrails diaktifkan hingga status responsnya baik, pod akan menguji instance campuran Anda terhadap konfigurasi yang diterapkan. Jika pengujian lulus, pod Guardrails akan dihentikan dan konfigurasi Anda akan diterapkan ke instance Apigee Hybrid.
- Jika pengujian gagal, pod Guardails akan dibiarkan dalam status tidak responsif untuk memungkinkan diagnosis pod. Perintah helm akan menampilkan pesan error yang melaporkan bahwa pod Guardrails telah gagal.
Contoh berikut menunjukkan penggunaan Guardrails untuk menguji konektivitas jaringan dari instance Hybrid ke Apigee Control Plane sebagai bagian dari penginstalan komponen apigee-datastore
. Anda dapat menggunakan urutan yang sama untuk semua komponen campuran Apigee:
Instal komponen apigee-datastore menggunakan perintah berikut:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
Jika ada error langsung, perintah Helm juga akan menampilkan pesan error yang menampilkan pemeriksaan Guardrails gagal seperti pada contoh berikut:
helm upgrade datastore apigee-datastore/ \
--install \
--namespace apigee \
-f my-overrides.yaml
. . .
Error: UPGRADE FAILED: pre-upgrade hooks failed: 1 error occurred:
* pod apigee-hybrid-helm-guardrail-datastore failed
Untuk melihat pemeriksaan yang gagal dan alasannya, periksa log pod Guardrails seperti contoh berikut:
kubectl logs -n apigee apigee-hybrid-helm-guardrail-datastore
{"level":"INFO","timestamp":"2024-02-01T20:28:55.934Z","msg":"logging enabled","log-level":"INFO"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"","checkpoint":"upgrade","component":"apigee-datastore"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"initiating pre-install checks"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"check validation starting...","check":"controlplane_connectivity"}
{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}
Dalam contoh ini, pesan kegagalan pengujian yang sebenarnya adalah bagian ini:
{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}
Pod Guardrails disediakan secara otomatis saat Anda mengeluarkan perintah helm. Jika pengujian konektivitas Apigee Control Plane lulus, pod Guardrails akan dihentikan pada akhir eksekusi.
Periksa status pod dengan cepat setelah mengeluarkan perintah helm install
. Contoh output berikut menunjukkan pod Guardrail dalam status baik, yang berarti pengujian konektivitas Control Plane lulus:
kubectl get pods -n apigee -w
NAME READY STATUS RESTARTS AGE
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 1s
apigee-hybrid-helm-guardrail-datastore 0/1 ContainerCreating 0 1s
apigee-hybrid-helm-guardrail-datastore 0/1 Completed 0 2s
apigee-hybrid-helm-guardrail-datastore 0/1 Completed 0 3s
apigee-hybrid-helm-guardrail-datastore 0/1 Terminating 0 3s
apigee-hybrid-helm-guardrail-datastore 0/1 Terminating 0 3s
Jika pengujian konektivitas Panel Kontrol Apigee gagal, pod Guardrails akan tetap dalam status Error, mirip dengan contoh output berikut:
kubectl get pods -n apigee -w
NAME READY STATUS RESTARTS AGE
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 ContainerCreating 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 Error 0 4s
apigee-hybrid-helm-guardrail-datastore 0/1 Error 0 5s
apigee-hybrid-helm-guardrail-datastore 0/1 Error 0 6s
Menonaktifkan Guardrails untuk sementara
Jika Anda perlu menonaktifkan pemeriksaan Guardrails, tambahkan flag --no-hooks
ke perintah Helm. Contoh berikut menunjukkan flag --no-hooks
dalam perintah Helm:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ -f overrides.yaml \ --no-hooks
Mengonfigurasi Pembatasan di file penggantian
Mulai Apigee hybrid versi 1.12, Guardrail dikonfigurasi secara default di setiap diagram. Anda dapat mengganti URL gambar, tag, dan kebijakan pull gambar di file overrides
.
Misalnya, kebijakan URL, tag, dan pull gambar Guardrails di bawah akan ditambahkan ke file penggantian Anda:
# Apigee Ingressgateway ingressGateway: image: pullPolicy: Always ## NOTE: The Guardrails config is below. The ingressgateway config above is for position reference only and is NOT required for Guardrails config. # Apigee Guardrails guardrails: image: url: "gcr.io/ng-hybrid/guardrails/apigee-watcher" tag: "12345_6789abcde" pullPolicy: Always
Menggunakan toleransi Kubernetes dengan Guardrails
Anda juga dapat menambahkan toleransi ke Guardrails di file overrides
. Jika tidak ada toleransi yang ditentukan
dalam konfigurasi overrides
Guardrails, Guardrails akan menggunakan toleransi yang ditentukan secara global.
Misalnya, untuk menyertakan toleransi secara khusus di bagian Guardrails dalam file overrides
, Anda harus menambahkan sesuatu yang mirip dengan bait berikut:
# Apigee Guardrails guardrails: image: url: "gcr.io/ng-hybrid/guardrails/apigee-watcher" tag: "12345_6789abcde" pullPolicy: Always tolerations: - key: "say" operator: "Equal" value: "taunt" effect: "NoSchedule"
Memecahkan Masalah Pembatasan
Pemeriksaan variabel lingkungan tidak ada atau kosong
Jika Anda melihat error Client.Timeout exceeded
di log pod guardrails operator apigee, berikut beberapa langkah pemecahan masalah untuk menentukan apakah masalahnya ada di sisi guardrails atau sisi infra.
- Buat file yaml baru dengan konten berikut. Nama file yaml dapat berupa apa pun yang Anda inginkan.
- Terapkan file yaml baru dengan perintah berikut:
- Jalankan ke dalam pod dengan perintah berikut:
- Jalankan perintah berikut di dalam pod
apigee-simple-client
dan periksa output-nya:
apiVersion: v1 kind: Pod metadata: labels: name: apigee-simple-client spec: containers: - name: apigee-simple-client image: "gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra-client:1.10.1" imagePullPolicy: Always command: - sleep - "3650d" restartPolicy: Never hostNetwork: false
kubectl apply -n apigee-system -f name of the yaml file
kubectl exec -it -n apigee-system apigee-simple-client -- /bin/bash
curl -v -I --proxy http://cspnaproxy1.wlb2.nam.nsroot.net:8882 https://apigee.googleapis.com
cspnaproxy1.wlb2.nam.nsroot.net
adalah alamat proxy. Anda dapat menggunakan alamat proxy apa pun yang dapat Anda akses. Jika tidak memiliki akses ke proxy, Anda dapat menggunakan perintah berikut untuk menguji konektivitas jaringan:
curl -v -I https://apigee.googleapis.com
Jika perintah curl berhasil terhubung ke proxy http dan mencapai apigee.googleapis.com
, perintah curl akan menampilkan kode respons HTTP. Jika perintah curl tidak dapat menjangkau
proxy atau tidak dapat terhubung ke apigee.googleapis.com
melalui proxy, perintah curl akan menampilkan
error.