Mendiagnosis masalah dengan pagar pembatas

Ringkasan pagar pembatas

Guardrail 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 berisiko terhadap stabilitas instance Hybrid. Baik konfigurasi yang salah atau resource yang tidak mencukupi, Perlindungan Hybrid akan mencegah modifikasi apa pun pada instance Hybrid hingga risiko masalah dihilangkan. Dengan begitu, pelanggan tidak perlu menghabiskan waktu untuk menangani masalah yang biasanya memerlukan waktu berjam-jam atau berhari-hari.

Menggunakan Pembatasan dengan Apigee Hybrid

Untuk menggunakan Pagar Hybrid, jalankan perintah penginstalan Hybrid Helm atau upgrade Helm Hybrid yang sama yang didokumentasikan dalam petunjuk penginstalan Hybrid. Tidak ada perintah tambahan yang diperlukan untuk menjalankan Guardrail.

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

  • Helm membuat pod Guardrail sementara dengan konfigurasi yang Anda terapkan. Jika pod Guadrails berputar hingga kondisi responsif, pod akan menguji instance hybrid Anda terhadap konfigurasi yang diterapkan. Jika pengujian berhasil, pod Guardrails akan dihentikan dan konfigurasi Anda akan diterapkan ke instance hybrid Apigee Anda.
  • Jika pengujian gagal, pod Guardails akan dibiarkan dalam kondisi tidak responsif untuk memungkinkan diagnosis pod. Perintah helm akan menampilkan pesan error yang melaporkan bahwa pod Guardrails gagal.

Contoh berikut menunjukkan penggunaan Guardrail 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 langsung terjadi error, 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 pada 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 berikut:

{"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 pengujian konektivitas Bidang 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 sehat, 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 Bidang Kontrol Apigee gagal, pod Guardrails akan tetap berada 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 Guardrail 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 Guardrail dalam file penggantian

Mulai versi hybrid Apigee versi 1.12, Guardrail dikonfigurasi secara default di setiap diagram. Anda dapat mengganti URL gambar, tag, dan kebijakan penarikan gambar di file overrides.

Misalnya, URL gambar Guardrails, tag, dan pull kebijakan di bawah akan ditambahkan ke file penggantian:

# 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 Guardrail

Anda juga dapat menambahkan tolerasi ke Guardrail di file overrides Anda. Jika tidak ada toleransi yang ditentukan di bagian konfigurasi overrides Guardrail, Guardrail akan menggunakan toleransi yang ditentukan secara global.

Misalnya, untuk menyertakan toleransi secara khusus di bagian Guardrails dalam file overrides, Anda dapat 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"