- רשת: איך מגדירים אשכולות של מסדי נתונים ב-AlloyDB Omni לגישה פנימית באמצעות שירות Kubernetes
ClusterIPאו לגישה חיצונית באמצעותLoadBalancer, כולל איך להגביל תעבורה חיצונית באמצעות טווחי Classless Inter-Domain Routing (CIDR) של מקור. - איגום חיבורים: אפשר להשתמש במשאב המותאם אישית
PgBouncerכדי להטמיע איגום חיבורים לניהול יעיל של חיבורים ולהפחתת העומס על מופעי מסד הנתונים. - אימות והרשאה: גישה מאובטחת באמצעות שיטות נתמכות כמו שילוב של Active Directory ו-Kerberos, לצד בקרה מדויקת שמיושמת באמצעות מדיניות רשת של Kubernetes ותפקידים של PostgreSQL.
Networking
אתם יכולים להגדיר אשכולות של מסדי נתונים ב-AlloyDB Omni – שמנוהלים על ידי DBCluster משאב מותאם אישית – לגישה פנימית או חיצונית.
פרטים נוספים על אפשרויות הרשת של DBCluster זמינים במאמר DBCluster CRD Reference.
קישוריות פנימית
כברירת מחדל, מופעלת חשיפה של מופעי AlloyDB Omni באמצעות ClusterIP Service של 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 Reference.
פריסה והגדרה
יוצרים משאב 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 Reference.
-
מבוסס-אישור (מתוכנן): אנחנו מתכננים להוסיף תמיכה באימות אישור TLS ללא סיסמה בגרסה עתידית.
הרשאה ובקרת גישה
- כללי מדיניות של רשת Kubernetes: הגדרת כללים ברמת ה-Pod כדי לאבטח את התעבורה בין אפליקציות לבין AlloyDB Omni או קבוצות של
PgBouncerPod. - טווחים של CIDR של מקורות: הגבלת התנועה ברמה של
LoadBalancer. - תפקידים ב-PostgreSQL: משתמשים בהרשאות ובתפקידים רגילים במסד הנתונים כדי לנהל את הרשאות המשתמשים אחרי שהם מאומתים.
המאמרים הבאים
- כדאי לעיין בהפניה ל-CRD של DBCluster כדי לראות את כל אפשרויות ההגדרה.
- מידע נוסף על פריסת מאגר חיבורים עם הפניה ל-CRD של PgBouncer
- מידע נוסף על שילוב עם Active Directory זמין במאמר UserDefinedAuthentication CRD Reference.
- דוגמה מלאה מופיעה בקטע Full DBCluster Sample.
- אפשר לעיין במסמכי Kubernetes בנושא Network Policies.