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 شی برای کنترل مسیر نیاز به یک کنترل کننده ورودی دارد.
Kubernetes Ingress Controller
Ingress Controller معمولاً یک سرویس پروکسی مستقر در یک خوشه است.
این چیزی غیر از این نیست استقرار kubernetes برای این سرویس.
در زیر نمایش های Ingress Controler برای kubernetes موجود است.
- Nginx Ingress Controller (Community & From Nginx Inc)
- Traefik
- HAproxy
- 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.yamlvi 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 دسترسی پیدا کنید (جایگزین آن شوید نام دامنه شما) ، می توانید به برنامه نمونه مستقر ما دسترسی داشته باشید.