במאמר הזה מוסבר איך להתקין את 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 (איך משיגים את הכלי ל-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 Cloud למשאבים, צריך ליצור בשבילו חשבון שירות ב Google 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 (ידנית).
- לוחצים על התקנה.
כדי לוודא שהאופרטור הותקן בהצלחה, מבצעים את השלבים הבאים:
- עוברים אל Operators > Installed Operators (אופרטורים > אופרטורים מותקנים).
- ברשימת האופרטורים, מחפשים את האופרטור Cluster Services for OpenShift Telemetry ומוודאים שהוא מופיע.
- בודקים אם בעמודה סטטוס מופיע הערך הושלם או עדכני.
- אפשר גם ללחוץ על האופרטור כדי לראות את הפרטים שלו.
OpenShift CLI
כדי להתקין את האופרטור של הטלמטריה באשכול OpenShift באמצעות OpenShift CLI ומניפסט הצהרתי של Subscription YAML, מבצעים את השלבים הבאים:
יוצרים מניפסט של משאב מותאם אישית
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מחילים את המינוי על האשכול:
oc apply -f subscription.yamlכדי לוודא שהאופרטור של הטלמטריה הותקן בהצלחה, בודקים את הסטטוס של
ClusterServiceVersion:oc get csv -n openshift-operatorsבפלט, מוודאים שהערך בעמודה
PHASEעבורcluster-services-for-openshift-telemetryהואSucceeded.
הפעלת איסוף מדדים
כדי לאפשר לאופרטור לאסוף מדדים מאשכול OpenShift, צריך להחיל משאב מותאם אישית TelemetryConfig. המשאב הזה פורס תרמילי daemon בצמתי האשכול שלכם עבור Agent for Compute Workloads.
כדי לאפשר לאופרטור לאסוף מדדים מאשכול OpenShift, צריך לבצע את השלבים הבאים:
יוצרים מניפסט מותאם אישית של משאבים בשם
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.
מחילים את המשאב המותאם אישית על האשכול:
oc apply -f telemetryconfig.yamlמוודאים שהסטטוס של הפוד של סוכן הטלמטריה הוא 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.
הגדרת כללי מדיניות התראות שמבוססים על יומנים
כברירת מחדל, יומנים מאמצעי הבקרה של הטלמטריה נשלחים אל 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