במאמר הזה מוסבר איך להפעיל לקוחות שאינם SNI, לקוחות HTTP ושילוב של שניהם לשימוש ב-Apigee hybrid.
איך מגדירים לקוח שאינו SNI
בקטע הזה מוסבר איך להפעיל תמיכה בלקוחות שאינם SNI (Server Name Indication) ב-Apigee hybrid. לקוח שאינו SNI משתמש ביציאה 443, והוא נדרש אם רוצים לשלב מופעי זמן ריצה היברידיים עם Cloud Load Balancing ב-Google Cloud או עבור לקוחות שלא תומכים ב-SNI.- יוצרים הגדרת משאב מותאם אישית (CRD) של ApigeeRoute. מוודאים שהערך של
enableNonSniClientמוגדר ל-true:apiVersion: apigee.cloud.google.com/v1alpha1 kind: ApigeeRoute metadata: name: route_name namespace: apigee spec: hostnames: - "*" ports: - number: 443 protocol: HTTPS tls: credentialName: credential_name mode: SIMPLE #optional minProtocolVersion: TLS_AUTO selector: app: apigee-ingressgateway enableNonSniClient: true
כאשר:
- route_name הוא השם שאתם נותנים ל-CRD.
- credential_name הוא השם של סוד Kubernetes שפרסו באשכול ומכיל את פרטי הכניסה של TLS עבור המארח הווירטואלי. אפשר למצוא את שם אמצעי האימות באמצעות הפקודה הבאה:
kubectlkubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
- הערך של
hostnamesחייב להיות התו הכללי לחיפוש '*'.
- פותחים את קובץ ההגדרות ששולטות על ההגדרות של המשתמשים ומבצעים את השינוי שמתואר בשלב הבא.
- לכל קבוצת סביבות, מוסיפים את השם של ApigeeRoute למאפיין
additionalGateways. לדוגמה:virtualhosts: - name: default sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem additionalGateways: ["route_name"] - שומרים את קובץ ה-CRD. לדוגמה:
ApigeeRoute.yaml - מחילים את ה-CRD על האשכול:
kubectl apply -f ApigeeRoute.yaml -n apigee
- החלת השינוי על
virtualhosts:$APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT
הערות שימוש
- מה קורה אם באשכול יש יותר מארגון אחד?
מכיוון שהכניסה היא ברמת האשכול עבור יציאה נתונה (443), ויכול להיות רק זוג אחד של מפתח/אישור עבור ApigeeRoute CRD, כל הארגונים חייבים לשתף את אותו זוג של מפתח/אישור.
- מה קורה אם באשכול יש יותר מקבוצת סביבות אחת. האם זה יעבוד
אם למארחים הווירטואליים יש את אותו צמד מפתח/אישור?
כל שמות המארחים בכל קבוצות הסביבות חייבים להשתמש באותו צמד מפתח/אישור.
- למה אנחנו יוצרים ApigeeRoute במקום Gateway?
אפשר לאמת ApigeeRoutes באמצעות Apigee, אבל אי אפשר לאמת Gateway (ה-CRD של Istio). מבחינה טכנית, אפילו Gateway יכול לעבוד, אבל אנחנו יכולים למנוע טעויות אפשריות בהגדרה (באמצעות webhook של אימות).
הפעלת לקוחות HTTP
בקטע הזה מוסבר על תמיכה בלקוחות HTTP לשימוש ב-Apigee hybrid.
- יוצרים הגדרת משאב מותאם אישית (CRD) של ApigeeRoute. לדוגמה:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: ApigeeRoute metadata: name: route_name namespace: apigee spec: hostnames: - "*" ports: - number: 80 protocol: HTTP selector: app: istio-ingressgateway enableNonSniClient: true
כאשר:
- route_name הוא השם שאתם נותנים ל-CRD.
- הערך של
hostnamesחייב להיות התו הכללי לחיפוש '*'.
- פותחים את קובץ ההגדרות ששולטות על ההגדרות של המשתמשים ומבצעים את השינוי שמתואר בשלב הבא.
- לכל קבוצת סביבות, מוסיפים את השם של ApigeeRoute למאפיין
additionalGateways. לדוגמה:virtualhosts: - name: default sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem additionalGateways: ["route_name"] - שומרים את קובץ ה-CRD. לדוגמה:
ApigeeRoute.yaml - מחילים את ה-CRD על האשכול:
kubectl apply -f ApigeeRoute.yaml -n apigee
- החלת השינוי על
virtualhosts:$APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT
הפעלת תמיכה בלקוחות שאינם SNI ולקוחות HTTP
בקטע הזה מוסבר איך להפעיל גם לקוחות שאינם SNI (יציאה 443) וגם לקוחות HTTP (יציאה 80) לשימוש ב-Apigee hybrid.
- יוצרים הגדרת משאב מותאם אישית (CRD) של ApigeeRoute. לדוגמה:
apiVersion: apigee.cloud.google.com/v1alpha1 kind: ApigeeRoute metadata: name: route_name namespace: apigee spec: hostnames: - "*" ports: - number: 443 protocol: HTTPS tls: credentialName: credential_name mode: SIMPLE #optional minProtocolVersion: TLS_AUTO - number: 80 protocol: HTTP selector: app: istio-ingressgateway enableNonSniClient: true
כאשר:
- route_name הוא השם שאתם נותנים ל-CRD.
- הערך של
hostnameחייב להיות התו הכללי לחיפוש '*'. - credential_name הוא השם של סוד Kubernetes שפרסו באשכול ומכיל את פרטי הכניסה של TLS עבור המארח הווירטואלי. אפשר למצוא את שם אמצעי האימות באמצעות הפקודה הבאה:
kubectlkubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
- פותחים את קובץ ההגדרות ששולטות על ההגדרות של המשתמשים ומבצעים את השינוי שמתואר בשלב הבא.
- לכל קבוצת סביבות, מוסיפים את השם של ApigeeRoute למאפיין
additionalGateways. לדוגמה:virtualhosts: - name: default sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem additionalGateways: ["route_name"] - שומרים את קובץ ה-CRD. לדוגמה:
ApigeeRoute.yaml - מחילים את ה-CRD על האשכול:
kubectl apply -f ApigeeRoute.yaml -n apigee
- החלת השינוי על
virtualhosts:$APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT