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

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

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

    • Operator
    • Cluster Plugin
    • Helm Chart

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

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

    1. Извлечение и получение информации из пакета
    2. Отправка образов в реестр образов
    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

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

    WARNING

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

    Параметры реестра образов

    --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 — cluster plugins, жизненный цикл которых имеет тип aligned или agnostic.
    • OperatorBundle — установленные operators.
    • Chart — приложения Helm chart, созданные из ссылок на chart.

    По умолчанию команда выводит содержимое 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 — artifacts для неустановленных operators.
    • ArtifactVersion — старые версии artifacts для установленных operators. Текущий установленный CSV или версия сохраняется.
    • ModulePlugin — cluster plugins, не установленные ни в одном кластере.
    • ModuleConfig — устаревшие записи конфигурации cluster plugin.

    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

    Пояснение:

    • Verified successfully with GPG — перечисленные файлы успешно проверены с использованием GPG signature files (с расширением .sig).
    • Verified successfully with checksum — файлы, проверенные с использованием файлов checksum (например, .sha256), прошли проверку целостности.
    • Verification failed — перечисленные файлы не прошли проверку из-за несоответствующих или недействительных подписей.
    • No verification file found — в каталоге не найден соответствующий файл .sig (GPG) или файл checksum.

    Дополнительные флаги

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

    violet push

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

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

    Для неинтерактивного использования предпочтительно указывать --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 custom resources in the cluster
    --skip-push                                  # Skip pushing images and artifacts to the registry

    Если указан --dest-repo, необходимо предоставить либо сведения для аутентификации в реестре образов, либо --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 по умолчанию загружается в global cluster.\

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

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

    При использовании violet для загрузки пакетов в резервный кластер:

    • параметр --dest-repo <VIP addr of standby cluster> ДОЛЖЕН быть указан
    • параметр --platform-address ДОЛЖЕН быть установлен в адрес доступа платформы резервного кластера
    • необходимо предоставить либо сведения для аутентификации в реестре образов резервного кластера, либо параметр --no-auth

    В противном случае пакеты будут загружены в репозиторий образов primary cluster, что не позволит резервному кластеру устанавливать или обновлять расширения.

    Загрузка 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> \
      --platform-address "https://example.com" \
      --platform-username "<platform_user>" \
      --platform-password "<platform_password>" \
      --clusters "<cluster_name>"
    WARNING

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

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