*رودابه* برای دیپلوی وبسرور خود، یک *Helm Chart* نوشته است که یک *deployment* با ایمیج _Nginx_ ایجاد میکند. در *Helm Chart* مورد نظر برای دسترسی به وب سرور از *Ingress* استفاده شده است.
برای دانلود پروژه اولیه روی [این لینک](/problemset/assignments/4367/download_problem_initial_project/136631/) کلیک کنید. ساختار پروژه اولیه به این صورت است:
```
helm-pg
├── Chart.yaml
├── <mark class="red" title="شما مجاز به تغییر این فایل هستید.">lower.lua</mark>
├── <mark class="red" title="شما مجاز به تغییر این دایرکتوری هستید.">templates</mark>
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── answer.yaml
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
```
*رودابه* در ابتدا اقدام به نصب وبسرور با کمک اجرای دستور زیر میکند و وبسرور او با موفقیت نصب میشود.
```bash terminal terminal
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* کنید.
```bash terminal terminal
nginx.ingress.kubernetes.io/server-snippet
```
* جهت استفاده از *kubernetes* روی سیستم خود میتوانید از *Minikube* استفاده نمایید.
* برای نصب *Ingress* بر روی *Minikube* روی سیستم خود می توانید از دستور زیر استفاده نمایید.
```bash terminal terminal
minikube addons enable ingress
```
* جهت باز نمودن آدرس `chart-example.local` نیاز به تعریف رکورد *DNS* در سیستم شما می باشد. رکورد مورد نظر می بایست به *IP* آدرس کلاستر کوبر اشاره کند
* جهت دریافت *Ingress IP* برای تعریف رکورد *DNS* میتوانید از دستور زیر استفاده نمایید.
```bash terminal terminal
kubectl get ingress
```
## نحوهی ارسال جواب
تغییرات مورد نظر برای **مشکل اوّل** را بر روی *Helm Chart* مربوطه در فایل `/template/answer.yaml` اعمال کنید.
تابع *Lua* نوشته شده برای **مشکل دوّم** را در فایل `lower.lua` قرار دهید.
در نهایت پوشه `helm-pg` را *zip* کرده و ارسال کنید. توجه کنید که پس از *extract* کردن فایل *zip* شما، باید فایل `lower.lua` را ببینیم.
```
helm-pg
├── Chart.yaml
├── <mark class="red" title="شما مجاز به تغییر این فایل هستید.">lower.lua</mark>
├── <mark class="red" title="شما مجاز به تغییر این دایرکتوری هستید.">templates</mark>
│ └── ...
└── ...
```