• Русский
  • Загрузка пакетов

    Платформа предоставляет командную утилиту violet, которая используется для загрузки пакетов, скачанных из Marketplace в Customer Portal, на платформу.

    violet поддерживает загрузку следующих типов пакетов:

    • Operator
    • Cluster Plugin
    • Helm Chart

    Когда статус пакета в Cluster Plugins или OperatorHub отображается как Absent, для загрузки соответствующего пакета необходимо использовать эту утилиту.

    Процесс загрузки в violet в основном включает следующие шаги:

    1. Извлечение и получение информации из пакета
    2. Отправка образов в image registry
    3. Создание ресурсов Artifact и ArtifactVersion на платформе

    Загрузка инструмента

    Войдите в Customer Portal, перейдите на страницу Downloads и нажмите CLI Tools. Скачайте бинарный файл, соответствующий вашей операционной системе и архитектуре.

    После загрузки установите инструмент на сервер или ПК.

    Для Linux или macOS

    Для пользователей без прав root:

    # Linux x86
    sudo mv -f violet_linux_amd64 /usr/local/bin/violet && sudo chmod +x /usr/local/bin/violet
    # Linux ARM
    sudo mv -f violet_linux_arm64 /usr/local/bin/violet && sudo chmod +x /usr/local/bin/violet
    # macOS x86
    sudo mv -f violet_darwin_amd64 /usr/local/bin/violet && sudo chmod +x /usr/local/bin/violet
    # macOS ARM
    sudo mv -f violet_darwin_arm64 /usr/local/bin/violet && sudo chmod +x /usr/local/bin/violet

    Для пользователей root:

    # Linux x86
    mv -f violet_linux_amd64 /usr/bin/violet && chmod +x /usr/bin/violet
    # Linux ARM
    mv -f violet_linux_arm64 /usr/bin/violet && chmod +x /usr/bin/violet
    # macOS x86
    mv -f violet_darwin_amd64 /usr/bin/violet && chmod +x /usr/bin/violet
    # macOS ARM
    mv -f violet_darwin_arm64 /usr/bin/violet && chmod +x /usr/bin/violet

    Для Windows

    1. Скачайте файл и переименуйте его в violet.exe, либо используйте PowerShell для переименования:

      # Windows x86
      mv -Force violet_windows_amd64.exe violet.exe
    2. Запустите инструмент в PowerShell.

    Примечание: Если путь к инструменту не добавлен в переменные среды, при выполнении команд необходимо указывать полный путь.

    Предварительные требования

    Требования к правам доступа

    • Необходимо указать действительные учетные данные платформы: либо имя пользователя и пароль, либо токен платформы.
    • Для учетной записи свойство роли должно быть установлено в System, а имя роли должно быть platform-admin-system.

    Примечание: Если свойство роли вашей учетной записи установлено в Custom, вы не сможете использовать эту утилиту.

    Использование

    Общие параметры

    Несколько команд violet принимают следующие параметры. Сведения о конкретном использовании см. в разделах отдельных команд.

    Параметры подключения к платформе

    --platform-address <platform access URL>     # The access URL of the platform, e.g., "https://example.com"
    --platform-username <platform user>          # The username of the platform user
    --platform-password <platform password>      # The password of the platform user
    --platform-token <platform token>            # The platform access token; cannot be used together with username/password

    Чтобы создавать или управлять токенами платформы, войдите в Web Console платформы, откройте Profile > API Tokens и создайте токен с подходящим сроком действия. Подробности см. в API Authentication.

    WARNING

    Пользователи identity provider (IdP) должны использовать токен платформы. Вход с именем пользователя и паролем выполняет аутентификацию только через локальное хранилище пользователей платформы. Если ваша учетная запись создана во внешнем identity provider (например, LDAP или OIDC), вход с именем пользователя и паролем завершится ошибкой — вместо этого используйте --platform-token.

    Параметры image registry

    --dest-repo <image repository address>       # Specify the destination image repository address, e.g., "harbor.demo.io"
    --username <registry user>                   # The username of the specified image registry
    --password <registry password>               # The password of the specified image registry
    --no-auth                                    # Specify if the image registry does not require authentication
    --plain                                      # Specify if the image registry uses HTTP instead of HTTPS
    WARNING

    Ограничение для IPv6-адресов

    Для параметров --platform-address и --dest-repo:

    • Если используется IP-адрес (а не доменное имя), формат IPv6 НЕ поддерживается
    • Поддерживаются только адреса IPv4 или доменные имена

    violet show

    Перед загрузкой пакета используйте команду violet show, чтобы просмотреть его сведения.

    violet show topolvm-operator.v2.3.0.tgz
    Name: NativeStor
    Type: bundle
    Arch: [linux/amd64]
    Version: 2.3.0
    
    violet show topolvm-operator.v2.3.0.tgz --all
    Name: NativeStor
    Type: bundle
    Arch: []
    Version: 2.3.0
    Artifact: harbor.demo.io/acp/topolvm-operator-bundle:v3.11.0
    RelateImages: [harbor.demo.io/acp/topolvm-operator:v3.11.0 harbor.demo.io/acp/topolvm:v3.11.0 harbor.demo.io/3rdparty/k8scsi/csi-provisioner:v3.00 ...]

    violet list

    При обновлении платформы используйте violet list, чтобы вывести список установленных расширений и экспортировать результат в YAML-файл. Затем созданный файл можно загрузить в Alauda Cloud, чтобы можно было скачать необходимые пакеты расширений.

    violet list охватывает расширения с жизненным циклом Aligned или Agnostic. Плагины Core следуют за обновлением кластера и не управляются через violet list.

    Команда выводит следующие типы приложений:

    • ModulePlugin — плагины кластера, для которых тип жизненного цикла равен aligned или agnostic.
    • OperatorBundle — установленные Operator.
    • Chart — приложения Helm Chart, созданные на основе chart references.

    По умолчанию команда выводит содержимое YAML в stdout и записывает его в apps.yaml в текущем каталоге.

    violet list \
      --platform-address "https://example.com" \
      --platform-username "<platform_user>" \
      --platform-password "<platform_password>"

    Можно также выполнить аутентификацию с помощью токена платформы вместо имени пользователя и пароля:

    violet list \
      --platform-address "https://example.com" \
      --platform-token "<platform_token>"

    Чтобы экспортировать только приложения, установленные в определенных кластерах, укажите несколько имен кластеров через запятую:

    violet list \
      --platform-address "https://example.com" \
      --platform-token "<platform_token>" \
      --clusters "global,region1" \
      --output-file "./apps.yaml"

    Пример вывода:

    applications:
      topolvm-operator:
        displayName: NativeStor
        type: OperatorBundle
        installed:
          - clusterName: global
            version: 2.3.0
      log-center:
        displayName: Log Center
        type: ModulePlugin
        installed:
          - clusterName: region1
            version: v1.2.0

    Необязательные флаги

    --output-file <output file>                  # The path of the output plugin list file

    Сведения о параметрах подключения к платформе (--platform-address, --platform-username, --platform-password, --platform-token) см. в разделе Общие параметры.

    violet gc

    Используйте violet gc для очистки ресурсов Operator и Cluster Plugin, которые не установлены и жизненный цикл которых — Aligned или Agnostic. Команда удаляет ресурсы, которые больше не установлены или больше не соответствуют установленной версии.

    Команда может удалять следующие типы ресурсов:

    • Artifact — артефакты для неустановленных Operator.
    • ArtifactVersion — старые версии артефактов для установленных Operator. Текущий установленный CSV или версия сохраняется.
    • ModulePlugin — плагины кластера, которые не установлены ни в одном кластере.
    • ModuleConfig — устаревшие записи конфигурации плагинов кластера.

    violet gc определяет кандидатов на очистку, проверяя записи OperatorView и ModulePluginView в глобальном кластере.

    DANGER

    violet gc удаляет ресурсы из глобального кластера и не предоставляет режим dry-run или операцию отмены. Запускайте его только во время задокументированного окна обслуживания и перед использованием --clusters обязательно проверьте целевые кластеры.

    По умолчанию команда сканирует все кластеры, видимые пользователю платформы, и выводит сводку удаленных ресурсов.

    violet gc \
      --platform-address "https://example.com" \
      --platform-username "<platform_user>" \
      --platform-password "<platform_password>"

    Можно также выполнить аутентификацию с помощью токена платформы вместо имени пользователя и пароля:

    violet gc \
      --platform-address "https://example.com" \
      --platform-token "<platform_token>"

    Чтобы очистить только ресурсы, связанные с определенными кластерами, укажите несколько имен кластеров через запятую:

    violet gc \
      --platform-address "https://example.com" \
      --platform-token "<platform_token>" \
      --clusters "global,region1"

    Пример вывода:

    GC Summary:
    TYPE                 NAME                                               CLUSTER
    ------------------------------------------------------------------------------------------
    Artifact             opensearch-operator                                region1
    ArtifactVersion      opensearch-operator.v2.8.0                         region1
    ModuleConfig         log-center-default                                 global

    Если ресурсы не были удалены, команда выводит:

    No resources were deleted.

    Необязательные флаги

    --clusters <cluster names>                   # Limit cleanup to the specified clusters, separated by commas
    --debug                                      # Use debug log level

    Сведения о параметрах подключения к платформе (--platform-address, --platform-username, --platform-password, --platform-token) см. в разделе Общие параметры.

    violet verify

    Используйте команду violet verify, чтобы проверить подпись одного или нескольких пакетов перед их загрузкой. Поддерживаются два метода проверки: checksum и GPG. Пакет (.tgz) и соответствующий файл подписи должны находиться в одном каталоге.

    violet verify example.tgz
    # or verify all packages within a directory
    violet verify packages_dir_name

    Пример вывода:

    verify path: /path/to/packages
    ====== Verification Summary ======
    Verified successfully with GPG: 2 file(s)
      - /path/to/packages/redis-operator.tgz
      - /path/to/packages/mysql-operator.tgz
    
    Verified successfully with checksum: 1 file(s)
      - /path/to/packages/nginx-controller.tgz
    
    Verification failed: 1 file(s)
      - /path/to/packages/etcd-operator.tgz
    
    No verification file found: 1 file(s)
      - /path/to/packages/demo-plugin.tgz

    Пояснение:

    • Успешно проверено с помощью GPG — перечисленные файлы успешно проверены с использованием файлов подписи GPG (с расширением .sig).
    • Успешно проверено с помощью checksum — файлы, проверенные с помощью файлов checksum (например, .sha256), прошли проверку целостности.
    • Проверка не выполнена — перечисленные файлы не прошли проверку из-за несоответствующих или недействительных подписей.
    • Файл проверки не найден — в каталоге не найден соответствующий файл .sig (GPG) или файл checksum.

    Необязательные флаги

    --debug       Use debug log level.
    -h, --help    Display help information for the verify command.

    violet push

    Следующие примеры иллюстрируют распространенные сценарии использования.

    Сведения о параметрах подключения к платформе и image registry см. в разделе Общие параметры.

    Для неинтерактивного использования предпочтительно использовать --platform-token вместо --platform-password. См. Общие параметры.

    Необязательные флаги

    --clusters <cluster names>                   # Specify target clusters, separated by commas (e.g., region1,region2)
    --target-catalog-source <catalog source>     # Target CatalogSource for operators: "platform", "system", or a custom CatalogSource name (default: "platform")
    --target-chartrepo <chart repository>        # Target chart repository for Helm charts (default: "public-charts", the platform-managed Helm repository)
    --skip-crs                                   # Skip creating `Artifact` and `ArtifactVersion` resources, only push images.
                                                     This prevents Operators or Cluster Plugins from being updated prematurely during the <Term name="productShort" /> upgrade process.
    --skip-push                                  # Only create `Artifact` and `ArtifactVersion` resources, while images are not pushed.

    При загрузке расширений в резервный кластер укажите --dest-repo. Если указан --dest-repo, необходимо передать либо сведения аутентификации для image registry, либо --no-auth. См. Общие параметры.

    Загрузка Operator в несколько кластеров

    violet push opensearch-operator.v3.14.2.tgz \
      --platform-address "https://example.com" \
      --platform-username "<platform_user>" \
      --platform-password "<platform_password>" \
      --clusters region1,region2
    INFO
    • Если --clusters не указан, Operator по умолчанию загружается в глобальный кластер.

    Загрузка Operator в резервный глобальный кластер

    violet push opensearch-operator.v3.14.2.tgz \
      --platform-address "https://example.com" \
      --platform-username "<platform_user>" \
      --platform-password "<platform_password>" \
      --dest-repo "<standby-cluster-VIP>:11443" --username "<registry-username>" --password "<registry-password>"

    Загрузка Cluster Plugin

    violet push plugins-cloudedge-v0.3.16-hybrid.tgz \
      --platform-address "https://example.com" \
      --platform-username "<platform_user>" \
      --platform-password "<platform_password>"
    INFO
    • При загрузке Cluster Plugin указывать параметр --clusters не требуется, так как платформа автоматически распределит его на основе конфигурации affinity. Если вы укажете --clusters, этот параметр будет проигнорирован.

    Загрузка Helm Chart в репозиторий chart

    violet push plugins-cloudedge-v0.3.16-hybrid.tgz \
      --platform-address "https://example.com" \
      --platform-username "<platform_user>" \
      --platform-password "<platform_password>"
    INFO
    • Helm Charts можно загружать только в репозиторий public-charts по умолчанию, предоставляемый платформой.

    Передать только образы из всех пакетов в каталоге

    Когда из Marketplace загружается несколько пакетов, их можно поместить в один каталог и загрузить все сразу:

    violet push <packages_dir_name> \
      --skip-crs \
      --platform-address "https://example.com" \
      --platform-username "<platform_user>" \
      --platform-password "<platform_password>"

    Создать только CR из всех пакетов в каталоге

    Когда из Marketplace загружается несколько пакетов, их можно поместить в один каталог и загрузить все сразу:

    violet push <packages_dir_name> \
      --skip-push \
      --platform-address "https://example.com" \
      --platform-username "<platform_user>" \
      --platform-password "<platform_password>"
      --clusters "<cluster_name>"
    WARNING

    Когда целевым объектом обновления является глобальный кластер, параметр --clusters можно опустить, так как по умолчанию загрузка выполняется в глобальный кластер.

    Однако, когда целевым объектом обновления является workload cluster, необходимо указать параметр --clusters <workload_cluster_name>.