Практичне завдання
Мета
Освоїти деплоймент статичних вебсайтів у хмару та у кластер. Зрозуміти роботу CORS та навчитися її обходити архітектурно.
Завдання

- Автоматизувати створення секрету для Private Container Registry
- Доробити HELM chart + CI для деплойменту frontend
- Підкласти як ConfigMap конфігурацію
frontend/src/assets/config.jsonз назвою домену що відповідає поточному хосту, на якому розгорнуто додаток під час запуску контейнера.
- Підкласти як ConfigMap конфігурацію
- Доробити HELM chart + CI для деплойменту backend
- Сконфігурувати backend для роботи з БД postgresql
- Налаштувати HTTPS
Рекомендації до виконання
Надання доступу до Private Container Registry
Для того щоб кластер мав змогу скачувати імеджі з https://gitlab.production-ready.dev/courses/devops-junior-5/deployment/container_registry, вам необхідно автоматизувати додавання секрету
Як це зробити описано на Stack Overflow - https://stackoverflow.com/questions/49629241/create-kubernetes-docker-registry-secret-from-yaml-file, більш детально механізм описано у документації Pull an Image from a Private Registry
Варіанти вирішення:
- Додати команду
kubectl -n conduit-$CI_COMMIT_REF_SLUG create secret docker-registry docker-registry-app --docker-server=registry.production-ready.dev --docker-username=gitlab+deploy-token-xx --docker-password=xxxу .gitlab-ci.yml, щоб створити секрет з назвоюdocker-registry-appякий буде містити логін/пароль для доступу до Private Container Registry на GitLab. Секрет повинен мати дозвілread_registry - Створити маніфест
secret.yamlз захардкодженним ключем у base64 та покласти його у директорію helm/app/templates, прикладapiVersion: v1 kind: Secret metadata: name: docker-registry-app data: .dockerconfigjson: eyJodHRwczovL2luZGV4L ... J0QUl6RTIifX0= type: kubernetes.io/dockerconfigjson - Правильний. Створити маніфест
secret.yaml, створити Deploy token з доволомread_registryі покласти його у GitLab CI/CD Variable. Прокинути це знячення через.gitlab-ci.yml->helmfile.yaml->app/values.yaml->helm/app/templates/secret.yaml
Опціональні завдання
- Автоматизувати деплоймент frontend у Google Cloud Storage
- Створити вручну бакет та написати CI для оновлення фронтенду
- Створити бакет за допомогою Teraform у CI та написати CI для оновлення фронтенду
- Налаштувати HTTPS
Надання відповіді
Результати надати у вигляді MR в Google Classroom з усіма необхідними файлами проекту та змінами