Argo CD — מה הוא עושה ואיך מגיעים אליו
מה Argo עושה בתכנון הזה
Section titled “מה Argo עושה בתכנון הזה”- Pull-based: Argo רץ בתוך ה-cluster, בודק את Git מדי פעם (polling; מרווח הזמן משתנה בין סביבות, אל תניח מספר) ומשווה למצב החי.
- קורא שני repos בלבד:
gitops(values + Application manifests) ו-templates(ה-charts). ה-source(קוד האפליקציה) ו-ciהם לא שלו. - מחיל רק מה שמרונדר: הוא מריץ
helm templateעל ה-charts עם ה-values, ומחיל את ה-manifests שיצאו. - תמיד אוטומטי: ה-gate הידני של prod נמצא ב-CI (
when: manualעל job ה-promote), לא ב-Argo. ראה operate.
| Repo | Argo קורא? | מה יש בו |
|---|---|---|
gitops | כן | argocd/ (root + Applications), apps/<SERVICE>/ values, observability/ |
templates | כן | charts/ (ב-targetRevision של <TAG>) |
source | לא | קוד + Dockerfile; CI בונה ממנו images |
ci | לא | include של pipeline ו-scripts |
app-of-apps: מה root מרנדר ומה כל child מרנדר
Section titled “app-of-apps: מה root מרנדר ומה כל child מרנדר”root Application (trident-root) source (ONE): gitops, path argocd/apps workload = Application manifests (dev, staging, prod, observability)
child Application (trident-dev) sources (N chart sources + ONE values source) 1 templates @ <TAG> path <CHART_DIR> helm.valueFiles: $values/... 2 templates @ <TAG> path <CHART_DIR> helm.valueFiles: $values/... 3 templates @ <TAG> path <CHART_DIR> helm.valueFiles: $values/... 4 gitops @ main ref: values (no path) workload = Deployments, Services, ConfigMaps... in destination.namespace$valuesהוא שם ה-refשל ה-source הרביעי. הוא קיים רק בתוך Argo, לא ב-bash (ראה helm/overview).- ה-path של root לא יכול להכיל את הקובץ של root עצמו (נעילה עצמית בעת מחיקה).
ה-bootstrap edge: root הוא האובייקט היחיד שמחילים ידנית
Section titled “ה-bootstrap edge: root הוא האובייקט היחיד שמחילים ידנית”Argo הוא controller שמסתכל על אובייקטי Application ב-cluster. אם אין אובייקט, אין על מה להגיב. Push ל-Git לא יוצר אותו.
kubectl apply -f <FILE># TRIDENT: kubectl apply -f argocd/root.yaml (wrapped by bash bootstrap/bootstrap.sh)kubectl -n argocd get applicationsאיך מוודאים: רשימה עם root ואחריו ה-children (ב-TRIDENT: 5 Applications). repoURL: "" שנשאר ב-root.yaml חוסם את ה-bootstrap script.
מה קורה אחרי commit של promote
Section titled “מה קורה אחרי commit של promote”promote.shכותבversions/<ENV>.yamlב-gitopsmain(CI, לא Argo).- Argo מבצע polling ל-Git ורואה revision חדש: האפליקציה הופכת
OutOfSync. syncPolicy.automatedמפעיל sync.- Argo מריץ מחדש
helm templateעם ה-values החדשים. - ה-Deployment מקבל
imageחדש, מתחיל rollout. - ה-kubelet מושך את ה-image עם ה-pull Secret של ה-namespace.
אם Argo לא רואה שינוי: הוא לא קורא את ה-clone המקומי שלך. מה שלא נדחף (git push) לא קיים בשבילו.
גישה ל-UI ולסיסמת admin
Section titled “גישה ל-UI ולסיסמת admin”אין argocd CLI על ה-VM. עובדים עם kubectl + ה-UI.
kubectl -n argocd get svc argocd-serverחפש את ה-NodePort של פורט 443 (עמודת PORT(S), למשל 443:<PORT>/TCP), ופתח https://<VM_IP>:<PORT> (ה-certificate self-signed, אשר בדפדפן).
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d; echoמשתמש: admin. איך מוודאים: הסיסמה מודפסת (ואין שורה ריקה אחריה); ה-UI מציג כרטיס לכל Application.
ראה גם: credentials (מי צריך איזה credential), verify/overview.