דלגו לתוכן

סולם האימות

runs on: VM
helm template <RELEASE> <CHART_DIR> -n <NS> -f <FILE> -f <FILE> -f <FILE>

איך נראה טוב: YAML תקין, נתיב image אמיתי עם tag אמיתי, אין hosts ריקים. הצורה המלאה: helm/overview.

GitLab, Pipelines: כל ה-jobs ירוקים. ה-registry מכיל image לכל service עם ה-candidate. ב-gitops:

runs on: any shell
git log --oneline -3

איך נראה טוב: commit promote(<ENV>): <CANDIDATE>. פירוט: ci/overview.

runs on: VM
kubectl get applications -n argocd
kubectl get application <APP> -n argocd -o jsonpath='{.status.sync.status}/{.status.health.status}'
kubectl get application <APP> -n argocd -o jsonpath='{.status.conditions}'

איך נראה טוב: Synced/Healthy ו-conditions ריק. Unknown = לא רונדר. Failed ב-operationState.phase: להשוות finishedAt ל-date -u לפני שקוראים את ההודעה. פירוט: argocd/operate.

runs on: VM
kubectl get pods,svc,ingress,pvc,secret -n <NS>

איך נראה טוב: Pods Running ו-Ready, PVC Bound, Secrets קיימים בכל namespace.

runs on: VM
curl -k --resolve <HOST>:<PORT>:<VM_IP> https://<HOST>:<PORT>/info
# TRIDENT: curl -k --resolve dev.trident.test:31651:192.168.242.130 https://dev.trident.test:31651/info

<PORT> הוא ה-NodePort של HTTPS ב-ingress controller, מספר שונה בכל cluster. מגלים אותו: kubectl -n ingress-nginx get svc והמספר אחרי 443: (kubernetes/networking).

שדהאיך קוראים
version= ה-candidate שקידמת. אחר = ה-env עדיין על גרסה ישנה
environment= ה-env ששאלת
counters (accepted)עולים בין שתי קריאות = נתונים זורמים. קבוע = שום דבר לא נכנס
queue_depthלא גדל ללא גבול (צרכן חי)
detections0 צפוי בים שקט, לא תקלה

להוכיח את הנתיב עד ה-DB: להריץ את התרחיש quick-transit בסימולטור (פורט ops 9101). ב-image יש python ואין curl:

runs on: VM
kubectl -n <NS> exec deploy/acoustic-simulator -- python -c "import urllib.request as u; u.urlopen(u.Request('http://127.0.0.1:9101/scenarios/quick-transit', method='POST'))"
curl -k --resolve <HOST>:<PORT>:<VM_IP> https://<HOST>:<PORT>/info

איך נראה טוב: אחרי התרחיש ה-detections כבר לא 0; אם לא, לקרוא logs של signal-processor.

לולאה על כל ה-envs (מניחה host בצורה <ENV>.<DOMAIN>):

runs on: VM
for e in dev staging prod; do
curl -ks --resolve "$e.<DOMAIN>:<PORT>:<VM_IP>" "https://$e.<DOMAIN>:<PORT>/info"; echo
done

איך נראה טוב: version ו-environment נכונים לכל env.

runs on: VM
kubectl scale deploy/<SERVICE> -n <NS> --replicas=0
kubectl get deploy <SERVICE> -n <NS> -w

איך נראה טוב: Argo מחזיר את ה-replicas (selfHeal). בדיקת prune: מסירים קובץ משאב מ-Git, והמשאב נמחק מה-cluster. אל תנסה זאת על משהו שאתה צריך.

runs on: VM
kubectl delete pod -n <NS> -l trident.dev/service=postgres
kubectl get pods -n <NS> -w

איך נראה טוב: ה-Pod חוזר ושאילתה על הטבלה מחזירה את אותן שורות (PVC על course-local-path).

שלבפעולהversions/<ENV>.yaml
1push ל-devdev = dev-... (ה-candidate של dev)
2merge ל-main + pushstaging = main-... (ה-candidate של main)
3בדוק STAGING (שלבים 3–5), ואז לחץ promote:prodprod = אותו candidate של ה-pipeline

מצב יציב תקין: DEV = dev-C, STAGING = main-B, PROD = main-A. ה-PROD מקבל את ה-candidate של ה-pipeline שאושר, לא מה ש-STAGING מחזיק עכשיו.

runs on: any shell
git pull --ff-only
cat apps/trident/versions/dev.yaml apps/trident/versions/staging.yaml apps/trident/versions/prod.yaml

איך מוודאים: שלושה ערכי defaultImageTag שונים כמצופה, ו-/info של כל env מראה את אותו ערך.

מצב סופי: הבדיקה האחרונה

Section titled “מצב סופי: הבדיקה האחרונה”
runs on: VM
kubectl -n argocd get applications
for e in dev staging prod; do kubectl -n <NS_PREFIX>-$e get pods; done

איך נראה טוב: כל ה-Applications Synced + Healthy; כל ה-Pods 1/1 Running בכל namespace. אחר כך /info לכל env (לולאה למעלה).

המשך: cleanup וצ'קליסט.