הפעלת Ingress באמצעות Cloud Service Mesh

במאמר הזה מוסבר איך להתקין את Cloud Service Mesh, שמגיע עם Ingress Gateway שהותקן מראש. בעזרת Cloud Service Mesh, אתם יכולים להגדיר משאב Kubernetes Ingress עבור פריסות אם אתם צריכים בקר Ingress. בנושא הזה מופיעה דוגמה שמראה איך להגדיר משאב לדוגמה של Deployment ו-Ingress.

ההתקנה של Cloud Service Mesh מורכבת משני חלקים עיקריים:

  1. התקנה של גרסה ספציפית של מישור הבקרה בניהול הלקוח ושל Ingress Gateway ב-Cloud Service Mesh.
  2. הוספת תווית לציון גרסה למרחבי השמות ופריסה מחדש של עומסי העבודה כדי להוסיף קובץ עזר חיצוני.

אם אתם צריכים להשתמש באובייקט Ingress באמצעות בקר Ingress, אתם לא צריכים להוסיף קובץ עזר חיצוני ל-Pods של עומס העבודה. אבל אם אתם רוצים ליהנות מהיתרונות של האבטחה ש-Cloud Service Mesh מספק, ואם אתם רוצים להשתמש ביכולות של ניתוב תנועה, אתם צריכים להוסיף את פרוקסי ה-sidecar.

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

לפני שמתחילים להשתמש ב-GKE on AWS, חשוב לוודא שביצעתם את המשימות הבאות:

  • מתקינים שירות ניהול.
  • יוצרים אשכול משתמשים.
  • כדי לרשום את האשכול ב-Connect, פועלים לפי השלבים במאמר חיבור לאשכול באמצעות מסוף Cloud.
  • מגדירים את האפשרות שימוש ב-Workload Identity עם Google Cloud באשכול.
  • אם לאשכולות המשתמשים שלכם יש גישה מוגבלת לאינטרנט, צריך לאפשר גישה לדומיינים הבאים של מאגרי קונטיינרים:

    • docker.io
    • quay.io
  • בספריית anthos-aws, משתמשים ב-anthos-gke כדי להחליף הקשר לאשכול המשתמשים.

    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    מחליפים את CLUSTER_NAME בשם אשכול המשתמש.

התקנה של Anthos Service Mesh

פועלים לפי השלבים במאמר בנושא התקנה של Cloud Service Mesh.

דוגמה ליצירת פריסה

בקטע הזה, מתקינים אפליקציה לדוגמה ויוצרים עבורה נקודת קצה של Ingress.

  1. יוצרים פריסה של hello-app ו-ClusterIP לפריסה. מעתיקים את קוד ה-YAML הבא לקובץ בשם hello-app.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: hello-app
      name: hello-app
    spec:
      selector:
        matchLabels:
          app: hello-app
      replicas: 3
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          containers:
          - name: hello
            image: "gcr.io/google-samples/hello-app:2.0"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: hello-app
      name: hello-app
    spec:
      type: ClusterIP
      selector:
        app: hello-app
      ports:
      - protocol: TCP
        port: 8080
        targetPort: 8080
    
  2. מחילים את קובץ ה-YAML על האשכול באמצעות הפקודה kubectl apply.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app.yaml
    
  3. יוצרים Kubernetes Ingress לאפליקציה לדוגמה. מעתיקים את קוד ה-YAML הבא לקובץ בשם hello-app-ingress.yaml

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      annotations:
        kubernetes.io/ingress.class: istio
      labels:
        app: hello-app
      name: hello-app
    spec:
      rules:
      - host:
        http:
          paths:
          - backend:
              serviceName: hello-app
              servicePort: 8080
    
  4. יוצרים את ה-Ingress על ידי החלת ההגדרה באמצעות kubectl apply.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app-ingress.yaml
    
  5. צריך לבדוק את הסטטוס של שער התשלומים עם kubectl get svc.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get ingress hello-app
    

    השדה ADDRESS צריך לכלול שם דומיין של ELB. אם ADDRESS הבעיה נמשכת pending, צריך לוודא שהתוויות של ה-VPC ושל רשת המשנה נכונות.

  6. אפשר להרכיב את המארח והיציאה כדי לבדוק את כתובת ה-URL של שער הכניסה. כדי לקבל את כתובת ה-URL של השער, מריצים את הפקודות הבאות:

    export INGRESS_URL=$(env HTTPS_PROXY=http://localhost:8118 \
    kubectl get ingress hello-app -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
    echo "Your hello-app Ingress URL is: http://"$INGRESS_URL
    

    הפקודה האחרונה מדפיסה את נקודת הקצה של ה-Ingress.

  7. אם יצרתם Ingress גלוי לכולם, תוכלו לראות את hello-app דף האינטרנט שמוגדר כברירת מחדל ב-curl על ידי כניסה לכתובת http://$INGRESS_URL/.

    curl $INGRESS_URL/
    

סידור וארגון

מסירים את הרכיבים hello-app באמצעות kubectl delete.

env HTTPS_PROXY=http://localhost:8118 \
  kubectl delete -f hello-app.yaml &&\
  kubectl delete -f hello-app-ingress.yaml

אם רוצים להסיר את Cloud Service Mesh, אפשר לעיין במאמר בנושא הסרת ההתקנה של Cloud Service Mesh.

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

למידע נוסף על: