התקנה ידנית של Config Connector

בדף הזה מוסבר איך להתקין את Config Connector באופן ידני. התקנה ידנית היא אפשרות גמישה שמאפשרת לכם לשלוט בגרסה המותקנת ובמועד השדרוג.

ההוראות בדף הזה מתמקדות בהתקנת Config Connector באשכולות Google Kubernetes Engine ‏ (GKE). מידע נוסף על אפשרויות ההתקנה השונות זמין במאמר בחירת סוג התקנה.

ברוב תרחישי השימוש, מומלץ להתקין את Config Connector באופן ידני במצב עם מרחבי שמות. החלופה היא מצב אשכול. מצב עם מרחב שמות הוא יותר ניתן להרחבה ומציע בידוד טוב יותר של הרשאות, ולכן הוא אידיאלי לתרחישי שימוש עם מספר דיירים או כשמנהלים משאבים מכמה פרויקטים.

אם אתם מעדיפים חשבון שירות יחיד שפועל בכל האשכול, אתם צריכים לפעול לפי ההוראות להתקנה במצב אשכול.

לפני שמתחילים

לפני שמתקינים ידנית את האופרטור Config Connector, צריך לבצע את השלבים הבאים:

התקנת האופרטור של Config Connector

‫Config Connector משתמש באופרטור של Kubernetes כדי לשמור על עדכניות ההתקנה. התקנת האופרטור נדרשת בין אם מתקינים את Config Connector במצב מרחב שמות או במצב אשכול.

כדי להתקין את האופרטור Config Connector, מבצעים את השלבים הבאים:

  1. מורידים את קובץ ה-‎ .tar העדכני של אופרטור Config Connector:

    gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
    
  2. מחלצים את קובץ ה-TAR:

    tar zxvf release-bundle.tar.gz
    
  3. מתקינים את האופרטור של Config Connector באשכול:

    טייס אוטומטי

    kubectl apply -f operator-system/autopilot-configconnector-operator.yaml
    

    רגילה

    kubectl apply -f operator-system/configconnector-operator.yaml
    
  4. כדי להגדיר את האופרטור Config Connector להפעלה במצב של מרחב שמות, מבצעים את השלבים הבאים:

    1. יוצרים מניפסט בשם 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
      
    2. מחילים את המניפסט על האשכול:

      kubectl apply -f configconnector.yaml
      

התקנה של Config Connector במצב עם מרחבי שמות

בקטעים הבאים, הפרויקט שבו מתקינים את Config Connector הוא פרויקט המארח. הפרויקטים האחרים שבהם Config Connector יכול לנהל משאבים הם פרויקטים מנוהלים. פרויקט המארח והפרויקט המנוהל יכולים להיות אותו פרויקט, אם רוצים ש-Config Connector ייצור משאבים רק באותו פרויקט שבו נמצא האשכול.

יצירת מרחב שמות

כדי ליצור מרחב שמות חדש, מריצים את הפקודה הבאה:

kubectl create namespace NAMESPACE

מחליפים את NAMESPACE בשם של מרחב השמות.

יצירת זהות

כדי ליצור חשבון שירות של ניהול זהויות והרשאות גישה (IAM) וליצור קישור בין חשבון השירות של IAM לבין חשבון השירות של Config Connector Kubernetes, מבצעים את השלבים הבאים:

  1. יוצרים חשבון שירות ב-IAM. אם יש לכם חשבון שירות קיים, אתם יכולים להשתמש בו במקום ליצור חשבון שירות חדש. כדי ליצור את חשבון השירות, מריצים את הפקודה הבאה באמצעות gcloud:

    gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • NAMESPACE_GSA בשם של חשבון השירות של Google ‏ (GSA) שמשויך למרחב השמות שלכם.
    • HOST_PROJECT_ID במזהה פרויקט המארח.

    למידע נוסף על יצירת חשבונות שירות, אפשר לעיין במאמר יצירה וניהול של חשבונות שירות.

  2. נותנים לחשבון השירות ב-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 במזהה הפרויקט המנוהל.

  3. יוצרים קשר בין מדיניות 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"
    
  4. נותנים לחשבון השירות ב-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, מבצעים את השלבים הבאים:

  1. יוצרים מניפסט בשם 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
    
  2. מחילים את המניפסט על האשכול:

    kubectl apply -f configconnectorcontext.yaml
    
  3. מריצים את הפקודה הבאה כדי לוודא שאופרטור Config Connector יצר חשבון שירות של Kubernetes למרחב השמות:

    kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE  -n cnrm-system
    
  4. מוודאים ש-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 במרחב השמות הזה.

  1. כדי למצוא את כל המשאבים של Config Connector במרחב השמות, מריצים את הפקודה list לכל הגדרת משאב מותאם אישית של Config Connector.

    kubectl get gcp -n NAMESPACE
    

    הפלט של הפקודה הזו מציג רשימה של כל הגדרות המשאבים בהתאמה אישית (CRD) שמייצגות משאב שמנוהל על ידי Config Connector במרחב השמות הזה, כולל השם והסוג של Kubernetes של המשאב הזה.

  2. כדי להסיר את כל המשאבים של Config Connector, מריצים את הפקודה הבאה לכל משאב בפלט של השלב הקודם:

    kubectl delete -n NAMESPACE KIND NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • KIND: סוג המשאב ב-Kubernetes.
    • NAME: שם המשאב.
  3. מוחקים את האובייקט ConfigConnectorContext במרחב השמות.

    kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com
    

