הגדרת האופרטור Cluster Services for OpenShift Telemetry

במאמר הזה מוסבר איך להתקין את Cluster Services for OpenShift Telemetry operator ולהגדיר אותו להתחבר לאשכול OpenShift שפועל במכונה של Compute Engine.

אחרי שמתקינים ומגדירים אותו, אופרטור הטלמטריה הזה פורס דמון טלמטריה של רשת המארח, שעוקב באופן רציף אחרי תקינות האשכול והגדרת האשכול. המפעיל שולח את המדדים שנאספו אל כלי לניהול עומס העבודה. לאחר מכן תוכלו להשתמש בהערכה של כלי לניהול עומס העבודה כדי לסרוק את עומסי העבודה שפועלים באשכול שלכם ולבדוק אם יש חריגות מהשיטות המומלצות לאשכולות OpenShift.

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

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

הפעלת גישה לממשקי Cloud API

ב-Compute Engine מומלץ להגדיר את המכונות כך שיאפשרו את כל היקפי הגישה לכל ממשקי Cloud API, ולהשתמש רק בהרשאות IAM של חשבון השירות של המכונה כדי לשלוט בגישה למשאבים שלGoogle Cloud . מידע נוסף זמין במאמר יצירת מכונה וירטואלית שמשתמשת בחשבון שירות שמנוהל על ידי משתמש.

אם מגבילים את הגישה לממשקי Cloud API, אז לאופרטור Cluster Services for OpenShift Telemetry נדרשות לפחות הרשאות הגישה הבאות לממשקי Cloud API במופע המחשוב של המארח:

https://www.googleapis.com/auth/cloud-platform

מידע נוסף זמין במאמר בנושא שיטות מומלצות לשימוש בהיקפים.

אם אתם מריצים אשכול OpenShift במופע של מחשוב שלא מוקצית לו כתובת IP חיצונית, אתם צריכים להפעיל גישה פרטית ל-Google ברשת המשנה של המופע, כדי שהאופרטור Cluster Services for OpenShift Telemetry יוכל לגשת ל-Google APIs ולשירותים של Google. מידע על הפעלת גישה פרטית ל-Google זמין במאמר הגדרת גישה פרטית ל-Google.

אימות משתמשים באשכול OpenShift

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

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

    oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadmin
    
  • אפשרות אחרת היא לקבל טוקן לאימות סשן לשימוש עם קובץ הבינארי oc. כדי לקבל את הטוקן הזה, פותחים את כתובת ה-URL הבאה בדפדפן אינטרנט:

    https://oauth-openshift.apps.CLUSTER_DOMAIN/oauth/token/request
    

מחליפים את CLUSTER_DOMAIN בדומיין של אשכול OpenShift. לדוגמה: mycluster.google.com.

אימות האופרטור ל Google Cloud

כדי לאפשר לאופרטור הטלמטריה לאמת את עצמו ולגשת Google Cloud למשאבים, צריך ליצור בשבילו חשבון שירות ב Google Cloud פרויקט.

אפשר לאמת את מפעיל הטלמטריה כחשבון השירות באמצעות האפשרויות הבאות:

אימות של אופרטור באמצעות איחוד שירותי אימות הזהות של עומסי עבודה

כדי לאמת את האופרטור של הטלמטריה כחשבון השירות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, צריך לבצע את השלבים הבאים:

  1. בטרמינל, מחלצים את קובץ המניפסט CredentialsRequest מחבילת האפליקציות של מפעיל הטלמטריה לתיקייה מקומית:

    mkdir -p credrequests
    oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm
    

    מחליפים את VERSION במספר הגרסה שאליה נרשמתם כמנויים למפעיל הטלמטריה ב-OperatorHub. רשימת מספרי הגרסאות המאושרות של אופרטור הטלמטריה זמינה בקטלוג של Red Hat Ecosystem.

  2. בעזרת כלי השירות ccoctl, מעבדים את קובץ המניפסט CredentialsRequest שחולץ ומקצים Google Cloud הרשאות ופרטי כניסה לניהול זהויות והרשאות גישה (IAM):

    ccoctl gcp create-all \
      --name=cso-telemetry \
      --region=REGION \
      --project=PROJECT_ID \
      --credentials-requests-dir=./credrequests \
      --output-dir=./ccoctl-out
    

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

    • ‫REGION: אזור Compute Engine שבו פועל אשכול OpenShift
    • ‫PROJECT_ID: מזהה הפרויקט של Google Cloud הפרויקט שבו פועל אשכול OpenShift
  3. מחילים על האשכול את ספק OpenID Connect ‏ (OIDC) שנוצר, את תפקידי IAM ואת מניפסטים הסודיים:

    oc apply -f ./ccoctl-out/manifests/
    

