Лаб.работа 13. Знакомство с GCP.

Цель работы

Целью работы является знакомство студентов с платформой облачных сервисов Google Cloud Platform.

В ходе работы студенты:

  • Получат опыт работы в веб-консоли.
  • Получат опыт работы с помощью интерфейса командной строки.
  • Получат опыт создания виртуального сервера.
  • Получат опыт создания облачного хранилища объектов (файлов).

Теоретическая часть

Google Cloud Platform (GCP) использует систему аутентификации на основе учетной записи Google. Вход в веб-консоль осуществляется через Google Cloud Console, где пользователи управляют облачными ресурсами. В отличие от AWS, где используется IAM с отдельными учетными записями для каждого пользователя, в GCP доступ регулируется через Google Identity and Access Management (IAM) с привязкой к Google-аккаунту.

После входа пользователи видят дашборд, где можно управлять проектами, ресурсами, мониторингом и биллингом. Консоль GCP напоминает AWS Management Console, но с упором на интеграцию с Google-сервисами. Для работы с GCP также можно использовать Google Cloud SDK (gcloud CLI), аналог AWS CLI, что позволяет автоматизировать управление ресурсами.

В GCP проект (Project) — это основная единица организации ресурсов, аналогичная AWS Account. Все ресурсы (виртуальные машины, базы данных, хранилища и т. д.) создаются внутри проекта. У каждого проекта есть уникальный идентификатор (Project ID), который используется в API-запросах и командной строке.

Для работы с платными ресурсами необходимо привязать Billing Account (биллинг-аккаунт) к проекту. В отличие от AWS, где платежная информация привязана к аккаунту, в GCP биллинг-аккаунт можно использовать сразу для нескольких проектов. Это упрощает управление расходами в крупных организациях.

Создание ресурсов в GCP похоже на AWS, но с некоторыми отличиями. Например, при создании виртуального сервера в AWS, используется EC2 Key Pair для SSH-доступа, однако в GCP можно войти через браузерную консоль или добавить SSH-ключи в Metadata проекта. Кроме того, в GCP при удалении виртуальной машины связанные диски не удаляются автоматически, в отличие от AWS, где корневой EBS том можно настроить на автоматическое удаление.

Таким образом, несмотря на схожесть с AWS, GCP имеет свои особенности, которые важно учитывать при работе с облачными ресурсами.

Практическая часть

Шаг 1. Получение доступа в веб-консоль

  1. Сообщите преподавателю Google-аккаунт (Gmail), который будет использоваться для работы в GCP. Дождитесь приглашения в проект, созданный преподавателем (IMI-SVFU). Приглашение будет отправлено на почту указанного аккаунта.

  2. Откройте почту Gmail и найдите письмо с приглашением в проект GCP. Примите приглашение, после чего вас перенаправит на страницу Google Cloud.

  3. Откройте в браузере Google Cloud Console по ссылке: https://console.cloud.google.com. Если требуется, подтвердите свою личность, войдя в аккаунт Google. Если вы входите в первый раз, то GCP попросит выбрать страну, выберите любую по своему усмотрению.

  4. В верхней части страницы, рядом с логотипом Google Cloud, нажмите на выпадающее меню выбора проекта и выберите проект, созданный преподавателем (IMI-SVFU).

  5. Самостоятельно ознакомьтесь с элементами интерфейса веб-консоли GCP.

