הנושא הזה מיועד כדוגמה בלבד. במאמר מוסבר איך לקבל אישור TLS מרשות האישורים (CA) Let's Encrypt. השלבים האלה מובאים בעיקר כדוגמה שאפשר לפעול לפיה אם אין לכם דרך מוכנה אחרת להשיג צמד של תעודה/מפתח שאושר על ידי הרשות שמנפיקה את האישורים (CA). בדוגמה הזו נראה איך ליצור אישורים באמצעות רשות האישורים Let's Encrypt, לקוח Certbot ו-Cloud DNS של Google Cloud Platform.
איפה אפשר להשתמש באישורים האלה
צריך לספק אישורי TLS לשני שערים של Istio ingress שנחשפים מחוץ לאשכול:
| שער | דרישה ל-TLS |
|---|---|
| שער כניסה בזמן ריצה | אפשר להשתמש בזוג מפתחות/אישור עם חתימה עצמית או באישורי TLS מורשים. |
| שער כניסה ל-MART (אופציונלי אם לא משתמשים ב-Apigee Connect) | נדרש זוג מפתחות או אישור TLS מאומת או סוד של Kubernetes. |
דרישות
תצטרכו שם דומיין שהתקבל דרך רשם שמות דומיינים. אתם יכולים לרשום שם דומיין דרך Google Domains או דרך רשם דומיינים אחר שתבחרו.
הגדרת Cloud DNS
כדי לקבל אישורי TLS מורשים, צריך שיהיה לכם שם דומיין שעומד בדרישות. בשלבים הבאים מוסבר איך להשתמש ב-Google Cloud DNS כדי לקבל שם דומיין ולנהל את שרתי הדומיין.- פותחים את מסוף Google Cloud ונכנסים לחשבון.
- בוחרים את הפרויקט שבו מותקן Apigee Hybrid.
- אם עדיין לא עשיתם זאת, צריך להפעיל את Cloud DNS API. מידע נוסף זמין במאמר בנושא הפעלת ממשקי API.
- יוצרים כתובת IP סטטית:
- אם אתם משתמשים ב-GKE, פועלים לפי ההוראות במאמר
שמירת כתובת IP חיצונית סטטית כדי ליצור כתובות IP סטטיות שתהליכים חיצוניים יכולים להשתמש בהן כדי לתקשר עם ה-ingress של סביבת הריצה ההיברידית. אפשר לתת לכתובת כל שם שרוצים, למשל:
apigee-hybrid-runtime. בסיום, תשתמשו במספר ה-IP בהגדרת האשכול בשלב הבא. לדוגמה:34.66.75.196 - אם אתם משתמשים ב-Anthos GKE, אתם צריכים ליצור כתובת IP סטטית לפי ההוראות שב מסמכי התיעוד של Anthos GKE.
- אם אתם משתמשים ב-GKE, פועלים לפי ההוראות במאמר
שמירת כתובת IP חיצונית סטטית כדי ליצור כתובות IP סטטיות שתהליכים חיצוניים יכולים להשתמש בהן כדי לתקשר עם ה-ingress של סביבת הריצה ההיברידית. אפשר לתת לכתובת כל שם שרוצים, למשל:
- מקבלים את כתובת ה-IP החיצונית ששמרתם.
- יוצרים קבוצת רשומות לנקודת הקצה של תעבורת הנתונים הנכנסת (ingress) של Istio בזמן הריצה. זו הכתובת ליצירת קריאות API לשער ההיברידי. מזינים את כתובת ה-IP החיצונית שקיבלתם בשלב הקודם ומוסיפים קידומת לשם הדומיין, כמו
example-endpoint. הוראות מפורטות זמינות במאמר בנושא יצירת רשומה חדשה.- יוצרים אזור ציבורי מנוהל. הוראות מפורטות זמינות במאמר בנושא יצירת אזור ציבורי מנוהל.
- יוצרים קבוצת רשומות חדשה עם:
- שם DNS: השם של נקודת הקצה שאליה יתקשרו קריאות חיצוניות ל-API, כמו
api-servicesאוexample-endpoint - סוג רשומת המשאבים: A
- TTL ו-TTL Unit: מאשרים את ברירות המחדל
- כתובת IP: כתובת ה-IP הסטטית שיצרתם.
- שם DNS: השם של נקודת הקצה שאליה יתקשרו קריאות חיצוניות ל-API, כמו
- בתצוגה פרטי האזור יופיעו ארבעה שרתי DNS כנתוני NS עבור האזור החדש. מעתיקים את נתוני רשומת ה-DNS, כמו בדוגמה הבאה:

