Практичне завдання

Мета

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

Завдання

цільове рішення

  1. Автоматизувати створення секрету для Private Container Registry
  2. Доробити HELM chart + CI для деплойменту frontend
    1. Підкласти як ConfigMap конфігурацію frontend/src/assets/config.json з назвою домену що відповідає поточному хосту, на якому розгорнуто додаток під час запуску контейнера.
  3. Доробити HELM chart + CI для деплойменту backend
  4. Сконфігурувати backend для роботи з БД postgresql
  5. Налаштувати 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

Варіанти вирішення:

  1. Додати команду 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
  2. Створити маніфест secret.yaml з захардкодженним ключем у base64 та покласти його у директорію helm/app/templates, приклад
     apiVersion: v1
     kind: Secret
     metadata:
         name: docker-registry-app
     data:
         .dockerconfigjson: eyJodHRwczovL2luZGV4L ... J0QUl6RTIifX0=
     type: kubernetes.io/dockerconfigjson
    
  3. Правильний. Створити маніфест secret.yaml, створити Deploy token з доволом read_registry і покласти його у GitLab CI/CD Variable. Прокинути це знячення через .gitlab-ci.yml -> helmfile.yaml -> app/values.yaml -> helm/app/templates/secret.yaml

Опціональні завдання

  1. Автоматизувати деплоймент frontend у Google Cloud Storage
  2. Створити вручну бакет та написати CI для оновлення фронтенду
  3. Створити бакет за допомогою Teraform у CI та написати CI для оновлення фронтенду
  4. Налаштувати HTTPS

Надання відповіді

Результати надати у вигляді MR в Google Classroom з усіма необхідними файлами проекту та змінами

Посилання

  1. A Step-by-Step Guide and CI/CD Pipeline with Cloud Build to Host Your Static Website in Google Cloud Storage
  2. Create a Custom Domain CDN with Google
  3. Demo deploying a static site to Google Storage
  4. Kubernetes Traefik Ingress: 10 Useful Configuration Options

results matching ""

    No results matching ""