דלגו לתוכן

מפת ה-credentials

  1. מי שכותב אינו מי שקורא. CI כותב ל-gitops; Argo רק קורא. token דלוף של Argo לא יכול לשנות את המצב הרצוי.
  2. אותה group אינה הרשאה. חברות ב-group לא נותנת גישה ל-repo; כל identity צריך להיות member בפרויקט.
  3. שתי שכבות בלתי-תלויות: role (פר project, ב-Members) ו-scope (פר token, נבחר ביצירה). שניהם חייבים לאפשר.
#ActorצריךCredential / identityscope / roleאיפה חי (לעולם לא ב-Git)מה נשבר אם שגוי
1job publish ב-CIpush של imagesCI_REGISTRY_USER / CI_REGISTRY_PASSWORD (job token)אוטומטי, מת עם ה-jobמשתנה מוגדר-מראש, לא יוצרים כלוםdenied: access forbidden (חסר docker login)
2job promote ב-CIלקרוא trident-ci, לכתוב trident-gitopsTRIDENT_GIT_TOKEN (service account / PAT; access token בתשלום)write_repository (כולל קריאה) ל-gitops; role Developer על gitops, Reporter על trident-ciמשתנה group CI/CD, Mask, בלי Protect אם ה-job רץ על branch לא מוגןpush נכשל 403; מצב Protect על dev: token ריק
3GitLab (include:)לקרוא את YAML של trident-ciהגישה של המשתמש שהפעילmember ב-trident-ci-/trident-ci not found (חסר TRIDENT_GROUP)
4Argoלקרוא trident-gitopsidentity לקריאה בלבד (deploy token / service account)read_repository; Reporterקבצי username/token ב-VM, Secret ב-namespace argocdrepository not found, HTTP Basic: Access denied
5Argoלקרוא trident-templatesidentity לקריאה בלבדread_repository; ReporterSecret נפרד ב-argocdComparisonError, Unknown
6kubelet בכל envלמשוך imagesdeploy token על trident-sourceread_registry בלבדSecret kubernetes.io/dockerconfigjson בכל namespace + imagePullSecretsImagePullBackOff
7ה-runnerלהריץ jobsregistration token glrt-project runner (group runner אם הכפתור קיים; בתרגול ב-Free חסר); tag נכון/etc/gitlab-runner/config.toml ב-VMjob תקוע, no runner for tags
8Postgres + signal-processorסיסמת DBקובץ סיסמה לכל env-Secret generic, מפתח postgres_password, מותקן כקובץ בתת-תיקייה (/run/secrets/<APP_DIR>)Pod ב-CrashLoopBackOff / read-only file system
9Grafanaadminקבצי credentials-Secret admin ב-<NS> של observabilityGrafana לא עולה
10IngressTLSCA + cert לכל host-Secret tls בכל namespacecert שגוי / 404
  • Secret הוא per namespace. Pod משתמש רק ב-Secrets של ה-namespace שלו. "עובד ב-dev ולא ב-staging" = חפש מה שונה (ה-namespace).
  • שני סוגי Secrets: (A) ש-Argo קורא איתם Git (ב-argocd); (B) ש-Pods צריכים (pull, סיסמה, TLS), שחייבים להיות קיימים לפני ש-Argo עושה sync.
  • repo Secret: url חייב להיות כתובת ה-repo האמיתית, זהה byte-ב-byte ל-repoURL ב-Application. שני repos = שני Secrets, גם אם ה-credential משותף.
  • kubelet, לא kubectl: מי שמושך את ה-image הוא ה-kubelet של ה-node, עם deploy token.
  • ה-registry יושב על trident-source. ל-gitops לא נדחפים images.
  • Mask ≠ Protect. Mask מסתיר את הערך בלוגים; Protect מגביל את המשתנה ל-branches מוגנים.
runs on: VM
git ls-remote https://oauth2:$(cat <TOKEN_FILE>)@<GITLAB_HOST>/<GROUP>/<REPO>.git HEAD

איך מוודאים: פלט עם <SHA> ו-HEAD = ה-token קורא. HTTP Basic: Access denied = identity לא member או scope חסר.

המשך: הסימפטומים לפי שכבה · Argo operate.