סקירה כללית על חיבורים למערכות לניהול קונטיינרים

בוחרים גרסה של מאמר העזרה:

בסקירה הזו מתוארות ההגדרות הקריטיות של הקישור והגישה למסדי נתונים של AlloyDB Omni שנפרסו באשכול Kubernetes, ומוסבר איך ליצור קישוריות גמישה ומאובטחת. החיבור כולל את האזורים הבאים:

  • רשת: איך מגדירים אשכולות של מסדי נתונים ב-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: מנוהלים באמצעות UserDefinedAuthentication CR. התמיכה כוללת GSSAPI וסנכרון קבוצות LDAP באמצעות:

    • spec.keytabSecretRef: עבור קובצי keytab של Kerberos.
    • spec.ldapConfiguration: למיפוי קבוצות ולהגדרות LDAP.
    • spec.pgHbaEntries: להגדרת כללי pg_hba.conf – לדוגמה, gss או ldap.

    מידע נוסף זמין במאמר UserDefinedAuthentication CRD Reference.

  • מבוסס-אישור (מתוכנן): אנחנו מתכננים להוסיף תמיכה באימות אישור TLS ללא סיסמה בגרסה עתידית.

הרשאה ובקרת גישה

  • כללי מדיניות של רשת Kubernetes: הגדרת כללים ברמת ה-Pod כדי לאבטח את התעבורה בין אפליקציות לבין AlloyDB Omni או קבוצות של PgBouncer Pod.
  • טווחים של CIDR של מקורות: הגבלת התנועה ברמה של LoadBalancer.
  • תפקידים ב-PostgreSQL: משתמשים בהרשאות ובתפקידים רגילים במסד הנתונים כדי לנהל את הרשאות המשתמשים אחרי שהם מאומתים.

המאמרים הבאים