رودابه برای دیپلوی وبسرور خود، یک Helm Chart نوشته است که یک deployment با ایمیج Nginx ایجاد میکند. در Helm Chart مورد نظر برای دسترسی به وب سرور از Ingress استفاده شده است.
برای دانلود پروژه اولیه روی این لینک کلیک کنید. ساختار پروژه اولیه به این صورت است:
helm-pg
├── Chart.yaml
├── lower.lua
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── answer.yaml
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
رودابه در ابتدا اقدام به نصب وبسرور با کمک اجرای دستور زیر میکند و وبسرور او با موفقیت نصب میشود.
helm install nginx -f values.yaml ./
دقت داشته باشید رودابه برای دسترسی به وبسرور با آدرس chart1-example.local
، در Helm Chart خود Ingress تعریف کرده است. حال او با دو مشکل مواجه است که در ادامه به شرح دقیقتر هرکدام میپردازیم.
مشکل اوّل
رودابه با وارد کردن آدرس chart1-example.local
در مرورگر خود وارد با خطای 503 مواجه میشود. به او کمک کنید تا این مشکل را حل کند.
مشکل دوّم
رودابه بعد از برطرف کردن خطای 503 حال نیازمندی تازهای از سمت تیم SEO به سوی او آمده تا تمامی کاراکترهای بزرگ در URL را به کاراکترهای کوچک تبدیل کند. برای حل این نیازمندی تابعی با زبان Lua بنویسید که تمامی کاراکترهای بزرگ در URL را به کاراکترهای کوچک تبدیل کند.
برای مثال اگر URL ورودی مانند زیر باشد:
/PRODUCT/bar-21-DEEP-bass/
تابع شما باید URL زیر را برگرداند:
/product/bar-21-deep-bass/
نکات تکمیلی
-
تابع نوشته شده را در فایل
lower.lua
در بلوکset_by_lua_block
قرار دهید. -
فایل
lower.lua
را در مسیر/template/ingress.yaml
در annotation زیر import کنید.
nginx.ingress.kubernetes.io/server-snippet
-
جهت استفاده از kubernetes روی سیستم خود میتوانید از Minikube استفاده نمایید.
-
برای نصب Ingress بر روی Minikube روی سیستم خود می توانید از دستور زیر استفاده نمایید.
minikube addons enable ingress
-
جهت باز نمودن آدرس
chart-example.local
نیاز به تعریف رکورد DNS در سیستم شما می باشد. رکورد مورد نظر می بایست به IP آدرس کلاستر کوبر اشاره کند -
جهت دریافت Ingress IP برای تعریف رکورد DNS میتوانید از دستور زیر استفاده نمایید.
kubectl get ingress
نحوهی ارسال جواب
تغییرات مورد نظر برای مشکل اوّل را بر روی Helm Chart مربوطه در فایل /template/answer.yaml
اعمال کنید.
تابع Lua نوشته شده برای مشکل دوّم را در فایل lower.lua
قرار دهید.
در نهایت پوشه helm-pg
را zip کرده و ارسال کنید. توجه کنید که پس از extract کردن فایل zip شما، باید فایل lower.lua
را ببینیم.
helm-pg
├── Chart.yaml
├── lower.lua
├── templates
│ └── ...
└── ...
ارسال پاسخ برای این سؤال