Обзор
Метаданные — это служебная и пользовательская информация, которая описывает основные характеристики виртуальных машин (ВМ), представленная в формате «ключ-значение». К метаданным относятся, например, идентификатор ВМ, имя хоста, внешний IP-адрес и т.п.
Изнутри каждой ВМ доступен специализированный сервис, с помощью которого получить метаданные в формате Google Compute Engine.
Чтобы получить метаданные ВМ, подключитесь к ней по SSH и выполните GET-запрос на IP-адрес 169.254.169.254:
curl http://169.254.169.254/computeMetadata/v1/instance/?recursive=true -H "Metadata-Flavor:Google" | jqВ результате выполнения запроса вы получите метаданные в формате JSON. Для отображения метаданных в удобном для чтения виде в примере используется утилита jq.
Запрашивать метаданные изнутри ВМ могут все авторизованные пользователи. Ограничить доступ к метаданным для отдельных пользователей или групп пользователей нельзя.
Получение метаданных ВМ с помощью токена сервисного аккаунта
Для работы с метаданными удобно использовать сервисный аккаунт, привязанный к ВМ. После привязки сервисного аккаунта его токен поступает в метаданные ВМ, а также автоматически обновляется раз в 12 часов. Вы можете выполнять запросы к API облака, используя этот токен. Это позволяет избежать хранения ключей или токенов на диске ВМ и упрощает автоматизацию процессов в облаке.
Примечание
К виртуальной машине можно привязать только один сервисный аккаунт.
Вы также можете заменить привязанный сервисный аккаунт, или отвязать его от ВМ. После отвязки сервисного аккаунта его токен не будет доступен в метаданных ВМ. При этом полученный ранее токен будет действителен, пока не истечет срок его действия.
Привязка сервисного аккаунта и автоматизация получения токена позволит вам реализовать сценарии:
- Интеграция с Object Storage. Приложение получает доступ к Object Storage для чтения конфигураций, загрузки файлов или создания резервных копий без встраивания токенов в исходный код или образы.
- Построение процессов CI/CD. Build-сервер собирает Docker-образы и загружает их в Artifact Registry через
docker pushбез выполненияdocker login, а Production-серверы скачивают образы черезdocker pull. - Управление секретами через Certificate Manager. Приложение читает пароли к базам данных, токены и сертификаты из Certificate Manager без их хранения в исходном коде или переменных окружения. Приложение обращается к API с автоматической ротацией и версионированием через сервисный аккаунт.
- Автоматическое масштабирование и управление жизненным циклом. Виртуальные машины автоматически регистрируются в Load Balancer, подключают дополнительные диски и выполняют Graceful Shutdown при масштабировании вниз через сервисный аккаунт с правами на управление сетевыми и вычислительными ресурсами.
Дополнительно, привязка сервисного аккаунта к ВМ упростит процесс инициализации MWS CLI.
Подробнее о привязке сервисного аккаунта и работе с его токеном читайте в практическом руководстве.
Ключи метаданных
Ключ | Описание | Пример значения |
|---|---|---|
id | Уникальный идентификатор ВМ | projects/my-project/virtualMachines/my-vm |
name | Имя ВМ | my-vm |
zone | Зона доступности ВМ | ru-central1-a |
hostname | Имя хоста | my-vm.my-project.c.mws |
disks | Список индексов дисков, подключенных к ВМ | 0/ |
disks/<индекс диска>/device-name | Имя диска в рамках ВМ | my-disk |
disks/<индекс диска>/device-name/index | Индекс диска | 0 |
disks/<индекс диска>/device-name/type | Тип диска | nbs-pl2 |
disks/<индекс диска>/device-name/mode | Режим работы диска: только чтение (READ_ONLY) или чтение-запись (READ_WRITE) | READ_WRITE |
network-interfaces | Индекс сетевого интерфейса | 0 |
network-interfaces/0/access-configs/0/external-ip | Внешний IP-адрес ВМ | 203.0.113.10 |
network-interfaces/0/access-configs/0/type | Способ назначения внешнего IP-адреса | ONE_TO_ONE_NAT |
network-interfaces/0/access-configs/0/mac | MAC-адрес сетевого интерфейса | 00:00:5E:12:34:56 |
network-interfaces/0/access-configs/0/network | Имя сети, в которой функционирует ВМ | my-network |
attributes | Дополнительные атрибуты, назначаемые пользователем | environment:test |
attributes/user-data | Скрипты, используемые для настройки ВМ при первом запуске | #cloud-config\nusers: \n - name: user\n groups: sudo\n shell: /bin/bash\n sudo: 'ALL=(ALL) NOPASSWD:ALL'\n ssh_authorized_keys:\n - ssh-ed25519 <SSH-ключ> |
Также получить список ключей метаданных, доступных изнутри ВМ, можно с помощью запроса:
curl http://169.254.169.254/computeMetadata/v1/instance/ -H "Metadata-Flavor:Google"