Установка в изолированной (air-gapped) среде
Olivares AI ориентирован на самостоятельное размещение в первую очередь и готов
к air-gap. Это руководство переносит подписанный релиз через изоляцию сети при
отсутствии сети на отключённой стороне: вы проверяете каждый образ и Helm-чарт
офлайн по открытому ключу, зеркалируете их в свой приватный реестр по digest и
устанавливаете. Продукт не делает обязательных исходящих вызовов при загрузке,
поэтому ничто внутри изоляции не выходит в интернет. Единственная команда,
которая обращалась бы к эндпоинту вендора, — olivares upgrade; --endpoint
или --bundle направляет её на ваше собственное зеркало.
Процесс двусторонний:
- Онлайн, однократно — сопровождающий собирает самодостаточный комплект.
- Внутри изоляции — вы проверяете его офлайн и зеркалируете в свой реестр.
Эта страница документирует, как использовать комплект и поставляемые скрипты; она не пересобирает конвейер релизов.
1. Сборка комплекта (онлайн, однократно)
Заголовок раздела «1. Сборка комплекта (онлайн, однократно)»На подключённой машине 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 releasecosign.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.pubdone--insecure-ignore-tlog пропускает онлайн-журнал прозрачности Sigstore; доверие
исходит из вложенного cosign.pub. (Это не то же самое, что keyless-флаг
--offline — в режиме ключа офлайн-корнем доверия является открытый ключ.)
Проверьте Helm-чарт офлайн
Заголовок раздела «Проверьте Helm-чарт офлайн»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]Устанавливайте по digest, никогда по тегу
Заголовок раздела «Устанавливайте по digest, никогда по тегу»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 / STIG
Заголовок раздела «Варианты FIPS / STIG»Существуют усиленные варианты сборки (сборка в режиме FIPS, линкующая криптографический модуль Go, валидированный CMVP, и образ, ориентированный на STIG). Они относятся к этапу post-v1 и несут собственный реестр честности — в частности, никакой FedRAMP/DoD ATO не заявляется, и только конкретно валидированная версия модуля должна представляться как валидированная. Рассматривайте их как доступные, но ещё не v1, а не как сертифицированное предложение.
См. также
Заголовок раздела «См. также»- Проверьте то, что вы скачали — цепочка проверки без air-gap (подпись, SBOM, OpenVEX, SLSA).
- Самостоятельное размещение control plane — пути одного бинарника, Compose и Kubernetes и их безопасные настройки по умолчанию.