- חוזרים לדף הדומיין אצל הרשם (לדוגמה, Google Domains).
- בוחרים את הדומיין.
- בוחרים באפשרות DNS.
- בקטע Name Servers (שרתי שמות), לוחצים על Edit (עריכה).
מזינים את שרתי השמות של הדומיין שהעתקתם מהדף Network Services Cloud DNS (שירותי רשת Cloud DNS). לדוגמה:

מעכשיו, מערכת Google Cloud DNS תנהל את רשומות ה-DNS של הדומיין שלכם.
התקנה של Certbot במכונה וירטואלית
אחרי שמגדירים את Cloud DNS לניהול שרתי הדומיין, מתקינים את לקוח Certbot עם התוסף dns_google במכונה וירטואלית ב-Cloud. הלקוח מאפשר לכם לקבל אישורים מורשים לדומיין מנקודת קצה של Let's Encrypt.
- פותחים את מסוף Google Cloud ונכנסים לחשבון שיצרתם בשלב 1: יצירת חשבון Google Cloud.
- בוחרים את הפרויקט שיצרתם בשלב 2: יצירת פרויקט ב-Google Cloud.
- בוחרים באפשרות IAM & admin > Service accounts (ניהול הרשאות גישה (IAM) ואדמין > חשבונות שירות).
בתצוגה Service accounts מוצגת רשימה של חשבונות השירות של הפרויקט.
- כדי ליצור חשבון שירות חדש, לוחצים על +יצירת חשבון שירות בחלק העליון של התצוגה.
מוצג התצוגה פרטים של חשבון שירות.
- בשדה Service account name, מזינים את השם של חשבון השירות.

אופציונלי: מוסיפים תיאור בשדה תיאור חשבון השירות. התיאורים עוזרים לזכור למה משמש חשבון שירות מסוים.
- לוחצים על יצירה.
מערכת Google Cloud יוצרת חשבון שירות חדש ומציגה את התצוגה הרשאות של חשבון השירות. משתמשים בתצוגה הזו כדי להקצות תפקיד לחשבון השירות החדש.
- לוחצים על הרשימה הנפתחת Select a role.
- בוחרים בתפקיד Project Owner.
- לוחצים על Continue.
- לוחצים על סיום.
- במסוף Google Cloud , בוחרים באפשרות Compute Engine > VM Instances.
- יוצרים מופע של מכונה וירטואלית בשם certmanager.
- בקטע Boot Disk, בוחרים באפשרות CentOS7 ומזינים 20GB עבור כונן SSD קבוע.
- מגדירים את חשבון השירות לזה שיצרתם למעלה.
- מתקינים את Certbot ואת הפלאגין dns_google במכונה ומריצים את לקוח Certbot:
sudo su -yum -y install yum-utilsyum install certbot -yyum install certbot-dns-google -ycertbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directoryלדוגמה:
sudo su -yum -y install yum-utilsyum install certbot -yyum install certbot-dns-google -ycertbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory - עכשיו אפשר למצוא את קובצי האישור והמפתח הפרטי המורשים בספרייה הזו:
cd /etc/letsencrypt/live/your_domain_name/לדוגמה:
cd /etc/letsencrypt/live/apigee-hybrid-docs.netlscert.pem chain.pem fullchain.pem privkey.pem README - מעתיקים את הקבצים
fullchain.pemו-privkey.pemלמחשב המקומי. - אופציונלי: יוצרים סוד של Kubernetes עם צמד האישורים/מפתחות. אפשר לעיין בהוראות שבאפשרות 2: סוד של Kubernetes במאמר הגדרת TLS ו-mTLS ב-Istio Ingress.
- מעדכנים את קובץ ההחלפות כך שיצביע על האישור ועל המפתח הפרטי.
לדוגמה:
... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json virtualhosts: - name: my-env-group sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem" sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem" mart: # Assuming you are not using Apigee Connect nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-runtime sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem" sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem" replicaCountMin: 1 replicaCountMax: 1
או אם משתמשים בסודות של Kubernetes:
... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json virtualhosts: - name: my-env-group tlsMode: SIMPLE # Note: SIMPLE is the default, MUTUAL is also an available value. sslSecret: myorg-test-policy-secret" mart: # Assuming you are not using Apigee Connect nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-runtime sslSecret: myorg-test-policy-secret" replicaCountMin: 1 replicaCountMax: 1 ...
- מחילים את השינויים:
אם שיניתם את ההגדרה של
mart, צריך להחיל את השינויים:apigeectl apply -f your_overrides_file --all-envs
אם שיניתם את ההגדרה של
envs, צריך להחיל את השינויים:apigeectl apply -f your_overrides_file --all-envs
בדיקת ההגדרות
פריסה ובדיקה של שרת proxy. מידע נוסף מופיע במאמר סקירה כללית על יצירת שרת proxy ראשון של API.