Пользовательские образы создаются с помощью HashiCorp Packer версии 1.7.2 или выше и плагина с открытым исходным кодом. Упростить и ускорить создание образа можно с помощью шаблона «cce-image-builder».
В работе с CCE рекомендуется использовать стандартные образы узлов, которые поддерживаются сервисом по умолчанию. Они тестируются и своевременно обновляются. Это дает лучшую совместимость, стабильность и безопасность.
Если нужно создать собственный образ, используйте стандартные образы CCE.
В стандартных образах CCE предустановлены компоненты, от которых зависит работоспособность узлов. Версии компонентов зависят от версии кластера. Пользовательские образы не будут автоматически обновляться сервисом CCE.
Будьте внимательны при изменении параметров ядра, так как любое неправильное изменение приведет к снижению эффективности системы.
Параметры, изменение которых повлияет на производительность:
tcp_keepalive_time
tcp_max_tw_buckets
somaxconn
max_user_instances
max_user_watches
netdev_max_backlog
net.core.wmem_max
net.core.rmem_max
При изменении параметров ядра протестируйте модификацию в тестовой среде.
Когда создание образа завершено, удалите ресурсы, которые использовались для его создания. Вовремя освобождайте ненужные ресурсы, чтобы избежать дополнительных расходов.
Перед созданием образа:
Создайте виртуальную машину, с помощью которой будет создан образ. Рекомендуется выбрать CentOS 7 и привязать EIP. Внешний IP-адрес нужен для того, чтобы была возможность подключиться к серверу и установить Packer.
Убедитесь, что в группе безопасности открыт порт 22.
Следуйте инструкциям в этом разделе, чтобы избежать непредвиденных ошибок.
У вас должны быть привилегии суперпользователя для подключения к виртуальным машинам, созданным из стандартного образа.
В консоли CCE нажмите на название кластера.
В меню слева перейдите в раздел Nodes.
В правом верхнем углу нажмите Create Node Pool.
В блоке OS выберите Private Image.
Нажмите View CCE base image information.
Скопируйте Image ID нужного образа.
Создайте виртуальную машину с ОС CentOS 7. Она будет использоваться для создания образа.
Проверьте корректность установки Packer с помощью команды проверки версии:
packer -v
Если установка выполнена верно, на экране появится версия Packer.
Скачайте архив с шаблоном:
wget https://cce-custom-image.obs.ru-moscow-1.hc.sbercloud.ru/cce-image-builder.zip
Распакуйте архив:
unzip cce-image-builder.zip
Перейдите в созданный в результате распаковки каталог:
cd cce-image-builder
Каталог cce-image-builder содержит:
turbo-node.pkr.hcl — шаблон конфигурационного файла для создания образа.
scripts/* — скрипты для создания образа с помощью шаблона. Изменения в файлах могут привести к недоступности образа.
user-scripts/* — пользовательские скрипты. При создании образа они будут загружены на временный сервер и будут выполнены. В каталоге есть пример файла — example.sh.
user-packages/* — каталог с пользовательскими пакетами, который задан в шаблоне. При создании пользовательского образа, он автоматически загружается на временный сервер в каталог /tmp/example.package.
Задайте в шаблоне нужные параметры для создания образа. Конфигурационный файл cce-image-builder/turbo-node.pkr.hcl содержит данные, нужные для создания образа. Подробнее в официальной документации.
Описание файла turbo-node.pkr.hcl:
variables, variable
turbo-node.pkr.hcl определяет параметры, нужные для создания образа. Вы можете настроить параметры отталкиваясь от реального окружения.
packer
required_plugins определяет зависимости плагинов Packer, включая источник плагина и диапазон версий. При выполнении packer init плагин автоматически загружается и инициализируется:
packer {required_plugins {huaweicloud = {version = "= 0.4.0"source = "github.com/huaweicloud/huaweicloud"}}}
source
Ранее заданные переменные используются для автоматической конфигурации параметров, необходимых для создания ECS.
build
Скрипты выполняются сверху вниз. Поддерживаются такие модули, как модуль загрузки файлов и модуль оболочки выполнения скриптов. Скрипты и файлы хранятся в каталогах cce-image-builder/user-scripts и cce-image-builder/user-packages.
Пример:
build {sources = ["source.huaweicloud-ecs.builder"]# Example:provisioner "file" {source = "<source file path>"destination = "<destination file path>"}provisioner "shell" {scripts = ["<source script file: step1.sh>","<source script file: step2.sh>"]}provisioner "shell" {inline = ["echo foo"]}}
Настройте переменные окружения:
export REGION_NAME=xxxexport IAM_ACCESS_KEY=xxxexport IAM_SECRET_KEY=xxxexport ECS_VPC_ID=xxxexport ECS_NETWORK_ID=xxxexport ECS_SECGRP_ID=xxxexport CCE_SOURCE_IMAGE_ID=xxx
Переменные | Описание |
|---|---|
REGION_NAME | Регион, к которому принадлежит проект. В облаке Cloud.ru Advanced один регион — ru-moscow-1. |
IAM_ACCESS_KEY и IAM_SECRET_KEY | Access Key и Secret Access Key. Создайте пару ключей AK/SK и удалите их, когда образ будет создан. |
ECS_VPC_ID | VPC ID — идентификатор VPC. Используется временной виртуальной машиной ECS. Укажите идентификатор того VPC, в котором находится сервер-исполнитель.
Где найти в консоли
|
ECS_NETWORK_ID | Network ID — идентификатор сети.
Где найти в консоли
|
ECS_SECGRP_ID | Security Group ID — идентификатор группы безопасности. Используется временной виртуальной машиной. В правилах группы безопасности, которая используется сервером-исполнителем, должен быть разрешен входящий трафик по 22 порту, чтобы сервер-исполнитель смог подключиться к временному серверу.
Где найти в консоли
|
CCE_SOURCE_IMAGE_ID | CCE node image ID — актуальный идентификатор стандартного образа, используемого сервисом CCE. Получение Image ID. |
Сохраните значения по умолчанию для остальных параметров. Чтобы изменить значения, воспользуйтесь описанием переменных в файле turbo-node.pkr.hcl и задайте значения с помощью переменных окружения.
Например, если не указать AZ, зона доступности будет выбрана случайным образом. Если вам нужна конкретная зона доступности, настройте переменную окружения. Это применимо и для других параметров.
# export PKR_VAR_<variable name>=<variable value>export PKR_VAR_ecs_az=xxx
AZ1 — ru-moscow-1a
AZ2 — ru-moscow-1b
AZ3 — ru-moscow-1c
AZ5 — ru-moscow-1e
Настройте скрипты и файлы.
Скомпилируйте скрипты и файлы, ссылаясь на файл и модули оболочки, заданные в поле build в файле pkr.hcl. Сохраните скрипты и файлы в каталогах user-scripts и user-packages в cce-image-builder.
Будьте внимательны при изменении параметров ядра, так как любое неправильное изменение приведет к снижению эффективности системы.
Параметры, изменение которых повлияет на производительность:
tcp_keepalive_time
tcp_max_tw_buckets
somaxconn
max_user_instances
max_user_watches
netdev_max_backlog
net.core.wmem_max
net.core.rmem_max
При изменении параметров ядра протестируйте модификацию в тестовой среде.
Создайте кастомный образ узла. Создание займет 3–5 минут.
make image
В скрипте packer.sh:
Автоматический доступ к hashicorp.com с помощью Packer отключен по умолчанию в целях защиты конфиденциальности и безопасности:
export CHECKPOINT_DISABLE=false
Детализированные логи включены по умолчанию. Локальные логи сборки packer_{timestamp}.log указываются для того, чтобы логи могли быть упакованы в каталог var/log во время сборки. Если туда попадает конфиденциальная информация, отключите эту опцию.
export PACKER_LOG=1export PACKER_BUILD_TIMESTAMP=$(date +%Y%m%d%H%M%S)export PACKER_LOG_PATH="packer_$PACKER_BUILD_TIMESTAMP.log"
Когда образ будет создан, на экране появится сообщение «Builds finished».
Очистите файлы сборки на виртуальной машине, с помощью которой создавался образ. Особое внимание обратите на данные аутентификации в файле turbo-node.pkr.hcl:
Если данные для аутентификации временные, удалите виртуальную машину, на которой создавался образ.
Если данные для аутентификации собираются автоматически, настройте их автоматическое удаление.