התקנה ידנית של Config Connector
בדף הזה מוסבר איך להתקין את Config Connector באופן ידני. התקנה ידנית היא אפשרות גמישה שמאפשרת לכם לשלוט בגרסה המותקנת ובמועד השדרוג.
ההוראות בדף הזה מתמקדות בהתקנת Config Connector באשכולות Google Kubernetes Engine (GKE). מידע נוסף על אפשרויות ההתקנה השונות זמין במאמר בחירת סוג התקנה.
ברוב תרחישי השימוש, מומלץ להתקין את Config Connector באופן ידני במצב עם מרחבי שמות. החלופה היא מצב אשכול. מצב עם מרחב שמות הוא יותר ניתן להרחבה ומציע בידוד טוב יותר של הרשאות, ולכן הוא אידיאלי לתרחישי שימוש עם מספר דיירים או כשמנהלים משאבים מכמה פרויקטים.
אם אתם מעדיפים חשבון שירות יחיד שפועל בכל האשכול, אתם צריכים לפעול לפי ההוראות להתקנה במצב אשכול.
לפני שמתחילים
לפני שמתקינים ידנית את האופרטור Config Connector, צריך לבצע את השלבים הבאים:
- יוצרים או מזהים אשכול GKE שבו Config Connector עדיין לא מותקן ושמופעלים בו Workload Identity וKubernetes Engine Monitoring.
- מגדירים את
kubectlכדי להתחבר לאשכול.
התקנת האופרטור של Config Connector
Config Connector משתמש באופרטור של Kubernetes כדי לשמור על עדכניות ההתקנה. התקנת האופרטור נדרשת בין אם מתקינים את Config Connector במצב מרחב שמות או במצב אשכול.
כדי להתקין את האופרטור Config Connector, מבצעים את השלבים הבאים:
מורידים את קובץ ה- .tar העדכני של אופרטור Config Connector:
gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gzמחלצים את קובץ ה-TAR:
tar zxvf release-bundle.tar.gzמתקינים את האופרטור של Config Connector באשכול:
טייס אוטומטי
kubectl apply -f operator-system/autopilot-configconnector-operator.yamlרגילה
kubectl apply -f operator-system/configconnector-operator.yamlכדי להגדיר את האופרטור Config Connector להפעלה במצב של מרחב שמות, מבצעים את השלבים הבאים:
יוצרים מניפסט בשם
configconnector.yamlעם התוכן הבא:apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: namespaced stateIntoSpec: Absentמחילים את המניפסט על האשכול:
kubectl apply -f configconnector.yaml
התקנה של Config Connector במצב עם מרחבי שמות
בקטעים הבאים, הפרויקט שבו מתקינים את Config Connector הוא פרויקט המארח. הפרויקטים האחרים שבהם Config Connector יכול לנהל משאבים הם פרויקטים מנוהלים. פרויקט המארח והפרויקט המנוהל יכולים להיות אותו פרויקט, אם רוצים ש-Config Connector ייצור משאבים רק באותו פרויקט שבו נמצא האשכול.
יצירת מרחב שמות
כדי ליצור מרחב שמות חדש, מריצים את הפקודה הבאה:
kubectl create namespace NAMESPACE
מחליפים את NAMESPACE בשם של מרחב השמות.
יצירת זהות
כדי ליצור חשבון שירות של ניהול זהויות והרשאות גישה (IAM) וליצור קישור בין חשבון השירות של IAM לבין חשבון השירות של Config Connector Kubernetes, מבצעים את השלבים הבאים:
יוצרים חשבון שירות ב-IAM. אם יש לכם חשבון שירות קיים, אתם יכולים להשתמש בו במקום ליצור חשבון שירות חדש. כדי ליצור את חשבון השירות, מריצים את הפקודה הבאה באמצעות
gcloud:gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
- NAMESPACE_GSA בשם של חשבון השירות של Google (GSA) שמשויך למרחב השמות שלכם.
- HOST_PROJECT_ID במזהה פרויקט המארח.
למידע נוסף על יצירת חשבונות שירות, אפשר לעיין במאמר יצירה וניהול של חשבונות שירות.
נותנים לחשבון השירות ב-IAM הרשאות מורחבות בפרויקט המנוהל:
gcloud projects add-iam-policy-binding MANAGED_PROJECT_ID \ --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/owner"מחליפים את MANAGED_PROJECT_ID במזהה הפרויקט המנוהל.
יוצרים קשר בין מדיניות IAM לבין חשבון השירות של IAM וחשבון השירות של Config Connector Kubernetes:
gcloud iam service-accounts add-iam-policy-binding \ NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:HOST_PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager-NAMESPACE]" \ --role="roles/iam.workloadIdentityUser"נותנים לחשבון השירות ב-IAM הרשאות לפרסום מדדים של Prometheus ב-Google Cloud Observability בפרויקט המארח:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
יצירת ConfigConnectorContext
כדי ליצור Google Cloud משאבים, מגדירים את Config Connector כך שיעקוב אחרי מרחב השמות על ידי הוספת אובייקט ConfigConnectorContext במרחב השמות הזה.
כדי ליצור ConfigConnectorContext, מבצעים את השלבים הבאים:
יוצרים מניפסט בשם
configconnectorcontext.yamlעם התוכן הבא:apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnectorContext metadata: # you need one ConfigConnectorContext per namespace name: configconnectorcontext.core.cnrm.cloud.google.com namespace: NAMESPACE spec: googleServiceAccount: "NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" stateIntoSpec: Absentמחילים את המניפסט על האשכול:
kubectl apply -f configconnectorcontext.yamlמריצים את הפקודה הבאה כדי לוודא שאופרטור Config Connector יצר חשבון שירות של Kubernetes למרחב השמות:
kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE -n cnrm-systemמוודאים ש-Pod של בקר Config Connector פועל במרחב השמות:
kubectl wait -n cnrm-system \ --for=condition=Ready pod \ -l cnrm.cloud.google.com/component=cnrm-controller-manager \ -l cnrm.cloud.google.com/scoped-namespace=NAMESPACEאם בקר Config Connector פועל, הפלט ייראה כך:
cnrm-controller-manager-abcdefghijk-0 condition met.
הפסקת ניהול משאבים במרחב שמות
אם רוצים ש-Config Connector יפסיק לנהל משאבים במרחב שמות, צריך להסיר את כל המשאבים של Config Connector ואת האובייקט ConfigConnectorContext במרחב השמות הזה.
כדי למצוא את כל המשאבים של Config Connector במרחב השמות, מריצים את הפקודה list לכל הגדרת משאב מותאם אישית של Config Connector.
kubectl get gcp -n NAMESPACEהפלט של הפקודה הזו מציג רשימה של כל הגדרות המשאבים בהתאמה אישית (CRD) שמייצגות משאב שמנוהל על ידי Config Connector במרחב השמות הזה, כולל השם והסוג של Kubernetes של המשאב הזה.
כדי להסיר את כל המשאבים של Config Connector, מריצים את הפקודה הבאה לכל משאב בפלט של השלב הקודם:
kubectl delete -n NAMESPACE KIND NAMEמחליפים את מה שכתוב בשדות הבאים:
-
KIND: סוג המשאב ב-Kubernetes. -
NAME: שם המשאב.
-
מוחקים את האובייקט
ConfigConnectorContextבמרחב השמות.kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com
הסרת Config Connector
כדי להסיר את Config Connector, מבצעים את השלבים הבאים:
כדי להסיר את רכיבי ה-CRD והבקר של Config Connector, מריצים את הפקודה הבאה:
kubectl delete ConfigConnectorContext --all -A –wait=false kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \ --wait=trueכדי להסיר את האופרטור Config Connector, מריצים את הפקודה הבאה:
kubectl delete -f operator-system/configconnector-operator.yaml --wait=true
התקנה במצב אשכול
אולי תעדיפו להתקין את Config Connector ולנהל אותו במצב אשכול אם אתם רוצים לנהל משאבים בפרויקט יחיד ולא צריכים את ההפרדה בין ההרשאות שמצב מרחב השמות מספק.
יצירת זהות
Config Connector יוצר ומנהל משאבים על ידי אימות באמצעות חשבון שירות של ניהול זהויות והרשאות גישה (IAM) ושימוש ב-איחוד זהויות של עומסי עבודה ל-GKE כדי לקשר חשבונות שירות של IAM לחשבונות שירות של Kubernetes. Google Cloud
כדי ליצור את הזהות, מבצעים את השלבים הבאים:
יוצרים חשבון שירות ב-IAM. אם אתם רוצים להשתמש בחשבון שירות קיים, אתם יכולים להשתמש בו ולדלג על השלב הזה:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAMEמחליפים את SERVICE_ACCOUNT_NAME בשם שרוצים לתת לחשבון השירות.
למידע נוסף על יצירת חשבונות שירות, אפשר לעיין במאמר יצירה וניהול של חשבונות שירות.
נותנים לחשבון השירות ב-IAM הרשאות מורחבות בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/editor"מחליפים את PROJECT_ID במזהה הפרויקט.
יוצרים קשר בין מדיניות IAM לבין חשבון השירות של IAM וחשבון השירות המוגדר מראש של Kubernetes שבו פועל Config Connector:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager]" \ --role="roles/iam.workloadIdentityUser"
הגדרת Config Connector
כדי להשלים את ההתקנה, יוצרים קובץ תצורה עבור ConfigConnector
CustomResource ואז מפעילים אותו באמצעות הפקודה kubectl apply. האופרטור Config Connector מתקין CRD של משאבים ורכיבי Config Connector באשכול.Google Cloud
כדי להגדיר את האופרטור במצב אשכול, מבצעים את השלבים הבאים:
-
מעתיקים את קובץ ה-YAML הבא לקובץ בשם
configconnector.yaml: מחליפים את מה שכתוב בשדות הבאים:# configconnector.yaml apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only one # ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster googleServiceAccount: "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" # Setting `stateIntoSpec` to `Absent` is recommended. It means setting `cnrm.cloud.google.com/state-into-spec` # annotation to `absent` for all Config Connector resources created in the cluster in the future. # It prevents Config Connector from populating unspecified fields into the spec. stateIntoSpec: Absent
-
SERVICE_ACCOUNT_NAMEבשם של חשבון השירות. PROJECT_IDבמזהה הפרויקט.
-
-
מחילים את התצורה על האשכול באמצעות הפקודה
kubectl apply:kubectl apply -f configconnector.yaml
ציון המיקום שבו רוצים ליצור את המשאבים
Config Connector יכול לארגן משאבים לפי פרויקט, תיקייה או ארגון, בדיוק כמו ב- Google Cloud.
לפני שיוצרים משאבים באמצעות Config Connector, צריך להגדיר איפה ליצור את המשאבים. כדי לקבוע איפה ליצור את המשאב, Config Connector משתמש בהערה בתצורת המשאב או במרחב שמות קיים. מידע נוסף זמין במאמר ארגון משאבים.
אם אין לכם מרחב שמות למטרה הזו, אתם יכולים ליצור אחד באמצעותkubectl.
kubectl create namespace NAMESPACE
מחליפים את NAMESPACE בשם מרחב השמות. לדוגמה
config-connector.
בוחרים כרטיסייה כדי להגדיר איפה רוצים ש-Config Connector ייצור משאבים.
פרויקט
כדי ליצור משאבים בפרויקט מסוים, מריצים את הפקודה הבאה:
kubectl annotate namespace \ NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACEמחליפים בשם מרחב השמות. PROJECT_IDבמזהה הפרויקט ב- Google Cloud .
תיקייה
כדי ליצור משאבים בתיקייה מסוימת, מריצים את הפקודה הבאה:
kubectl annotate namespace \ NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACEמחליפים בשם מרחב השמות. FOLDER_IDבמזהה התיקייה. Google Cloud
ארגון
כדי ליצור משאבים בארגון מסוים, מריצים את הפקודה הבאה:
kubectl annotate namespace \ NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACEמחליפים בשם מרחב השמות. ORGANIZATION_IDבמזהה הארגון. Google Cloud
כשמוסיפים הערה למרחב השמות, Config Connector יוצר משאבים בפרויקט, בתיקייה או בארגון התואמים. מידע נוסף על השימוש של Config Connector במרחבי שמות של Kubernetes זמין במאמר בנושא מרחבי שמות של Kubernetes ופרויקטים של Google Cloud .
אימות ההתקנה
Config Connector מריץ את כל הרכיבים שלו במרחב שמות בשם cnrm-system.
כדי לוודא שה-Pods מוכנים, מריצים את הפקודה הבאה:
kubectl wait -n cnrm-system \
--for=condition=Ready pod --all
אם Config Connector מותקן בצורה נכונה, הפלט אמור להיראות כך:
pod/cnrm-controller-manager-0 condition met
הסרת Config Connector
כדי להסיר את Config Connector, מבצעים את השלבים הבאים:
כדי להסיר את רכיבי ה-CRD והבקר של Config Connector, מריצים את הפקודה הבאה:
kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \ --wait=trueכדי להסיר את האופרטור Config Connector, מריצים את הפקודה הבאה:
kubectl delete -f operator-system/configconnector-operator.yaml --wait=true
שדרוג Config Connector
כדי להוריד ולהתקין את הגרסה העדכנית של האופרטור Config Connector, מריצים את הפקודה הבאה:
gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml
הורדת גרסה של Config Connector
אין תמיכה בשדרוג לאחור מלא של Config Connector. כדי לשנמך את האופרטור של Config Connector ואת ה-CRD, צריך להסיר את Config Connector, להתקין אותו מחדש ואז להחיל מחדש את המשאבים.
ב-Config Connector בגרסה 1.123.1 ואילך, אפשר לבצע Rollback של גרסת האופרטור בהתקנות שמשתמשות במצב עם מרחב שמות.
בכל מרחב שמות שיש בו אופרטור שרוצים להחזיר לגרסה קודמת, מגדירים את השדה spec.version באובייקט ConfigConnectorContext לגרסה הקודמת של Config Connector.
אפשר להחזיר את בקר Config Connector לגרסה קודמת עד 3 גרסאות משניות. תמיד צריך לחזור לגרסת התיקון האחרונה של גרסה משנית מסוימת.
שדרוג מהתקנות שלא בוצעו על ידי ספק
גרסה 1.33.0 ואילך של Config Connector תומכת בהתקנה רק באמצעות GKE add-on או האופרטור.
כדי לשדרג לאופרטור (ולשמור את כל המשאבים של Config Connector), צריך להסיר את כל רכיבי המערכת של Config Connector מלבד ה-CRD, ואז להתקין את האופרטור.
מריצים את הפקודות הבאות כדי להסיר רכיבים של מערכת Config Connector שאינם CRD:
kubectl delete sts,deploy,po,svc,roles,clusterroles,clusterrolebindings --all-namespaces -l cnrm.cloud.google.com/system=true --wait=true kubectl delete validatingwebhookconfiguration abandon-on-uninstall.cnrm.cloud.google.com --ignore-not-found --wait=true kubectl delete validatingwebhookconfiguration validating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true kubectl delete mutatingwebhookconfiguration mutating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
מעבר מהתוסף להתקנה ידנית
כשמתקינים את Config Connector כתוסף, הגרסה שלו קשורה ישירות לגרסת GKE שמותקנת.
התקנה ידנית מאפשרת עדכונים מהירים יותר, אבל צריך לבצע שדרוגים ידניים.
כדי להחליף שיטות התקנה ולשמור את המשאבים בצורה בטוחה, פועלים לפי השלבים הבאים:
השבתת התוסף בלי למחוק אובייקטים מסוג
ConfigConnectorאוConfigConnectorContext:gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLEDמחליפים את
CLUSTER_NAMEבשם של האשכול שבו התקנתם את Config Connector.מתקינים את האופרטור הידני של הגרסה שנבחרה.
כדי למנוע שגיאות אפשריות באימות של CRD (לדוגמה,
KNV2009: Invalid value: "v1beta1": must appear in spec.versions), הגרסה שנבחרה של האופרטור הידני צריכה להיות זהה לגרסה שבה השתמשתם עבור התוסף או מאוחרת ממנה. הורדת הגרסה של האופרטור הידני עלולה לגרום לשגיאות (לדוגמה, KNV2009) כי יכול להיות שהתוסף GKE כבר שדרג CRD מסוימים לגרסה מאוחרת יותר של Config Connector.
המאמרים הבאים
- איך מתחילים להשתמש ב-Config Connector.
- מידע על שיטות מומלצות לשימוש ב-Config Connector