T آموزش اینگستر Kubernetes برای مبتدیان – تیم امنیت اطلاعات

Kubernetes Ingress منبعی است برای اضافه کردن قوانین برای مسیریابی ترافیک از منابع خارجی به خدمات موجود در خوشه kubernetes.

علاوه بر این ، ما مسیریابی طولانی را برای استفاده از دروازه ورودی سرویس ISTIO در نظر خواهیم گرفت.

به طور معمول ، یک اسکن سفارشی Nginx یا HAproxy kubernetes به عنوان خدماتی جهت هدایت ترافیک خارجی به سرویس های داخلی CL ارائه می شود. استر ، جایی که قوانین مسیریابی در کوره ثابت خواهد شد و به عنوان پیکربندی اضافه می شود.

Ingress Kubenetes به همان روش عمل می کند ، به جز اینکه قوانین مسیریابی به عنوان یک شیء Ingress Kubernetes پشتیبانی خواهد شد. این پیکربندی قواعد مسیریابی پویا را بدون استفاده مجدد از قلب های پروکسی ، این مزیت بزرگ دارد.

Kubernetes Ingress Tutorial

برای شروع کار باید دو نکته کلیدی را درک کنید.

بیایید به هر یک از این مفاهیم نگاه کنیم.

Kubernetes Ingress:

Kubernetes Ingress منبع kubernetes شماست که با استفاده از آن می توانید قوانینی را برای مسیریابی ترافیک از یک منبع خارجی تا نقاط پایانی خدمات مختلف واقع در یک خوشه ایجاد کنید. [19659014] برای مسیریابی پ قوانین مشخص شده در مورد Ingress به یک کنترل کننده ورودی نیاز دارد.

هدف Ingress به شرح زیر است.

 apiVersion: extensions / v1beta1
نوع: Ingress
ابرداده:
  نام: امتحان
  فضای نام: dev
مشخصات:
  قوانین:
  - میزبان: test.apps.example.com
    http:
      مسیرها:
      - باطن:
          serviceName: سلام خدمت
          servicePort: 80 

تنظیم بالا بدان معنی است که کلیه تماس های مربوط به test.apps.example.com باید در سرویسی بنام سلام خدمت رسانی در فضای نام dev قرار گیرند.