בשלבים הקודמים יצרתם חשבון שירות בפרויקט Google Cloud והקציתם לו את תפקידי ה-IAM הבאים:

אימות של אופרטור באמצעות מפתח של חשבון שירות

אם הארגון שלכם לא תומך בשימוש באיחוד שירותי אימות הזהות של עומסי עבודה לצורכי אימות, אתם יכולים לאמת את האופרטור של הטלמטריה באמצעות מפתח של חשבון שירות.

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

  1. בטרמינל, מחלצים את קובץ המניפסט CredentialsRequest מחבילת האפליקציות של מפעיל הטלמטריה לתיקייה מקומית:

    mkdir -p credrequests
    oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm
    
  2. ב Google Cloud פרויקט, יוצרים חשבון שירות לאופרטור של הטלמטריה:

    gcloud iam service-accounts create cso-telemetry-agent \
      --description="Service account for OpenShift Telemetry Operator" \
      --display-name="CSO Telemetry Agent" \
      --project=PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה שלGoogle Cloud הפרויקט שבו פועל אשכול OpenShift.

  3. כדי לאפשר לחשבון השירות לגשת למשאבים Google Cloud , צריך להקצות לחשבון השירות את תפקידי ה-IAM שמוגדרים במניפסטCredentialsRequest. המניפסט הזה כולל את קבוצת התפקידים המינימלית הבאה ב-IAM שהמפעיל צריך:

    לכל תפקיד IAM שמוגדר במניפסט הזה, מריצים את הפקודה הבאה:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com" \
      --role="IAM_ROLE"
    

    מחליפים את IAM_ROLE בתפקיד ה-IAM שרוצים להקצות לחשבון השירות.

  4. יוצרים ומורידים מפתח פרטי לחשבון השירות:

    gcloud iam service-accounts keys create ./sa_key.json \
      --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \
      --project=PROJECT_ID
    
  5. במרחב השמות openshift-operators, יוצרים סוד בשם telemetry-agent-sa עבור מפתח חשבון השירות שיצרתם:

    oc create secret generic telemetry-agent-sa \
      --from-file=workload_agent_sa_key.json=./sa_key.json \
      -n openshift-operators
    

התקנת האופרטור Cluster Services for OpenShift Telemetry

אפשר להתקין את האופרטור Cluster Services for OpenShift Telemetry באמצעות מסוף האינטרנט Red Hat OpenShift Container Platform או באמצעות מניפסטים של YAML להרשמה הצהרתית. מידע על האפשרויות האלה זמין במסמך של Red Hat בנושא הוספת אופרטורים לאשכול.

מסוף האינטרנט של OpenShift

כדי להתקין את האופרטור של הטלמטריה באשכול OpenShift באמצעות מסוף האינטרנט של OpenShift Container Platform, מבצעים את השלבים הבאים:

  1. נכנסים למסוף האינטרנט של Red Hat OpenShift.
  2. מוודאים שאתם בתצוגה המקדימה של האדמין.
  3. בחלונית הניווט הימנית, מרחיבים את הקטע Operators (אופרטורים) ולוחצים על OperatorHub.
  4. בסרגל החיפוש שמתחת לכל הפריטים, מזינים את הטקסט Cluster Services for OpenShift Telemetry.

    אפשר גם להזין Google כדי לחפש. כך מסננים את האופרטורים שסופקו על ידי Google, כולל האופרטור Cluster Services for OpenShift Telemetry.

  5. לוחצים על הכרטיס Cluster Services for OpenShift Telemetry.

  6. בחלונית Cluster Services for OpenShift Telemetry, לוחצים על Install.

  7. בדף Install Operator (התקנת אופרטור), מבצעים את הפעולות הבאות:

    1. בשדה Update channel (ערוץ עדכונים), בוחרים באפשרות stable (יציב).
    2. בשדה Installation mode (מצב התקנה), בוחרים באפשרות A specific namespace on the cluster (מרחב שמות ספציפי באשכול).
    3. בשדה Installed Namespace, בוחרים את הפרויקט openshift-operators או יוצרים מרחב שמות מותאם אישית למעקב.
    4. בשדה Approval Strategy (שיטת האישור), בוחרים באפשרות Automatic (אוטומטית) או Manual (ידנית).
    5. לוחצים על התקנה.
  8. כדי לוודא שהאופרטור הותקן בהצלחה, מבצעים את השלבים הבאים:

    1. עוברים אל Operators > Installed Operators (אופרטורים > אופרטורים מותקנים).
    2. ברשימת האופרטורים, מחפשים את האופרטור Cluster Services for OpenShift Telemetry ומוודאים שהוא מופיע.
    3. בודקים אם בעמודה סטטוס מופיע הערך הושלם או עדכני.
    4. אפשר גם ללחוץ על האופרטור כדי לראות את הפרטים שלו.

