- רשתות: איך מגדירים אשכולות של מסדי נתונים ב-AlloyDB Omni לגישה פנימית באמצעות שירות
ClusterIPשל Kubernetes או לגישה חיצונית באמצעותLoadBalancer, כולל איך להגביל את תעבורת הנתונים החיצונית באמצעות טווחי Classless Inter-Domain Routing (CIDR) של המקור. - מאגר חיבורים: משתמשים במשאב בהתאמה אישית של
PgBouncerכדי להטמיע מאגר חיבורים, לנהל את החיבורים ביעילות ולהפחית את העומס על מכונות מסד הנתונים. - אימות והרשאה: גישה מאובטחת באמצעות שיטות נתמכות כמו אימות מבוסס-סיסמה ושילוב של Active Directory ו-Kerberos, לצד אמצעי בקרה מדויקים שמיושמים באמצעות מדיניות רשת ב-Kubernetes ותפקידים ב-PostgreSQL.
Networking
אתם יכולים להגדיר אשכולות של מסדי נתונים ב-AlloyDB Omni, שמנוהלים על ידי המשאב בהתאמה אישית DBCluster, לגישה פנימית או חיצונית.
למידע נוסף על אפשרויות הרשת של DBCluster, עיינו בחומר העזר בנושא DBCluster CRD.
קישוריות פנימית
כברירת מחדל, מכונות AlloyDB Omni נחשפות באמצעות שירות ClusterIP של Kubernetes. כך אפשר לוודא שהגישה למכונות תהיה רק לאפליקציות אחרות שפועלות באותו אשכול Kubernetes. אפשר למצוא את נקודת הקצה של המכונה הראשית בסטטוס DBCluster.
קישוריות חיצונית
כדי לאפשר חיבורים מחוץ לאשכול Kubernetes, מעדכנים את המפרט של DBCluster:
- הפעלת תנועה חיצונית: מגדירים את
spec.allowExternalIncomingTraffic: true, שבדרך כלל מקצה שירותLoadBalancer. - הטמעת אמצעי בקרה פרטניים: שימוש ב-
spec.primarySpec.dbLoadBalancerOptions. לדוגמה, ב-Google Cloud, מגדירים אתgcp.loadBalancerType: "External"כדי לקבל כתובת IP שאפשר לגשת אליה מהאינטרנט הציבורי.
הגבלת הגישה
כדי לאבטח חיבורים חיצוניים, משתמשים ב-spec.primarySpec.sourceCidrRanges כדי להגדיר רשימה של טווחי CIDR מותרים. המערכת חוסמת את כל החיבורים שמגיעים מכתובות IP מחוץ לטווחים האלה.
מאגר חיבורים עם PgBouncer
כדי לנהל את החיבורים ביעילות ולהפחית את העומס על המכונה, כדאי להשתמש ב-PgBouncer. אופרטור AlloyDB Omni מספק PgBouncer משאב בהתאמה אישית (CR) כדי לפשט את הפעולה הזו.
לפרטים מלאים על הגדרת PgBouncer, קראו את ההפניה ל-PgBouncer CRD.
פריסה והגדרות אישיות
יוצרים משאב PgBouncer ומפנים לאשכול מסד הנתונים ב-spec.dbclusterRef. הפרמטרים העיקריים ב-spec.parameters כוללים:
-
pool_mode: קובע מתי נעשה שימוש חוזר בחיבורים (session, transactionאוstatement). -
default_pool_size: חיבורי שרת לכל משתמש ומסד נתונים. -
max_client_conn: המספר המקסימלי של חיבורי לקוחות שמותרים. -
max_db_connections: מספר החיבורים המקסימלי שנפתחו למכונה של AlloyDB Omni.
חשיפת PgBouncer
אפשר להשתמש ב-spec.serviceOptions.type כדי לשלוט בחשיפה.
-
ClusterIP: גישה פנימית לאשכול בלבד. -
LoadBalancer: גישה חיצונית. אפשר להגביל את זה באמצעותspec.serviceOptions.loadBalancerSourceRangesבאמצעות בלוקים של CIDR.
אימות והרשאה
ב-AlloyDB Omni יש כמה שיטות לאימות זהויות ולבקרת גישה.
שיטות אימות
- מבוסס-סיסמה: אימות רגיל של שם משתמש וסיסמה ב-PostgreSQL. בדרך כלל סיסמת האדמין מסופקת באמצעות Kubernetes Secret, כמו שמוצג בדוגמה המלאה של DBCluster.
Active Directory ו-Kerberos: מנוהלים באמצעות
UserDefinedAuthenticationCR. הוא תומך בסנכרון של קבוצות GSSAPI ו-LDAP באמצעות:-
spec.keytabSecretRef: לקובצי keytab של Kerberos. -
spec.ldapConfiguration: למיפוי קבוצות ולהגדרות LDAP. -
spec.pgHbaEntries: כדי להגדיר כלליpg_hba.conf, לדוגמהgssאוldap.
מידע נוסף זמין בחומר העזר בנושא UserDefinedAuthentication CRD.
-
מבוסס-אישור (מתוכנן): תמיכה באימות אישור TLS ללא סיסמה מתוכננת לגרסה עתידית.
הרשאה ובקרת גישה
- מדיניות רשת ב-Kubernetes: הגדרת כללים ברמת ה-Pod כדי לאבטח את התנועה בין האפליקציות לבין Pods של AlloyDB Omni או
PgBouncer. - טווחי CIDR של המקור: הגבלת התנועה ברמת
LoadBalancer. - תפקידים ב-PostgreSQL: שימוש בתפקידים ובהרשאות רגילים של מסד נתונים כדי לנהל את הרשאות המשתמשים אחרי שהם מאומתים.
המאמרים הבאים
- כדי לראות את כל אפשרויות ההגדרה, עיינו בחומר העזר בנושא DBCluster CRD.
- איך פורסים מאגר חיבורים באמצעות PgBouncer CRD Reference
- הסבר על שילוב Active Directory ב-UserDefinedAuthentication CRD Reference
- ראו דוגמה פתורה של DBCluster.
- עיין בתיעוד של Kubernetes בנושא מדיניות רשת ב-Kubernetes.