הגדרת האופרטור 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 CloudGoogle 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. עוברים אל אופרטורים > אופרטורים מותקנים.
    2. ברשימת האופרטורים, מחפשים את האופרטור Cluster Services for OpenShift Telemetry ומוודאים שהוא מופיע.
    3. מוודאים שבעמודה סטטוס מופיע הערך הושלם או מעודכן.
    4. אפשר גם ללחוץ על האופרטור כדי לראות את הפרטים שלו.

OpenShift CLI

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

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

    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 משאב מותאם אישית. המשאב הזה פורס פודים של דימונים בצמתי האשכול שלכם עבור Agent for Compute Workloads.

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

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

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

      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. מוודאים שהסטטוס של ה-pod של סוכן הטלמטריה הוא 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.

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

כברירת מחדל, היומנים של Telemetry Operator נשלחים אל 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
    

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