OpenShift CLI

כדי להתקין את האופרטור של הטלמטריה באשכול OpenShift באמצעות OpenShift CLI ומניפסט הצהרתי של Subscription YAML, מבצעים את השלבים הבאים:

  1. יוצרים מניפסט של משאב מותאם אישית Subscription בשם subscription.yaml עם ההגדרות הבאות:

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: google-cloud-cluster-services-for-openshift-telemetry
      namespace: openshift-operators
    spec:
      channel: stable
      installPlanApproval: Automatic
      name: google-cloud-cluster-services-for-openshift-telemetry
      source: certified-operators
      sourceNamespace: openshift-marketplace
    
  2. מחילים את המינוי על האשכול:

    oc apply -f subscription.yaml
    
  3. כדי לוודא שהאופרטור של הטלמטריה הותקן בהצלחה, בודקים את הסטטוס של ClusterServiceVersion:

    oc get csv -n openshift-operators
    

    בפלט, מוודאים שהערך בעמודה PHASE עבור cluster-services-for-openshift-telemetry הוא Succeeded.

הפעלת איסוף מדדים

כדי לאפשר לאופרטור לאסוף מדדים מאשכול OpenShift, צריך להחיל משאב מותאם אישית TelemetryConfig. המשאב הזה פורס תרמילי daemon בצמתי האשכול שלכם עבור Agent for Compute Workloads.

כדי לאפשר לאופרטור לאסוף מדדים מאשכול OpenShift, צריך לבצע את השלבים הבאים:

  1. יוצרים מניפסט מותאם אישית של משאבים בשם TelemetryConfig: telemetryconfig.yaml

    • אם הגדרתם אימות לאופרטור של הטלמטריה באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, אתם יכולים להשתמש במשאב המותאם אישית המינימלי הבא. המשאב המותאם אישית הזה מאחזר באופן אוטומטי את פרטי הכניסה שמאוחסנים ב-google-cloud-cluster-services-telemetry-agent-wif-secretsecret.

      apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1
      kind: TelemetryConfig
      metadata:
        name: telemetryconfig
        namespace: openshift-operators
      spec:
        enabled: true
      
    • אם הגדרתם אימות לאופרטור של טלמטריה באמצעות מפתח של חשבון שירות, אתם צריכים להשתמש במשאב המותאם אישית הבא:

      apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1
      kind: TelemetryConfig
      metadata:
        name: telemetryconfig
        namespace: openshift-operators
      spec:
        enabled: true
        serviceAccountCredentialsSecretName: telemetry-agent-sa
        serviceAccountCredentialsPath: SERVICE_ACCOUNT_KEY_PATH
      

      מחליפים את SERVICE_ACCOUNT_KEY_PATH בנתיב שבו העליתם את המפתח של חשבון השירות. השם של הנקודה חייב להיות זהה לקובץ ה-JSON של מפתח חשבון השירות. לדוגמה: /var/run/secrets/google/workload_agent_sa_key.json.

  2. מחילים את המשאב המותאם אישית על האשכול:

    oc apply -f telemetryconfig.yaml
    
  3. מוודאים שהסטטוס של הפוד של סוכן הטלמטריה הוא Running:

    oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operator
    

    אפשר גם לבדוק את איסוף המדדים על ידי בדיקת היומנים של ה-pod:

    "openshiftmetrics/openshiftmetrics.go:126","msg":"Metric payload after collection","pid":5,"context":"OpenShiftMetricCollection","payload":"version:\"v0.1.0-pre\" agent_version:\"1.3\"

צפייה ביומני אופרטורים ב-Cloud Logging

