Ringkasan batas aman
Pembatasan Apigee Hybrid adalah mekanisme yang akan memberi tahu pelanggan tentang potensi masalah sebelum masalah tersebut dapat memengaruhi instance Hybrid. Dengan kata lain, Pembatasan Hybrid akan menghentikan perintah jika perintah tersebut berisiko mengganggu stabilitas instance Hybrid. Baik itu konfigurasi yang salah atau resource yang tidak memadai, Panduan Hybrid 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 Pembatas dengan Apigee Hybrid
Untuk menggunakan Hybrid Guardrails, jalankan perintah penginstalan Hybrid Helm atau upgrade Hybrid Helm yang sama seperti yang didokumentasikan dalam petunjuk penginstalan Hybrid. Tidak ada perintah tambahan yang diperlukan untuk menjalankan Pembatasan.
Saat Anda mengeluarkan perintah Helm untuk Apigee hybrid, dua hal terjadi sebelum perintah Helm menerapkan konfigurasi ke instance hybrid Anda:
- Helm membuat pod sementara Guardrails dengan konfigurasi yang Anda terapkan. Jika pod Guardrails berputar ke status sehat, pod akan menguji instance hybrid Anda terhadap konfigurasi yang diterapkan. Jika pengujian berhasil, pod Guardrails akan dihentikan dan konfigurasi Anda akan diterapkan ke instance Apigee Hybrid.
- Jika pengujian gagal, pod Guardrails akan dibiarkan dalam status tidak sehat untuk memungkinkan diagnosis pod. Perintah helm akan menampilkan pesan error yang melaporkan bahwa pod Guardrails telah gagal.
Contoh berikut menunjukkan penggunaan Pembatasan untuk menguji konektivitas jaringan dari instance Hybrid ke Bidang Kontrol Apigee sebagai bagian dari penginstalan komponen apigee-datastore. Anda dapat menggunakan urutan yang sama untuk semua komponen hybrid Apigee:
Instal komponen apigee-datastore menggunakan perintah berikut:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
Jika terjadi error langsung, perintah Helm juga akan menampilkan pesan error yang menunjukkan bahwa pemeriksaan Pembatasan gagal seperti dalam 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 failedUntuk 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 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 otomatis disediakan saat Anda mengeluarkan perintah helm. Jika uji konektivitas Apigee Control Plane berhasil, pod Guardrails akan dihentikan di akhir eksekusi.
Periksa status pod dengan cepat setelah mengeluarkan perintah helm install. Contoh output berikut menunjukkan pod Guardrail dalam kondisi baik, yang berarti uji konektivitas Control Plane berhasil:
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 3sJika uji konektivitas Apigee Control Plane gagal, pod Guardrails akan tetap dalam status Error yang 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 6sMenonaktifkan Pengaman untuk sementara
Jika Anda perlu menonaktifkan pemeriksaan Pembatasan, 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 Panduan dalam file penggantian
Mulai Apigee hybrid versi 1.12, Pembatasan dikonfigurasi secara default di setiap diagram. Anda dapat mengganti URL gambar, tag, dan kebijakan penarikan gambar di file overrides.
Misalnya, URL, tag, dan kebijakan 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 Pembatasan
Anda juga dapat menambahkan toleransi ke Pembatasan dalam file overrides Anda. Jika tidak ada toleransi yang ditentukan
dalam konfigurasi overrides Pembatasan, Pembatasan akan menggunakan toleransi yang ditentukan secara global.
Misalnya, untuk menyertakan toleransi secara khusus di bagian Pedoman dalam file overrides, Anda akan menambahkan sesuatu yang mirip dengan stanza 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"
Pedoman Pemecahan Masalah
Titik pemeriksaan variabel lingkungan tidak ada atau kosong
Jika Anda melihat error Client.Timeout exceeded di log pod guardrails operator Apigee, berikut adalah
beberapa langkah pemecahan masalah untuk menentukan apakah masalahnya ada di sisi guardrails atau sisi infrastruktur.
- 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 perintah berikut untuk masuk ke pod:
- Jalankan perintah berikut di dalam pod
apigee-simple-clientdan 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://forwarding-proxy.example.com:5678 \
https://apigee.googleapis.com
forwarding-proxy.example.com 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
maka 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.