موارد کلیدی که باید به درک شیء حمله کند. [19659019] شما باید در همان فضای نامی که خدمات در آن مستقر هستند ، قوانین Ingress را ایجاد کنید. شما می توانید در یک مکان نام دیگر که در آن شیء Ingress ندارید ، رفت و آمد را به یک سرویس هدایت کنید.
[19659010] Ingress شی برای کنترل مسیر نیاز به یک کنترل کننده ورودی دارد.

  • ترافیک خارجی نخواهد داشت در API Ingress قرار می گیرند ، در عوض به خدمات کنترل می رسد
  • Kubernetes Ingress Controller

    Ingress Controller معمولاً یک سرویس پروکسی مستقر در یک خوشه است.

    این چیزی غیر از این نیست استقرار kubernetes برای این سرویس.

    در زیر نمایش های Ingress Controler برای kubernetes موجود است.

    1. Nginx Ingress Controller (Community & From Nginx Inc)
    2. Traefik
    3. HAproxy
    4. HAproxy 19659010] GKE Ingress Controller

    به طور معمول ، Nginx به عنوان کنترل کننده Ingress مورد استفاده قرار می گیرد.

    اینگونه می باشد که Ingress Controller Nginx کار می کند. در این مقاله از آموزش خواهیم دید. انواع مختلف ingre راه حل های پشتیبانی شده توسط Kubernetes.

    نحوه پیکربندی Ingress روی Kubernetes با استفاده از Nginx Controller

    دو کنترل کننده کنترل محصور از nginx وجود دارد

    • Nginx کنترل کننده کنترل از جامعه kubernetes
    • Nginx Contress Controller ما از کنترلر Nginx از اجتماع kubernetes استفاده خواهیم کرد.

      کنترل کننده Ingress به یک نام خاص ، حساب کاربری ، اتصالات نقش خوشه ای ، پیکربندی و غیره نیاز دارد.

      می توانید با استفاده از پرونده yaml ، همه اشیاء ذکر شده را ایجاد کنید.

      بیایید کنترلر ingress را با استفاده از پرونده اجباری.yaml از مخزن رسمی مستقر کنیم. ] این یک لیست مختصر از اشیاء kubernetes مورد نیاز برای کنترل Nginx است.

       kubectl اعمال شود -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yamlociation19659047.06.2012 مراحل را بررسی کنید آدرس کنترل کننده برای اطمینان از پیکربندی صحیح آن. 

       kubectl غلاف دریافت کنید -n ingress-nginx 

      پیکربندی سرویس LoadBalancer برای Ingress Control

      مرحله ایجاد یک سرویس از نوع Loadbalancer برای استقرار کنترلر nginx در خارج از خوشه است.

      مرحله 1: یک فهرست راهنما به صورت محلی ایجاد کنید و به آن فهرست بروید.

       mkdir ingress-استقرار و & cd ingress-استقرار 
      مرحله 2: یک فایل ایجاد کنید نام nginx-ingress.yaml

       vi nginx-ingress.yaml 

      مرحله 3: مطالب زیر را در پرونده کپی کنید.

      توجه:

      حاشیه نویسی تحت لامپ برای ادغام با استفاده از کنترلر nginx بسیار مهم است. [19659059] نوع: خدمات
      apiVersion: v1
      ابرداده:
        نام: ingress-nginx
        فضای نام: ingress-nginx
        برچسب ها:
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/part-of: ingress-nginx
      مشخصات:
        externalTrafficPolicy: محلی
        نوع: LoadBalancer
        انتخاب کننده:
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/part-of: ingress-nginx
        پورت ها:
          - نام: http
            بندر: 80
            targetPort: http
          - نام: https
            بندر: 443
            targetPort: https

      مرحله 4: خدمات ورودی را ایجاد کنید

       kubectl اعمال --f nginx-ingress.yaml 

      مرحله 5: اگر به یک متعادل کننده بار خارجی وصل شده است ، خدمات ایجاد شده را بررسی کنید.

     kubectl svc -n ingress-nginx 

    نام دامنه را به آدرس IP آدرس Loadbalancer

    برای کار تنظیمات Ingress ، ما باید نام دامنه را به آدرس IP متعادل کننده بار نقشه برداری کنیم.

    شما می توانید این کار را از دو طریق انجام دهید. .

    نقشه برداری DNS:

    شما می توانید یک دامنه را به طور مستقیم به عنوان یک رکورد به آدرس IP متعادل کننده بار نقشه برداری کنید.

    من این گزینه را دارم ، شما فقط می توانید یک دامنه برای کنترل کننده Ingress و ترافیک مسیر از چند طریق داشته باشید.

    به عنوان مثال

     www.example.com -> IP Loadbalancer 

    می توانید با استفاده از این مدل از مسیریابی اساسی استفاده کنید.

     http://www.example.com/app1
    http://www.example.com/app2
    http://www.example.com/app1/api
    http://www.example.com/app2/apiociation19659017.06.2012 نقشه برداری DNS:  

    اگر نقشه DNS وحشی را به یک متعادل کننده نقشه اختصاص می دهید ، ممکن است نقاط پایانی DNS پویا از طریق Ingress داشته باشید.

     *. Apps.example.com 

    بنابراین ، می توانید چندین زیر دامنه پویا از طریق یک کنترلر Ingress داشته باشید و هر DNS می تواند مسیریابی خاص خود را بر اساس مسیریابی اساسی داشته باشد.

     #URL one
     
    http://demo1.apps.example.com/api
    http://demo1.apps.example.com/api/v1
    http://demo1.apps.example.com/api/v2
     
    #URL دو
     
    http://demo2.apps.example.com/api
    http://demo2.apps.example.com/api/v1
    http://demo2.apps.example.com/api/v2ociation19659047-01 برای اهداف تظاهرات ، ما جستجوی DNS را به آدرس IP LoadBalancer نقشه برداری کردیم. 

    بسته به ارائه دهنده DNS شما ، می توانید این تنظیم را انجام دهید.

    تنظیم برنامه A

    برای اهداف آزمایش ، ما برنامه آزمایشی را مستقر می کنیم و سرویس ClusterIp را به آن اضافه می کنیم.

    مرحله 1: یک فضای نام با نام dev

     ایجاد کنید kubectl ایجاد namespace dev 

    مرحله 2: پرونده ای را با نام سلام ایجاد کنید. -app.yaml

    مرحله 3: مطالب زیر را کپی کرده و پرونده را ذخیره کنید.

     apiVersion: apps / v1
    نوع: استقرار
    ابرداده:
      نام: سلام-برنامه
      فضای نام: dev
    مشخصات:
      انتخاب کننده:
        لابلای مطابقت:
          برنامه: سلام
      ماکت: 3
      الگوی:
        ابرداده:
          برچسب ها:
            برنامه: سلام
        مشخصات:
          ظروف:
          - نام: سلام
            مرحله 4: با استفاده از kubectl 
    
     kubectl ایجاد -f hello-app.yaml 
    وضعیت استقرار را ایجاد کنید.

     kubectl get deployments -n dev 

    مرحله 5: پرونده ای به نام hello-app-service.yaml

    مرحله 6 ایجاد کنید: مطالب زیر را کپی کنید و پرونده را ذخیره کنید.

     apiVersion: v1
    نوع: خدمات
    ابرداده:
      نام: سلام خدمت
      فضای نام: dev
      برچسب ها:
        برنامه: سلام
    مشخصات:
      نوع: ClusterIP
      انتخاب کننده:
        برنامه: سلام
      پورت ها:
      - بندر: 80
        targetPort: 8080
        پروتکل: TCP 

    مرحله 7: با استفاده از kubectl یک سرویس ایجاد کنید.

     kubectl ایجاد -f hello-app-service.yaml 
    وضعیت سرویس را بررسی کنید

     kubectl get svc -n dev 

    یک شی ایجاد کنید [19659100] Ingress Kubernetes

    حالا بیایید یک شی Ingress ایجاد کنیم تا از طریق DNS به برنامه ما دسترسی پیدا کند.

    یک شی Ingress چیزی غیر از تنظیم قوانین مسیریابی نیست.

    اگر شما علاقه مند هستید که چگونه شیء ingress به کنترلر Nginx متصل شده است -> تحت کنترلر ورودی آن را به API ingress متصل کنید تا قوانین را بررسی کنید و به همین ترتیب پرونده nginx خود را به روز کنید.

    مرحله 1: پرونده ای با نام ingress.yaml

    مرحله 2: مطالب زیر را کپی کنید و پرونده را ذخیره کنید.

    test.apps.example.info را با نام دامنه خود جایگزین کنید. فرض بر این است که شما DNS را در قالب * .apps.example.info دارید.

     apiVersion: extensions / v1beta1
    نوع: Ingress
    ابرداده:
      نام: امتحان
      فضای نام: dev
    مشخصات:
      قوانین:
      - میزبان: test.apps.example.info
        http:
          مسیرها:
          - باطن:
              serviceName: سلام خدمت
              servicePort: 80 

    مرحله 3: هدف Ingress ایجاد شده برای تأیید پیکربندی را توصیف کنید.

     kubectl توصیف ingress -n dev 

    اکنون ، اگر می خواهید به دامنه test.apps.example.info دسترسی پیدا کنید (جایگزین آن شوید نام دامنه شما) ، می توانید به برنامه نمونه مستقر ما دسترسی داشته باشید.