במאמר הזה נסביר איך ליצור פריסת Spanner Omni ב-Kubernetes. הפריסה הזו לא מוצפנת. אם אתם רוצים להגדיר במהירות סביבת בדיקה או סביבת הוכחת היתכנות כדי להעריך את Spanner Omni, הדרך הכי מהירה להתחיל היא ליצור פריסה ללא הצפנה, כי לא צריך להגדיר mTLS או אמצעי אבטחה אחרים. עם זאת, בגלל סיכוני אבטחה כמו תעבורת רשת לא מוצפנת וגישה פתוחה, לא מומלץ להשתמש בתצורה הזו בסביבות ייצור. אתם יכולים לבחור בין פריסה של שרת יחיד לבין פריסה אזורית בכמה אזורים.
גרסת הטרום-השקה של Spanner Omni לא תומכת בהצפנת TLS, והיא מפסיקה לכתוב נתונים 90 יום אחרי שיוצרים פריסה. כדי לקבל גישה מוקדמת למהדורה עם כל התכונות, אפשר לפנות אל Google.
לפני שמתחילים
לפני שמפעילים את Spanner Omni, צריך לוודא שהסביבה עומדת בדרישות הבאות:
יוצרים אשכול Kubernetes. ההגדרה תומכת ב-Google Kubernetes Engine (GKE) וב-Amazon Elastic Kubernetes Service (Amazon EKS). יכול להיות שתצטרכו להתאים אישית את ההגדרה כדי שהיא תפעל בסביבות אחרות.
מוודאים שלקלאסטר Kubernetes יש גישה לארטיפקט של Artifact Registry שמארח את קונטיינר Spanner Omni.
מתקינים ומגדירים את כלי שורת הפקודה
kubectlואת Helm.אם הגדרתם את סביבת Kubernetes במכונות של פלטפורמת הווירטואליזציה vSphere, צריך להשבית את הווירטואליזציה של Time Stamp Counter (TSC) על ידי הוספת
monitor_control.virtual_rdtsc = FALSEלקובץ ההגדרה.vmxשל המכונה הווירטואלית. כך TrueTime פועל בצורה תקינה.מוודאים שהסביבה עומדת בדרישות המערכת של Spanner Omni.
בוחרים טופולוגיה לפריסה.
הכנת הגדרות Helm
יוצרים הגדרת Helm. למידע נוסף, ראו יצירת הגדרת Helm.
יצירת הפריסה
מריצים את הפקודה להתקנת תרשים Helm עם ההגדרות הספציפיות. אלה פקודות לדוגמה לפריסות הנפוצות ביותר:
דוגמה 1: הפעלת Spanner Omni בשרת יחיד ב-GKE עם חבילת הניטור
כדי להריץ את Spanner Omni בשרת יחיד ב-GKE עם חבילת הניטור, מריצים את הפקודה הבאה:
kubectl create ns monitoring
helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.2.0 \
--set global.platform=gke \
--set deployment.singleServer=true \
--set monitoring.enabled=true \
--namespace spanner-ns \
--create-namespace
דוגמה 2: הרצת Spanner Omni בכמה שרתים ב-GKE
כדי להריץ את Spanner Omni בכמה שרתים באזור יחיד (us-central1-a) ב-GKE, מריצים את הפקודה הבאה:
kubectl create ns monitoring
helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.2.0 \
--set global.platform=gke \
--set deployment.replicasPerZone=5 \
--set deployment.rootServersPerZone=3 \
--set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"}]}]' \
--set monitoring.enabled=true \
--namespace spanner-ns \
--create-namespace
מספר שרתי הבסיס בכל אזור חייב להיות מספר אי-זוגי בין אחד לתשעה, כולל, כדי להבטיח קוורום לעקביות. אם מספר השרתים הוא מספר זוגי, יכול להיות שהפריסות ייכשלו. כשמגדירים את האזורים, מציינים ששרתים מסוימים הם שרתי הבסיס. מומלץ להשתמש באזור אחד לפיתוח או לבדיקות, ובשלושה אזורים לסביבת ייצור עם זמינות גבוהה.
דוגמה 3: פריסה אזורית עם זמינות גבוהה
בפריסה הזו נשמרים שלושה עותקים של הנתונים, כך ש-Spanner Omni יכול להמשיך לפעול גם אם יש הפסקת חשמל באזור מסוים. כדי ליצור את הפריסה הזו, מריצים את הפקודה הבאה:
kubectl create ns monitoring
helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.2.0 \
--set global.platform=gke \
--set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"},{"name":"us-central1-c","shortName":"b"},{"name":"us-central1-d","shortName":"c"}]}]' \
--set monitoring.enabled=true \
--namespace spanner-ns \
--create-namespace
בדיקת הסטטוס של ה-pods
כדי לבדוק את הסטטוס של הפודים, מריצים את הפקודה הבאה:
kubectl get pods --watch --namespace spanner-ns
פלט לדוגמה:
NAME READY STATUS RESTARTS AGE
spanner-a-0 1/1 Running 0 4m
spanner-a-1 1/1 Running 0 4m
spanner-a-2 1/1 Running 0 4m
spanner-a-3 1/1 Running 0 4m
spanner-a-4 1/1 Running 0 4m
spanner-b-0 1/1 Running 0 4m
spanner-b-1 1/1 Running 0 4m
spanner-b-2 1/1 Running 0 4m
spanner-b-3 1/1 Running 0 4m
spanner-b-4 1/1 Running 0 4m
spanner-c-0 1/1 Running 0 4m
spanner-c-1 1/1 Running 0 4m
spanner-c-2 1/1 Running 0 4m
spanner-c-3 1/1 Running 0 4m
spanner-c-4 1/1 Running 0 4m
אינטראקציה עם Spanner Omni
אחרי שה-Pods פועלים, אפשר להתחבר לפריסה ולבצע אינטראקציה איתה באמצעות Spanner Omni CLI.
מריצים את הפקודה הבאה כדי לקבל את כתובת השירות:
kubectl get service spanner -n spanner-nsהערך
EXTERNAL-IP:PORTהוא DEPLOYMENT_ENDPOINT עבור הפריסה שלכם.אם עוד לא עשיתם זאת, הורידו את Spanner Omni CLI מ
spanner-omniקטגוריה של Cloud Storage.אפשר להשתמש ב-Spanner Omni CLI כדי ליצור מסד נתונים של GoogleSQL או PostgreSQL ולבצע איתו אינטראקציה.
GoogleSQL
כדי ליצור מסד נתונים של GoogleSQL ולנהל איתו אינטראקציה, מריצים את הפקודה הבאה:
spanner databases create DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT spanner sql --database=DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINTPostgreSQL
כדי ליצור מסד נתונים של PostgreSQL ולבצע בו פעולות, מריצים את הפקודה הבאה:
spanner databases create POSTGRESQL_DATABASE_NAME --database_dialect POSTGRESQL --deployment_endpoint DEPLOYMENT_ENDPOINT spanner sql --database=POSTGRESQL_DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT ``` You can also interact with a PostgreSQL database by following the instructions in [Connect using PGAdapter](/spanner-omni/pgadapter) to configure PGAdapter and use PostgreSQL tools, such as `psql`, with your PostgreSQL-dialect databases.
התבוננות בפריסה (אופציונלי)
אפשר להגדיר את Spanner Omni עם monitoring.enabled=true כדי להגדיר את Prometheus לקליטת מדדים שמיוצאים מ-Spanner Omni.
כך תוכלו לנתח בעיות בהטמעה ולנפות באגים. למידע נוסף:
כדי לקבל את פרטי השירות, מריצים את הפקודות הבאות:
# Prometheus service details. Default port is 9090.
kubectl get service prometheus-service -n monitoring
# Grafana service details. Default port is 3000.
kubectl get service grafana -n monitoring