שימוש באירועי TLS מנוהלים וב-HTTPS

בדף הזה מוסבר איך להשבית ולהפעיל מחדש את התכונה של אישורי TLS מנוהלים, שמספקת ומחדשת באופן אוטומטי אישורי TLS כדי לתמוך בחיבורי HTTPS ב-Knative serving.

אם רוצים להשתמש ב-HTTPS,

  • מאגר התגים ימשיך להאזין בעוד $PORT
  • צריך לבחור איך מספקים אישורי TLS:

    • שימוש באישורי TLS מנוהלים, שבהם אישורי TLS נוצרים באופן אוטומטי לפי הצורך, ומחודשים באופן אוטומטי. בדף הזה מתואר התכונה הזו, שזמינה בגרסאות הנתמכות של Google Kubernetes Engine.
    • שימוש באישורים משלכם, שבהם אתם אחראים להשגת האישורים ולחידוש שלהם. במצבים מסוימים, שמתוארים בקטע מגבלות, צריך להשתמש באישורים משלכם.
  • אם אתם משתמשים באישורים מנוהלים, אתם צריכים גם למפות את הדומיין המותאם אישית כדי להשתמש בתכונה של אישורים מנוהלים.

שימוש ב-HTTPS וב-HTTP

כברירת מחדל, אם משתמשים באישורים מנוהלים, אשכולות או שירותי Knative עם אישורים מנוהלים חשופים לתנועת HTTP ו-HTTPS. אם רוצים להשתמש רק בתעבורת HTTPS, אפשר להפעיל הפניות אוטומטיות של HTTPS כדי לחייב את כל התעבורה להשתמש רק ב-HTTPS.

פתרון בעיות

אם נתקלתם בבעיות בשימוש באישורי TLS מנוהלים, תוכלו לעיין בדף פתרון בעיות ב-TLS מנוהל.

מגבלות

השימוש בתכונה 'אישורי TLS מנוהלים' כפוף לשיקולים הבאים:

  • אישורי TLS מנוהלים מושבתים ולא נתמכים עבור אשכולות פרטיים של Knative serving ב- Google Cloud.
  • כדי להשתמש בתכונה של אישורים מנוהלים, השירות שלכם צריך להיות חשוף חיצונית: הוא לא יכול להיות שירות מקומי של אשכול או שירות שחשוף דרך ענן וירטואלי פרטי.
  • התכונה של אישורים מנוהלים פועלת רק עם Cloud Service Mesh. אין תמיכה בתוסף Istio או בהגדרות אחרות של Istio.
  • התכונה הזו משתמשת ב-Let's Encrypt, שמוגדרת בה מכסת אישורים ראשונית של 50 אישורי TLS בשבוע לכל דומיין רשום. כדי לבקש להגדיל את המכסה, אפשר לעיין במסמכי Let's Encrypt.
  • כשמריצים אשכול Knative serving בפלטפורמות אחרות, כמו on-prem או AWS, התכונה הזו מושבתת. כדי להשתמש בתכונה הזו, צריך לוודא שלקלאסטר יש גישה ל-Let's Encrypt, וששירות הכניסה (ingress) של Cloud Service Mesh חשוף לאינטרנט הציבורי.

לפני שמתחילים

ההוראות בדף הזה מבוססות על ההנחות הבאות:

השבתה של אישורי TLS מנוהלים ו-HTTPS עבור אשכול שלם

כדי להשבית את ה-TLS המנוהל באשכול, מעדכנים את ה-ConfigMap‏ config-domainmapping:

kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'

השבתה של TLS ו-HTTPS מנוהלים למיפוי דומיין ספציפי

במקרה הצורך, אפשר להשבית את ה-TLS המנוהל למיפוי דומיין ספציפי:

  1. מוסיפים את ההערה domains.cloudrun.com/disableAutoTLS: "true"`:

    kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true
  2. מוודאים ש-HTTPS לא פועל:

    curl https://DOMAIN

  3. מוודאים שנעשה שימוש ב-HTTP בשירות:

    gcloud run domain-mappings describe --domain DOMAIN

    מחליפים את DOMAIN בשם הדומיין שלכם, לדוגמה: your-domain.com

    בודקים את השדה url: בתוצאה של הפקודה שלמעלה: כתובת ה-URL צריכה להכיל http ולא https.

הפעלה מחדש של אישורי TLS מנוהלים ו-HTTPS

כדי להפעיל מחדש את TLS מנוהל:

  1. אם עדיין לא עשיתם זאת, צריך ליצור מיפוי דומיין לשירות ולעדכן את רשומת ה-DNS בהתאם להוראות שבדף מיפוי הדומיינים.

  2. כדי להפעיל אישורי TLS מנוהלים ו-HTTPS, מעדכנים את ConfigMap config-domainmapping:

    kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}'
  3. ממתינים כמה דקות אחרי שהפקודה מצליחה, ואז מוודאים שתכונת האישורים פועלת:

    kubectl get kcert

    אם האישור מוכן, אמורה להופיע הודעה דומה לזו:

    NAME              READY   REASON
    your-domain.com              True

    יכול להיות שיעברו 20 שניות עד 2 דקות עד שה-Kcert יהיה מוכן. נתקלתם בבעיות? כאן תוכלו לקרוא איך לפתור אותן.

אימות ההצלחה

  1. כדי לוודא שרשומת ה-DNS נכנסה לתוקף, מריצים את הפקודה:

    gcloud run domain-mappings describe --domain DOMAIN

    מחליפים את DOMAIN בשם הדומיין שלכם, לדוגמה: your-domain.com

  2. בודקים את השדה url: בתוצאה של הפקודה שלמעלה: כתובת ה-URL צריכה להכיל https ולא http.

  3. בודקים את כתובת ה-IP מהפקודה שלמעלה, שמופיעה בקטע resourceRecords:rrdata, ומשווים אותה לערך שמופיע כשמריצים את הפקודה host DOMAIN. הם צריכים להיות זהים.

הפעלת הפניות אוטומטיות ל-HTTPS בשירות Knative

אם משתמשים בתכונה של אישורי TLS מנוהלים, כברירת מחדל האשכול נחשף לתעבורת HTTP ו-HTTPS, מסיבות של תאימות לאחור. אם רוצים להפנות את כל התנועה לשימוש ב-HTTPS בלבד, אפשר להפעיל הפניות אוטומטיות ל-HTTPS עבור מיפוי דומיין קיים על ידי הפעלת הפקודה

kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled

כאשר DOMAIN הוא השם של מיפוי הדומיין.