آموزش نصب و پیکربندی Cilium در Kubernetes – بخش ۴

cilium
در ادامه ی سلسه مطلب «آموزش نصب و پیکربندی Cilium در Kubernetes» ، اکنون در قسمت چهارم از این مجموعه قصد داریم تا اجرای سیاست های اجرایی
Identity-Aware و HTTP-Aware یا همان

Identity-Aware and HTTP-Aware Policy Enforcement را توضیح دهیم.

در این مرحله قصد داریم سیاست Identity-Aware و HTTP-Aware را انجام دهیم. به همین خاطر از مثال جنگ ستارگان (Star Wars) استفاده خواهیم کرد که شامل سه application به صورت microservice با نام های deathstar, tiefighter و xwing می باشد.

Deathstar یک HTTP webservice بر روی پورت 80 اجرا می کند که بوسیله Kubernetes Service ترافیک را به صورت load-balance بر روی دو pod ازdeathstar ارسال می کند. Deathstar به فضا پیماهای امپراتوری خدمات فرود ارائه می دهد که آنها می توانند درخواست های فرود (landing port) خود را ارسال کنند.

پاد tiefighter نشان دهنده سرویس درخواست فرود در یک فضا پیمای امپراتوری معمولی است و xwing نشان دهنده خدمات مشابه در یک فضا پیمای متحد (alliance) است.

با استفاده از این مثال می توانیم سیاست های امنیتی مختلف را برای کنترل دسترسی به خدمات فرود deathstar آزمایش کنیم.

توپولوژی Application برای Cilium و Kubernetes به صورت زیر می باشد:

cilium_http_gsg

فایل http-sw-app.yaml شامل Kubernetes Deployment برای deathstar و دو pod برای tiefighter و xwing می باشد که هر کدام از آنها دارای Kubernetes label های (org=empire, class=deathstar), (org=empire, class=tiefighter) و (org=alliance, class=xwing) می باشند. همچنین شامل Kubernetes Service برای deathstar می باشد که ترافیک را به صورت load-balance به pod هایی با lable های (org=empire, class=deathstar) ارسال می کند.

اکنون برای deploy کردن application ها می توان دستور زیر را اجرا کرد:

kubectl create -f https://raw.githubusercontent.com/cilium/cilium/v1.12/examples/minikube/http-sw-app.yaml

یک نمونه خروجی از اجرای دستور گفته شده را در تصویر پایین مشاهده می کنید:

http-sw-app
Kubernetes اکنون pod ها و service ها را در پس زمینه deploy خواهد کرد. برای بررسی وضعیت آنها می توانید دستور زیر را اجرا کنید:

kubectl get pods,svc


یک نمونه خروجی از اجرای دستور گفته شده را در تصویر پایین مشاهده می کنید
:

check-http-sw-app

هر pod در Cilium به عنوان Endpoint نمایش داده می شود. می‌توانیم ابزار cilium را در داخل پاد Cilium برای فهرست کردن آنها فراخوانی کنیم:

kubectl -n kube-system get pods -l k8s-app=cilium
kubectl -n kube-system exec cilium-rwmwr -- cilium endpoint list


یک نمونه خروجی از اجرای دستورهای گفته شده را در تصویر پایین مشاهده می کنید
:

app-cilium endpoint list

همانطور که در خروجی تصویر بالا مشاهده می کنید، سیاست اجرایی یا همان policy enforcement برای ingress و egress همچنان در همه این pod ها غیرفعال است زیرا هنوز هیچ policy شبکه ای (network policy) وارد نشده است که هر یک از پادها را انتخاب کند.

بررسی دسترسی فعلی:

از دیدگاه سرویس deathstar، فقط فضا پیماهایی با برچسب org=empire مجاز به اتصال و درخواست فرود هستند. از آنجایی که ما هیچ قانون اجرایی (rules enforced) نداریم، هم xwing و هم tiefighter می توانند درخواست فرود کنند. برای آزمایش این مورد، از دستورات زیر استفاده کنید:

kubectl exec xwing -- curl -s -XPOST deathstar.default.svc.cluster.local/v1/request-landing
kubectl exec tiefighter -- curl -s -XPOST deathstar.default.svc.cluster.local/v1/request-landing


یک نمونه خروجی از اجرای دستورهای گفته شده را در تصویر پایین مشاهده می کنید
:

Check Current Access

ادامه دارد …

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.