במאמר הזה נסביר איך להתקין את Cluster Services for OpenShift Telemetry operator ולהגדיר אותו להתחבר לאשכול OpenShift שפועל במכונת Compute Engine.
אחרי שמתקינים ומגדירים אותו, אופרטור הטלמטריה הזה פורס דמון טלמטריה של רשת המארח, שעוקב באופן רציף אחרי תקינות האשכול והגדרת האשכול. המפעיל שולח את המדדים שנאספו אל כלי לניהול עומס העבודה. לאחר מכן תוכלו להשתמש בהערכה של כלי לניהול עומס העבודה כדי לסרוק את עומסי העבודה שפועלים באשכול שלכם ולבדוק אם יש חריגות מהשיטות המומלצות לאשכולות OpenShift.
לפני שמתחילים
לפני שמתקינים ומגדירים את האופרטור של הטלמטריה, צריך לוודא שמתקיימים התנאים המוקדמים הבאים:
- אתם משתמשים בגרסה 4.18 ואילך של Red Hat OpenShift Container Platform.
- פרסתם אשכול OpenShift במכונת חישוב אחת או יותר.
- האדמין הקצה לכם את התפקיד ClusterAdmin באשכול שלכם ב-Red Hat OpenShift Container Platform.
- הורדתם והתקנתם את Google Cloud CLI במסוף. אם אתם משתמשים ב-Cloud Shell, אתם יכולים לדלג על הדרישה המוקדמת הזו.
- התקנתם את OpenShift CLI (
oc) באשכול. מידע על התקנת ה-CLI הזה זמין במסמך של Red Hat בנושא התקנת OpenShift CLI. - התקנתם את כלי השירות Cloud Credentials Operator (
ccoctl). מידע על התקנת כלי השירות הזה זמין במסמך של Red Hat How to obtain theccoctltool for OpenShift 4 (איך משיגים את הכליccoctlל-OpenShift 4). - בדקתם את האזורים הנתמכים שבהם אפשר ליצור הערכות של כלי לניהול עומס העבודה.
- האדמין הקצה לכם תפקידי IAM שנדרשים ליצירה ולהרצה של הערכות בכלי לניהול עומס העבודה.
- הפעלתם גישה לממשקי Cloud API.
הפעלת גישה לממשקי 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
אפשר לאמת את מפעיל הטלמטריה כחשבון שירות באמצעות האפשרויות הבאות:
- (מומלץ) אימות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה
- ביצוע אימות באמצעות מפתח של חשבון שירות
אימות של אופרטור באמצעות איחוד שירותי אימות הזהות של עומסי עבודה
כדי לאמת את האופרטור של הטלמטריה כחשבון השירות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, צריך לבצע את השלבים הבאים:
במסוף, מחלצים את קובץ המניפסט
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.בעזרת כלי השירות
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
-
מחילים על האשכול את ספק OpenID Connect (OIDC) שנוצר, את תפקידי IAM ואת מניפסטים הסודיים:
oc apply -f ./ccoctl-out/manifests/
בשלבים הקודמים יצרתם חשבון שירות בפרויקט Google Cloud והקציתם לו את תפקידי ה-IAM הבאים:
- כדי לאסוף מדדים ממופע של מחשוב:
Compute Viewer (
roles/compute.viewer) - כדי לכתוב נתונים למחסן הנתונים של הכלי לניהול עומס העבודה:
הרשאת כתיבה של תובנות בכלי לניהול עומס העבודה (
roles/workloadmanager.insightWriter) - כדי לשלוח יומני אופרטור ל-Cloud Logging:
Logs Writer (
roles/logging.logWriter)
אימות של אופרטור באמצעות מפתח של חשבון שירות
אם הארגון שלכם לא תומך בשימוש בשירות המשולב לזיהוי עומסי עבודה לצורכי אימות, תוכלו לאמת את אופרטור הטלמטריה באמצעות מפתח של חשבון שירות.
כדי לאמת את מפעיל הטלמטריה כחשבון השירות באמצעות מפתח של חשבון שירות, צריך לבצע את השלבים הבאים:
במסוף, מחלצים את קובץ המניפסט
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ב 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.כדי לאפשר לחשבון השירות לגשת למשאבים Google Cloud , צריך להקצות לחשבון השירות את תפקידי ה-IAM שמוגדרים במניפסט
CredentialsRequest. המניפסט הזה כולל את קבוצת התפקידים המינימלית הבאה ב-IAM שהמפעיל צריך:- כדי לאסוף מדדים ממופע של מחשוב:
Compute Viewer (
roles/compute.viewer) - כדי לכתוב נתונים למחסן הנתונים של הכלי לניהול עומס העבודה:
הרשאת כתיבה של תובנות בכלי לניהול עומס העבודה (
roles/workloadmanager.insightWriter) - כדי לשלוח יומני אופרטור ל-Cloud Logging:
Logs Writer (
roles/logging.logWriter)
לכל תפקיד 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 שרוצים להקצות לחשבון השירות.- כדי לאסוף מדדים ממופע של מחשוב:
Compute Viewer (
יוצרים ומורידים מפתח פרטי לחשבון השירות:
gcloud iam service-accounts keys create ./sa_key.json \ --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \ --project=PROJECT_IDבמרחב השמות
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, מבצעים את השלבים הבאים:
- נכנסים למסוף האינטרנט של Red Hat OpenShift.
- מוודאים שאתם בתצוגה המקדימה של האדמין.
- בחלונית הניווט הימנית, מרחיבים את הקטע Operators ולוחצים על OperatorHub.
בסרגל החיפוש שמתחת לכל הפריטים, מזינים את הטקסט Cluster Services for OpenShift Telemetry.
אפשר גם להזין Google כדי לחפש. כך מסננים את האופרטורים שסופקו על ידי Google, כולל האופרטור Cluster Services for OpenShift Telemetry.
לוחצים על הכרטיס שנקרא Cluster Services for OpenShift Telemetry.
בחלונית Cluster Services for OpenShift Telemetry, לוחצים על Install.
בדף Install Operator (התקנת אופרטור), מבצעים את הפעולות הבאות:
- בשדה Update channel, בוחרים באפשרות stable.
- בשדה Installation mode (מצב התקנה), בוחרים באפשרות A specific namespace on the cluster (מרחב שמות ספציפי באשכול).
- בשדה Installed Namespace, בוחרים את הפרויקט openshift-operators או יוצרים מרחב שמות מותאם אישית לניטור.
- בשדה Approval Strategy, בוחרים באפשרות Automatic או Manual.
- לוחצים על התקנה.
כדי לוודא שהאופרטור הותקן בהצלחה, מבצעים את השלבים הבאים:
- עוברים אל אופרטורים > אופרטורים מותקנים.
- ברשימת האופרטורים, מחפשים את האופרטור Cluster Services for OpenShift Telemetry ומוודאים שהוא מופיע.
- מוודאים שבעמודה סטטוס מופיע הערך הושלם או מעודכן.
- אפשר גם ללחוץ על האופרטור כדי לראות את הפרטים שלו.
OpenShift CLI
כדי להתקין את האופרטור של הטלמטריה באשכול OpenShift באמצעות OpenShift CLI ומניפסט הצהרתי של SubscriptionYAML, פועלים לפי השלבים הבאים:
יוצרים מניפסט מותאם אישית של משאבים בשם
subscription.yamlעם ההגדרות הבאות:SubscriptionapiVersion: 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מחילים את המינוי על האשכול:
oc apply -f subscription.yamlכדי לוודא שהאופרטור של הטלמטריה הותקן בהצלחה, בודקים את הסטטוס של
ClusterServiceVersion:oc get csv -n openshift-operatorsבפלט, מוודאים שהערך בעמודה
PHASEעבורcluster-services-for-openshift-telemetryהואSucceeded.
הפעלת איסוף מדדים
כדי לאפשר לאופרטור לאסוף מדדים מאשכול OpenShift, צריך להחיל TelemetryConfig משאב מותאם אישית. המשאב הזה פורס פודים של דימונים בצמתי האשכול שלכם עבור Agent for Compute Workloads.
כדי לאפשר לאופרטור לאסוף מדדים מאשכול OpenShift, צריך לבצע את השלבים הבאים:
יוצרים מניפסט של משאב מותאם אישית בשם
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.
מחילים את המשאב המותאם אישית על האשכול:
oc apply -f telemetryconfig.yamlמוודאים שהסטטוס של ה-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, פועלים לפי השלבים הבאים:
נכנסים לדף Logs Explorer במסוף Google Cloud .
בחלונית השאילתה, מזינים שאילתה:
כדי לסנן את היומנים של 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. הוראות לאיתור מזהה של מכונת מחשוב מופיעות במאמר בנושא הצגת הפרטים של מכונה וירטואלית.
לוחצים על Run query.
הגדרת מדיניות התראות שמבוססת על יומנים
כברירת מחדל, היומנים של Telemetry Operator נשלחים אל Cloud Logging. מומלץ להגדיר מדיניות התראות על סמך יומני האופרטור של הטלמטריה, כדי לקבל התראות כשמופיעות ביומנים הודעות ספציפיות. ההתראות האלה עוזרות לכם לעקוב אחרי הפעולה של האופרטור ולפתור בעיות.
כדי להגדיר מדיניות התראות על סמך היומנים שנוצרו על ידי אופרטור הטלמטריה, מבצעים את השלבים הבאים:
מוודאים שאתם עומדים בדרישות המוקדמות שמתוארות בקטע 'לפני שמתחילים' במאמר בנושא הגדרת מדיניות התראות שמבוססת על יומנים.
נכנסים לדף Logs Explorer במסוף Google Cloud .
בחלונית השאילתה, מזינים את השאילתה הנדרשת:
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent" severity=SEVERITY_LEVEL
מחליפים את
SEVERITY_LEVELבערך נתמך של רמת חומרה, כולל:DEBUG,INFO,WARNINGו-ERROR. מומלץ להשתמש בערךERRORאו בערך גבוה יותר של רמת היומן.לוחצים על Run query כדי לאמת את השאילתה.
יוצרים התראה לגבי יומן.
הסבר על יצירת ההתראה הזו מופיע בשלב השלישי בתהליך שמתואר במאמר יצירת מדיניות התראות מבוססת-יומן באמצעות Logs Explorer.
אופציונלי: הפעלת הערכות ספציפיות לסביבת הייצור
חלק מהשיטות המומלצות שכלי לניהול עומס העבודה תומך בהן עבור אשכולות OpenShift חלות רק על סביבות ייצור.
כלי לניהול עומס העבודה מבחין בין סוגי העומסים על ידי בדיקת האשכול, הפריסה או ה-Pod שלכם כדי למצוא את התווית environment. אם הערך שמשויך לתווית הזו הוא production, כלי לניהול עומס העבודה מתייחס למשאב הזה כאל משאב ייצור.
כדי להודיע לכלי לניהול עומס העבודה שקלאסטר שייך לסביבת ייצור, מבצעים את השלבים הבאים:
יוצרים מרחב שמות
workloadmanager:oc create namespace workloadmanagerיוצרים
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 דקות לאיסוף המדדים המתוזמן, אפשר להפעיל את האופרטור באופן ידני כדי לאסוף מדדים ולשלוח אותם לכלי לניהול עומס העבודה.
כדי להפעיל ידנית את האופרטור לאיסוף מדדים, מבצעים את השלבים הבאים:
פותחים את הטרמינל.
מאתרים את השם של הפוד שפועל:
POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)מפעילים את האופרטור כדי לאסוף ולשלוח מדדים:
oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh