- tocdepth
2
Создание пользовательского образа узла
Пользовательские образы создаются с помощью 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.
Следуйте инструкциям в этом разделе, чтобы избежать непредвиденных ошибок.
У вас должны быть привилегии суперпользователя для подключения к виртуальным машинам, созданным из стандартного образа.
Получение Image ID
В консоли 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=xxx export IAM_ACCESS_KEY=xxx export IAM_SECRET_KEY=xxx export ECS_VPC_ID=xxx export ECS_NETWORK_ID=xxx export ECS_SECGRP_ID=xxx export 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, в котором находится сервер-исполнитель.
Где найти в консоли
Чтобы скопировать VPC ID:
В списке всех сервисов нажмите на Virtual Private Cloud.
Выберите VPC, в котором находится сервер-исполнитель.
В блоке VPC Information в поле ID скопируйте идентификатор.
ECS_NETWORK_ID
Network ID — идентификатор сети.
Где найти в консоли
Чтобы скопировать Network ID:
В списке всех сервисов нажмите Elastic Cloud Server.
В списке виртуальных машин нажмите на название сервера, который вы создали ранее.
Перейдите на вкладку Network Interfaces.
В поле Network ID скопируйте идентификатор сети.
ECS_SECGRP_ID
Security Group ID — идентификатор группы безопасности. Используется временной виртуальной машиной. В правилах группы безопасности, которая используется сервером-исполнителем, должен быть разрешен входящий трафик по 22 порту, чтобы сервер-исполнитель смог подключиться к временному серверу.
Где найти в консоли
Чтобы скопировать Security Group ID:
В списке всех сервисов нажмите Virtual Private Cloud.
В меню слева перейдите в раздел
.Нажмите на название группы безопасности сервера-исполнителя.
В поле ID скопируйте идентификатор.
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=1 export 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
:Если данные для аутентификации временные, удалите виртуальную машину, на которой создавался образ.
Если данные для аутентификации собираются автоматически, настройте их автоматическое удаление.
Была ли статья полезной?
для Dev & Test