הסרת Config Connector

כדי להסיר את Config Connector, מבצעים את השלבים הבאים:

  1. כדי להסיר את רכיבי ה-CRD והבקר של Config Connector, מריצים את הפקודה הבאה:

    kubectl delete ConfigConnectorContext --all -A –wait=false
    
    kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
        --wait=true
    
  2. כדי להסיר את האופרטור Config Connector, מריצים את הפקודה הבאה:

    kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true
    

התקנה במצב אשכול

אולי תעדיפו להתקין את Config Connector ולנהל אותו במצב אשכול אם אתם רוצים לנהל משאבים בפרויקט יחיד ולא צריכים את ההפרדה בין ההרשאות שמצב מרחב השמות מספק.

יצירת זהות

‫Config Connector יוצר ומנהל משאבים על ידי אימות באמצעות חשבון שירות של ניהול זהויות והרשאות גישה (IAM) ושימוש ב-איחוד זהויות של עומסי עבודה ל-GKE כדי לקשר חשבונות שירות של IAM לחשבונות שירות של Kubernetes. Google Cloud

כדי ליצור את הזהות, מבצעים את השלבים הבאים:

  1. יוצרים חשבון שירות ב-IAM. אם אתם רוצים להשתמש בחשבון שירות קיים, אתם יכולים להשתמש בו ולדלג על השלב הזה:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    מחליפים את SERVICE_ACCOUNT_NAME בשם שרוצים לתת לחשבון השירות.

    למידע נוסף על יצירת חשבונות שירות, אפשר לעיין במאמר יצירה וניהול של חשבונות שירות.

  2. נותנים לחשבון השירות ב-IAM הרשאות מורחבות בפרויקט:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/editor"
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

  3. יוצרים קשר בין מדיניות 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

כדי להגדיר את האופרטור במצב אשכול, מבצעים את השלבים הבאים:

  1. מעתיקים את קובץ ה-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 במזהה הפרויקט.
  2. מחילים את התצורה על האשכול באמצעות הפקודה 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, מבצעים את השלבים הבאים:

  1. כדי להסיר את רכיבי ה-CRD והבקר של Config Connector, מריצים את הפקודה הבאה:

    kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
        --wait=true
    
  2. כדי להסיר את האופרטור 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, ואז להתקין את האופרטור.

  1. מריצים את הפקודות הבאות כדי להסיר רכיבים של מערכת 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
    
  2. מתקינים את Config Connector באמצעות התוסף GKE או האופרטור.

מעבר מהתוסף להתקנה ידנית

כשמתקינים את Config Connector כתוסף, הגרסה שלו קשורה ישירות לגרסת GKE שמותקנת.

התקנה ידנית מאפשרת עדכונים מהירים יותר, אבל צריך לבצע שדרוגים ידניים.

כדי להחליף שיטות התקנה ולשמור את המשאבים בצורה בטוחה, פועלים לפי השלבים הבאים:

  1. השבתת התוסף בלי למחוק אובייקטים מסוג ConfigConnector או ConfigConnectorContext:

    gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLED
    

    מחליפים את CLUSTER_NAME בשם של האשכול שבו התקנתם את Config Connector.

  2. מתקינים את האופרטור הידני של הגרסה שנבחרה.

    כדי למנוע שגיאות אפשריות באימות של CRD (לדוגמה, KNV2009: Invalid value: "v1beta1": must appear in spec.versions), הגרסה שנבחרה של האופרטור הידני צריכה להיות זהה לגרסה שבה השתמשתם עבור התוסף או מאוחרת ממנה. הורדת הגרסה של האופרטור הידני עלולה לגרום לשגיאות (לדוגמה, KNV2009) כי יכול להיות שהתוסף GKE כבר שדרג CRD מסוימים לגרסה מאוחרת יותר של Config Connector.

המאמרים הבאים