התקנה ידנית של Config Connector
בדף הזה מוסבר איך להתקין ידנית את Config Connector. התקנה ידנית היא אפשרות גמישה שמאפשרת לכם לשלוט בגרסה המותקנת ובלוח הזמנים של השדרוג.
ההוראות בדף הזה מתמקדות בהתקנה של Config Connector באשכולות של Google Kubernetes Engine (GKE). למידע נוסף על אפשרויות ההתקנה השונות, ראו בחירת סוג התקנה.
ברוב תרחישי השימוש, צריך להתקין ידנית את Config Connector במצב מרחב שמות. האפשרות השנייה היא מצב אשכול. מצב מרחב השמות הוא מצב שניתן להתאמה בקלות רבה יותר, והוא מציע בידוד טוב יותר של הרשאות. לכן, זהו המצב המומלץ לאשכולות עם כמה דיירים או לניהול משאבים בכמה פרויקטים. בסביבות עם כמה דיירים, כדאי להימנע ממצב אשכול. במצב אשכול, משתמשים בחשבון שירות אחד משותף לניהול זהויות והרשאות גישה (IAM). כל משתמש שיכול ליצור משאבים של Config Connector בכל מרחב שמות יכול לפעול עם הרשאות ה-IAM המלאות של חשבון השירות הזה.
אם אתם מעדיפים חשבון שירות אחד לכל האשכול, פעלו לפי ההוראות להתקנה במצב אשכול.
לפני שמתחילים
לפני שמתקינים ידנית את Config Connector Operator, צריך לבצע את השלבים הבאים:
- יוצרים או מזהים אשכול 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 במרחב השמות, צריך להציג את כל המשאבים לכל הגדרה של משאב בהתאמה אישית של 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 במצב אשכול.
יצירת זהות
כדי ליצור ולנהל משאבי Google Cloud , Config Connector מבצע אימות באמצעות חשבון שירות של ניהול זהויות והרשאות גישה (IAM) ומשתמש באיחוד זהויות של עומסי עבודה ל-GKE כדי לקשר בין חשבונות שירות של IAM לחשבונות שירות של Kubernetes.
כדי ליצור את הזהות:
יוצרים חשבון שירות ב-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 Operator מתקין את ה-CRD של משאביGoogle Cloud ואת רכיבי Config Connector באשכול.
כדי להגדיר את האופרטור כמצב אשכול, מבצעים את השלבים הבאים:
-
מעתיקים את קובץ ה-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 operator, מריצים את הפקודה הבאה:
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, להתקין אותו מחדש ואז להחיל מחדש את המשאבים.
בגרסה 1.123.1 של Config Connector ואילך, אפשר להחזיר את גרסת האופרטור להתקנות שמשתמשות במצב מרחב שמות.
בכל מרחב שמות שיש בו אופרטור שרוצים להחזיר לגרסה קודמת, מגדירים את השדה spec.version באובייקט ConfigConnectorContext לגרסה הקודמת של Config Connector.
אפשר להחזיר את הבקר של Config Connector לגרסה קודמת, עד 3 גרסאות משניות אחורה. תמיד צריך לחזור לגרסת התיקון האחרונה של גרסה משנית נתונה.
שדרוג מהתקנות שלא בוצעו על ידי מפעיל
בגרסה 1.33.0 ומעלה של Config Connector אפשר להתקין רק באמצעות התוסף של GKE או האופרטור.
כדי לשדרג לאופרטור (ולשמור על כל המשאבים של 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 או האופרטור.
מעבר מהתוסף להתקנה ידנית
כשמתקינים את 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.