Перейти к содержимому

Установка в изолированной (air-gapped) среде

Olivares AI ориентирован на самостоятельное размещение в первую очередь и готов к air-gap. Это руководство переносит подписанный релиз через изоляцию сети при отсутствии сети на отключённой стороне: вы проверяете каждый образ и Helm-чарт офлайн по открытому ключу, зеркалируете их в свой приватный реестр по digest и устанавливаете. Продукт не делает обязательных исходящих вызовов при загрузке, поэтому ничто внутри изоляции не выходит в интернет. Единственная команда, которая обращалась бы к эндпоинту вендора, — olivares upgrade; --endpoint или --bundle направляет её на ваше собственное зеркало.

Процесс двусторонний:

  1. Онлайн, однократно — сопровождающий собирает самодостаточный комплект.
  2. Внутри изоляции — вы проверяете его офлайн и зеркалируете в свой реестр.

Эта страница документирует, как использовать комплект и поставляемые скрипты; она не пересобирает конвейер релизов.

На подключённой машине scripts/airgap-bundle.sh вытягивает каждый образ закреплённым по digest, упаковывает и подписывает Helm-чарт, собирает SBOM/OpenVEX/происхождение и выдаёт единый tarball с VERIFY.md:

Окно терминала
scripts/airgap-bundle.sh \
--version v26.8.0 \
--image docker.io/olivaresai/olivares:26.8.0-amd64 \
--chart deploy/helm/olivares \
--cosign-key cosign.key \
[--collector-image <ref>] [--out dist/airgap] [--gpg-key <id>]

Образ вытягивается из Docker Hub по его официальной координате (docker.io/olivaresai/olivares); то же содержимое также находится в ghcr.io/olivaresai/olivares, идентичное по digest, если вы предпочитаете зеркалировать оттуда. Docker Hub ограничивает частоту анонимных пулов, а ghcr.io для публичных образов — нет, что помогает на неаутентифицированном хосте сборки.

images/<name>/ cosign-saved image + its signatures/attestations (offline)
chart/<chart>.tgz packaged Helm chart (+ .tgz.sig cosign, + .prov if gpg)
sbom/ vex/ prov/ SBOM, OpenVEX and SLSA provenance for the release
cosign.pub the public key to verify everything offline (key mode)
digests.txt the pinned digest of every image (the manifest of record)
VERIFY.md the exact offline verification + mirror walkthrough

Комплект также несёт копии airgap-mirror.sh и verify-release.sh, так что отключённой стороне ничего не нужно из сети.

2. Проверка и зеркалирование внутри изоляции

Заголовок раздела «2. Проверка и зеркалирование внутри изоляции»

На отключённой стороне вам нужны только cosign, crane, helm и tar — и доступный приватный реестр. Без интернета.

Проверьте каждый образ офлайн (без журнала прозрачности)

Заголовок раздела «Проверьте каждый образ офлайн (без журнала прозрачности)»
Окно терминала
for d in images/*/; do
cosign verify --local-image "$d" --insecure-ignore-tlog --key cosign.pub
done

--insecure-ignore-tlog пропускает онлайн-журнал прозрачности Sigstore; доверие исходит из вложенного cosign.pub. (Это не то же самое, что keyless-флаг --offline — в режиме ключа офлайн-корнем доверия является открытый ключ.)

Окно терминала
cosign verify-blob --key cosign.pub --insecure-ignore-tlog \
--signature chart/*.tgz.sig chart/*.tgz
# If a Helm-native .prov is present, additionally: helm verify chart/*.tgz
# (needs the signer's GPG public key in your keyring)

Зеркалируйте в свой приватный реестр по digest

Заголовок раздела «Зеркалируйте в свой приватный реестр по digest»

scripts/airgap-mirror.sh проверяет каждый образ офлайн, загружает его в ваш реестр и перезакрепляет по digest, чтобы подтвердить, что digest пережил зеркалирование (используются crane и cosign loadне oras):

Окно терминала
scripts/airgap-mirror.sh \
--bundle olivares-airgap-v26.8.0.tar.gz \
--registry registry.internal:5000 [--insecure]
Окно терминала
helm install olivares \
oci://registry.internal:5000/charts/olivares \
--version <chart-version> \
--set image.repository=registry.internal:5000/olivares \
--set image.digest=<digest-from-digests.txt>

Всегда устанавливайте из digest в digests.txt, никогда из изменяемого тега — digest неизменяем и это именно то, что вы проверили.

Внутри изоляции ничто не обращается наружу

Заголовок раздела «Внутри изоляции ничто не обращается наружу»

Движок не делает обязательных исходящих вызовов при загрузке (по умолчанию привязывается к loopback), поэтому ничто внутри изоляции не выходит в интернет. Единственная команда, которая обращалась бы к эндпоинту вендора, — olivares upgrade; --endpoint или --bundle направляет её на ваше зеркало.

Лицензия проверяется офлайн (подпись Ed25519, без сервера лицензий), и ни один из приведённых выше шагов проверки или установки не обращается к интернету, как только комплект оказался по ту сторону изоляции. Нет режима телеметрии «домой» по умолчанию, который нужно было бы отключать.

К поставщику обращается онлайн-сторона, и это сделано намеренно: сборка комплекта скачивает релиз, а в коммерческом парке подписка — это учётные данные, с которыми получают надстройки, их обновления и исправления. Это модель SUSE/Novell: изолированный парк обслуживается из локального зеркала, которое по-прежнему несёт то же право. См. самостоятельное размещение.

Существуют усиленные варианты сборки (сборка в режиме FIPS, линкующая криптографический модуль Go, валидированный CMVP, и образ, ориентированный на STIG). Они относятся к этапу post-v1 и несут собственный реестр честности — в частности, никакой FedRAMP/DoD ATO не заявляется, и только конкретно валидированная версия модуля должна представляться как валидированная. Рассматривайте их как доступные, но ещё не v1, а не как сертифицированное предложение.