אתם יכולים לאבטח את שער הכניסה באמצעות HTTPS על ידי שימוש ב-TLS פשוט, ולאפשר חיבורי HTTPS לדפי אינטרנט ספציפיים. בנוסף, אתם יכולים להפנות חיבורי HTTP ל-HTTPS.
פרוטוקול HTTPS יוצר ערוץ מאובטח ברשת לא מאובטחת, ומגן מפני התקפות מסוג MITM (אדם בתווך) ומצפין את התנועה בין הלקוח לשרת. כדי להכין שרת אינטרנט לקבלת חיבורי HTTPS, מנהל מערכת צריך ליצור אישור של מפתח ציבורי לשרת. כדי שדפדפן האינטרנט יקבל את האישור ללא אזהרה, הוא צריך להיות חתום על ידי רשות אישורים מהימנה.
עורכים את השער בשם external-gateway במרחב השמות kf באמצעות כלי העריכה המובנה של Kubernetes:
kubectl edit gateway -n kf external-gateway
- בהנחה שיש לכם אישור ומפתח לשירות, יוצרים סוד ב-Kubernetes עבור שער הכניסה. מוודאים ששם הסוד לא מתחיל ב-
istioאו ב-prometheus. בדוגמה הזו, הסוד נקראmyapp-https-credential. - פחות מ-
servers:- מוסיפים קטע ליציאה 443.
- בקטע
tls:, מגדירים אתcredentialNameלשם של ה-Secret שיצרתם. - בקטע
hosts:, מוסיפים את שם המארח של השירות שרוצים לאבטח באמצעות HTTPS. אפשר להגדיר את זה לכל הדומיין באמצעות תו כללי לחיפוש (למשל*.example.com) או להגביל את זה רק לשם מארח אחד (למשלmyapp.example.com).
- צריך להיות כבר קטע מתחת ל-
servers:עבור HTTP ביציאה 80. אם רוצים שכל תעבורת הנתונים תגיע כ-HTTP, משאירים את הקטע הזה בהגדרת השער. - כדי להפנות HTTP ל-HTTPS, מוסיפים את הערך
httpsRedirect: trueבקטעtlsשל שרת ה-HTTP. למידע נוסף, אפשר לעיין בתיעוד של Istio Gateway. שימו לב: אם מוסיפים את הקוד הזה לקטע שבוhostsמוגדר כ-*, המשמעות היא שכל התנועה מופנית ל-HTTPS. אם רוצים להפנות אוטומטית מ-HTTP ל-HTTPS רק לאפליקציה או לדומיין אחד, צריך להוסיף קטע HTTP נפרד שבו מציינים את ההפניה האוטומטית.
בדוגמה הבאה מוצג שער spec שמגדיר HTTPS עבור myapp.example.com ומפנה HTTP ל-HTTPS עבור המארח הזה:
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- myapp.example.com
port:
name: https
number: 443
protocol: HTTPS
tls:
credentialName: myapp-https-credential
mode: SIMPLE
- hosts:
- myapp.example.com
port:
name: http-my-app
number: 80
protocol: HTTP
tls:
httpsRedirect: true
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP