Mendiagnosis masalah dengan pagar pembatas

Ringkasan pagar pembatas

Batasan Hybrid Apigee adalah mekanisme yang akan memberi tahu pelanggan tentang potensi masalah sebelum masalah tersebut memengaruhi instance Hybrid. Dengan kata lain, Hybrid Guardrail akan menghentikan perintah di jalurnya jika perintah tersebut membahayakan stabilitas instance Hybrid. Baik konfigurasinya salah atau resource yang tidak memadai, Perlindungan Hybrid akan mencegah modifikasi apa pun pada instance Hybrid hingga risiko masalahnya dihilangkan. Dengan demikian, pelanggan tidak perlu menghabiskan waktu untuk menyelesaikan masalah yang biasanya memerlukan waktu berjam-jam atau berhari-hari.

Menggunakan Penghalang dengan Apigee Hybrid

Untuk menggunakan Hybrid Helm, 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 Guardrail.

Saat Anda memberikan perintah Helm untuk Apigee Hybrid, ada dua hal yang terjadi sebelum perintah helm menerapkan konfigurasi ke instance hybrid Anda:

  • Helm membuat pod Guardrails sementara dengan konfigurasi yang Anda terapkan. Jika pod Guadrails berfungsi dengan baik, pod akan menguji instance hybrid Anda berdasarkan konfigurasi yang diterapkan. Jika pengujian lulus, pod Guardrails akan dihentikan dan konfigurasi Anda akan diterapkan ke instance hybrid Apigee.
  • 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 gagal.

Contoh berikut menunjukkan penggunaan Pagar Pengaman 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 menampilkan pemeriksaan Guardrails 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 failed

Untuk melihat pemeriksaan yang gagal beserta 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":"http://apigee.googleapis.com","error":"Get \"http://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}

Dalam contoh ini, pesan kegagalan uji yang sebenarnya adalah bagian ini:

{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"http://apigee.googleapis.com","error":"Get \"http://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 Pesawat Kontrol Apigee lulus, pod Guardrails akan dihentikan di akhir eksekusi.

Periksa status pod dengan cepat setelah mengeluarkan perintah helm install. Contoh output berikut menunjukkan pod Guardrail dalam keadaan responsif, yang berarti uji konektivitas Bidang Kontrol 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 Pesawat Kontrol Apigee gagal, pod Guardrails akan tetap dalam status Error serupa 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 Pagar pembatas untuk sementara

Jika Anda perlu menonaktifkan pemeriksaan Guardrail, 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 ../my-overrides.yaml \
  --no-hooks

Mengonfigurasi pagar pembatas di file penggantian

Mulai Apigee Hybrid versi 1.12, pagar pembatas dikonfigurasi secara default di setiap diagram. Anda hanya dapat mengganti URL gambar, tag, dan kebijakan pull gambar di file overrides.

Misalnya, URL image pagar pembatas, tag, dan kebijakan pull 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