כברירת מחדל, יומנים מהאופרטור Cluster Services for OpenShift Telemetry נשלחים אל Cloud Logging. אפשר לראות את היומנים האלה ב-Logging. כדי לראות את יומני האופרטור ב-Logging, פועלים לפי השלבים הבאים:

  1. נכנסים לדף Logs Explorer במסוף Google Cloud .

    כניסה לדף Logs Explorer

  2. בחלונית השאילתה, מזינים שאילתה:

    • כדי לסנן את היומנים של Google Cloud הפרויקט, משתמשים בשאילתה הבאה:

      logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"

      מחליפים את PROJECT_ID במזהה הפרויקט שלGoogle Cloud הפרויקט שבו פועל אשכול OpenShift.

    • אם אתם מריצים כמה אשכולות בפרויקט Google Cloud שלכם ורוצים לסנן יומנים מאשכול ספציפי, אתם יכולים להשתמש בשאילתה הבאה:

      resource.labels.instance_id=("COMPUTE_INSTANCE_ID_1" OR "COMPUTE_INSTANCE_ID_2" OR "COMPUTE_INSTANCE_ID_3")

      מחליפים את COMPUTE_INSTANCE_ID במזהה המכונה של מכונות Compute Engine שמריצות את אשכול OpenShift. מידע על איתור מזהה של מכונה וירטואלית זמין במאמר הצגת הפרטים של מכונה וירטואלית.

  3. לוחצים על Run query.

הגדרת כללי מדיניות התראות שמבוססים על יומנים

כברירת מחדל, יומנים מאמצעי הבקרה של הטלמטריה נשלחים אל Cloud Logging. מומלץ להגדיר מדיניות התראות על סמך יומני האופרטור של הטלמטריה, כדי לקבל התראה כשמופיעות ביומנים הודעות ספציפיות. ההתראות האלה עוזרות לכם לעקוב אחרי הפעילות של המפעיל ולפתור בעיות.

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

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

  2. נכנסים לדף Logs Explorer במסוף Google Cloud .

    כניסה לדף Logs Explorer

  3. בחלונית השאילתה, מזינים את השאילתה הנדרשת:

    logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"
    severity=SEVERITY_LEVEL

    מחליפים את SEVERITY_LEVEL בערך נתמך של רמת חומרה, כולל: DEBUG,‏ INFO,‏ WARNING ו-ERROR. מומלץ להשתמש בערך ERROR או בערך גבוה יותר של רמת היומן.

  4. לוחצים על Run query (הרצת שאילתה) כדי לאמת את השאילתה.

  5. ליצור התראה ביומן.

    הסבר על יצירת ההתראה הזו מופיע בשלב השלישי בתהליך שמתואר במאמר יצירת מדיניות התראות מבוססת-יומנים באמצעות Logs Explorer.

אופציונלי: הפעלת הערכות ספציפיות לסביבת הייצור

חלק מהשיטות המומלצות שכלי לניהול עומס העבודה תומך בהן עבור אשכולות OpenShift מיושמות רק בסביבות ייצור. כלי לניהול עומס העבודה מבחין בין סוגי העומסים על ידי בדיקת האשכול, הפריסה או ה-Pod שלכם כדי למצוא את התווית environment. אם הערך שמשויך לתווית הזו הוא production, ‏ כלי לניהול עומס העבודה מחשיב את המשאב הזה כמשאב ייצור.

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

  1. יוצרים מרחב שמות workloadmanager:

    oc create namespace workloadmanager
    
  2. יוצרים ConfigMap במרחב השמות workloadmanager באמצעות ההגדרה הבאה:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: wlm-cluster-environment
      namespace: workloadmanager
    data:
      # Options: "production" or "non-production"
      environment: "production"
    

כדי להודיע לכלי לניהול עומס העבודה שפריסה או Pod שייכים לסביבת ייצור, מוסיפים תווית בשם environment להגדרת המשאב באמצעות אחת מהאפשרויות הבאות:

  • מחילים באופן ידני את ההגדרה הבאה:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app
      labels:
        # Options: "production" or "non-production"
        environment: "production"
    spec:
    ...
    
  • מריצים את הפקודה הבאה:

    oc label --overwrite deployments DEPLOYMENT_NAME environment=production
    

    מחליפים את DEPLOYMENT_NAME בשם הפריסה.

אם אתם מחילים את התווית environment על אשכול OpenShift וגם על פריסה או על Pod שפועלים באשכול, כלי לניהול עומס העבודה נותן עדיפות לערך התווית שהוגדר לפריסה או ל-Pod על פני ערך התווית שהוגדר לאשכול.

אופציונלי: הפעלת איסוף מדדים

אחרי שמגדירים בהצלחה את האופרטור Cluster Services for OpenShift Telemetry באשכול OpenShift, האופרטור אוסף מדדים מהאשכול ושולח אותם לכלי לניהול עומס העבודה כל 30 דקות.

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

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

  1. פותחים את הטרמינל.

  2. מאתרים את השם של הפוד שפועל:

    POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)
    
  3. מפעילים את האופרטור כדי לאסוף ולשלוח מדדים:

    oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh
    

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