خطای 503 و اسکریپت Lua


رودابه برای دیپلوی وب‌سرور خود، یک 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
Plain text

رودابه در ابتدا اقدام به نصب وب‌سرور با کمک اجرای دستور زیر می‌کند و وب‌سرور او با موفقیت نصب می‌شود.

extensionFromNameterminal
helm install nginx -f values.yaml ./
Bash

دقت داشته باشید رودابه برای دسترسی به وب‌سرور با آدرس chart1-example.local، در Helm Chart خود Ingress تعریف کرده است. حال او با دو مشکل مواجه است که در ادامه به شرح دقیق‌تر هرکدام می‌پردازیم.

مشکل اوّل🔗

رودابه با وارد کردن آدرس chart1-example.local در مرورگر خود وارد با خطای 503 مواجه می‌شود. به او کمک کنید تا این مشکل را حل کند.

مشکل دوّم🔗

رودابه بعد از برطرف کردن خطای 503 حال نیازمندی تازه‌ای از سمت تیم SEO به سوی او آمده تا تمامی کاراکترهای بزرگ در URL را به کاراکترهای کوچک تبدیل کند. برای حل این نیازمندی تابعی با زبان Lua بنویسید که تمامی کاراکترهای بزرگ در URL را به کاراکترهای کوچک تبدیل کند.

برای مثال اگر URL ورودی مانند زیر باشد:

/PRODUCT/bar-21-DEEP-bass/
Plain text

تابع شما باید URL زیر را برگرداند:

/product/bar-21-deep-bass/
Plain text

نکات تکمیلی🔗

  • تابع نوشته شده را در فایل lower.lua در بلوک set_by_lua_block قرار دهید.

  • فایل lower.lua را در مسیر /template/ingress.yaml در annotation زیر import کنید.

extensionFromNameterminal
nginx.ingress.kubernetes.io/server-snippet
Bash
  • جهت استفاده از kubernetes روی سیستم خود می‌توانید از Minikube استفاده نمایید.

  • برای نصب Ingress بر روی Minikube روی سیستم خود می توانید از دستور زیر استفاده نمایید.

extensionFromNameterminal
minikube addons enable ingress
Bash
  • جهت باز نمودن آدرس chart-example.local نیاز به تعریف رکورد DNS در سیستم شما می باشد. رکورد مورد نظر می بایست به IP آدرس کلاستر کوبر اشاره کند

  • جهت دریافت Ingress IP برای تعریف رکورد DNS می‌توانید از دستور زیر استفاده نمایید.

extensionFromNameterminal
kubectl get ingress
Bash

نحوه‌ی ارسال جواب🔗

تغییرات مورد نظر برای مشکل اوّل را بر روی Helm Chart مربوطه در فایل /template/answer.yaml اعمال کنید.

تابع Lua نوشته شده برای مشکل دوّم را در فایل lower.lua قرار دهید.

در نهایت پوشه helm-pg را zip کرده و ارسال کنید. توجه کنید که پس از extract کردن فایل zip شما، باید فایل lower.lua را ببینیم.

helm-pg
├── Chart.yaml
├── lower.lua
├── templates
│   └── ...
└── ...
Plain text
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.