Шаг 2. Создание виртуального сервера

  1. В меню слева выберите Compute Engine → VM Instances.

  2. Нажмите кнопку Create Instance (Создать инстанс).

    • Введите имя инстанса: <группа>-<фамилия>.
    • Выберите регион europe-north1 (Finland) либо europe-north2 (Stockholm).
    • Выберите тип инстанса:
      • Series: E2
      • Machine type: e2-small (2 vCPU, 2 GB RAM).
    • В разделе Data protection выберите No backups. Поскольку данный виртуальный сервер используется для учебных целей и не будет содержать важных данных, то нет смысла делать резервные копии его диска.
    • В разделе Firewall отметьте Allow HTTP traffic (Разрешить HTTP-трафик).
    • Нажмите Create и дождитесь создания виртуальной машины.
  3. В списке инстансов найдите созданную VM, нажмите SSH, чтобы открыть терминал во всплывающем окне браузере. Установите веб-сервер:

    • Обновите базу данных доступных пакетов:
       sudo apt update
      
    • Установите Nginx:
       sudo apt install -y nginx
      
    • Проверьте что сервер Nginx работает (выход по кноке Q):
       systemctl status nginx
      
    • Проверьте что сервер Nginx занимает TCP-порт 80:
       sudo ss --numeric --listening --processes --tcp
      
  4. Откройте в браузере внешний IP-адрес VM (его можно найти в списке инстансов) и убедитесь, что отображается стартовая страница Nginx.

  5. Вернитесь в терминал и запустите дополнительный веб-сервер:

    • Создайте файл index.html с произвольным сообщением:
       echo "Hello World!" > index.html
      
    • Запустите встроенный HTTP-сервер Python на порту 8080:
       python3 -m http.server 8080
      
  6. Разрешите доступ по альтернативному TCP-порту 8080:

    • В веб-консоли откройте свойства виртуального сервера (в списке инстансов нажмите гиперссылку на названии вашего инстанса). В верхней части нажмите на кнопку 🖉 Edit
    • В разделе Network interfaces → Firewalls → Network tags добавьте тег http-server-8080 и нажмите кнопку Save.
  7. В браузере откройте адрес http://[EXTERNAL_IP]:8080. Убедитесь, что отображается index.html с текстом вашего сообщения.

Шаг 3. Создание облачного хранилища файлов

  1. В меню слева выберите Cloud Storage → Buckets.
  2. Нажмите Create bucket (Создать бакет).
    • В разделе Get Started введите уникальное имя бакета: <Группа>-<Фамилия>.
    • В разделе Choose where to store your data выберите:
      • Location type: Region
      • Location: europe-north1
    • В разделе Choose a storage class for your data оставьте Standard (по умолчанию).
    • В разделе Choose how to control access to objects отключите галочку Enforce public access prevention on this bucket и оставьте Access control в режиме Uniform (по умолчанию).
  3. Нажмите Create, чтобы создать бакет.
  4. На локальном компьютере создайте файл index.html с произвольным содержимым.
  5. Нажмите Upload → Upload Files и загрузите созданный файл.

Шаг 4. Включение статического веб-хостинга

  1. В списке бакетов на строке с вашим бакетом нажмите кнопку и выберите Edit website configuration, в поле Index (main) page suffix введите index.html и нажмите Save.

  2. Откройте ваш бакет, перейдите во вкладку Permissions, в разделе View by principals нажмите Grant Access. В открывшейся справа панели:

    • В поле New Principals введите allUsers.
    • В разделе Role выберите Storage Object Viewer.
    • Нажмите Save и подтвердите, что делаете файлы общедоступными.
  3. Убедитесь что на вкладке Permissions, панель Public access имеет предупреждение Public to internet. Если вместо этого отображается Not public, то нажмите кнопку Revove Public Access Prevention и подтвердите отключение блокировки публичного доступа.

  4. На вкладке Objects в строке с файлом index.html найдите и скопируйте Public URL. Откройте URL в браузере и убедитесь, файл успешно открывается.

Шаг 5. Работа с интерфейсом командной строки

  1. В правой верхней части веб-консоли нажмите кнопку Activate Cloud Shell (либо нажмите последовательно клавиши G и S) и дождитесь открытия в нижней части окна панели с интерфейсом командной строки.

  2. Отобразите список созданных виртуальных серверов:
     gcloud compute instances list
    
  3. Зафиксируйте в списке свой сервер и зону доступности в которой он создан. Удалите созданный ранее сервер:
     gcloud compute instances delete <имя сервера> --zone <имя зоны>
    
  4. Отобразите список созданных бакетов:
     gcloud storage buckets list
    
  5. Удалите созданный ранее бакет:
     gcloud storage buckets delete <имя бакета>