Синхронизация репозитория чартов
Примечание: этот пример предназначен специально для бакета Google Cloud Storage (GCS), используемого в качестве репозитория чартов.
Предварительные требования
- Установите инструмент gsutil. Основная часть работы выполняется через gsutil rsync
- Убедитесь, что Helm установлен и доступен
- Опционально: мы рекомендуем включить версионирование объектов в вашем GCS-бакете на случай случайного удаления данных.
Настройка локального каталога репозитория чартов
Создайте локальный каталог, как описано в руководстве по репозиториям чартов, и поместите в него упакованные чарты.
Например:
$ mkdir fantastic-charts
$ mv alpine-0.1.0.tgz fantastic-charts/
Генерация обновлённого index.yaml
Используйте Helm для генерации обновлённого файла index.yaml, передав путь к каталогу
и URL удалённого репозитория команде helm repo index:
$ helm repo index fantastic-charts/ --url https://fantastic-charts.storage.googleapis.com
Эта команда сгенерирует обновлённый файл index.yaml и поместит его в каталог
fantastic-charts/.
Синхронизация локального и удалённого репозиториев чартов
Загрузите содержимое каталога в ваш GCS-бакет, запустив скрипт
scripts/sync-repo.sh с указанием имени локального каталога и имени GCS-бакета.
Например:
$ pwd
/Users/me/code/go/src/helm.sh/helm
$ scripts/sync-repo.sh fantastic-charts/ fantastic-charts
Getting ready to sync your local directory (fantastic-charts/) to a remote repository at gs://fantastic-charts
Verifying Prerequisites....
Thumbs up! Looks like you have gsutil. Let's continue.
Building synchronization state...
Starting synchronization
Would copy file://fantastic-charts/alpine-0.1.0.tgz to gs://fantastic-charts/alpine-0.1.0.tgz
Would copy file://fantastic-charts/index.yaml to gs://fantastic-charts/index.yaml
Are you sure you would like to continue with these changes?? [y/N]} y
Building synchronization state...
Starting synchronization
Copying file://fantastic-charts/alpine-0.1.0.tgz [Content-Type=application/x-tar]...
Uploading gs://fantastic-charts/alpine-0.1.0.tgz: 740 B/740 B
Copying file://fantastic-charts/index.yaml [Content-Type=application/octet-stream]...
Uploading gs://fantastic-charts/index.yaml: 347 B/347 B
Congratulations your remote chart repository now matches the contents of fantastic-charts/
Обновление репозитория чартов
Храните локальную копию содержимого вашего репозитория чартов или используйте
gsutil rsync для копирования содержимого удалённого репозитория чартов
в локальный каталог.
Например:
$ gsutil rsync -d -n gs://bucket-name local-dir/ # the -n flag does a dry run
Building synchronization state...
Starting synchronization
Would copy gs://bucket-name/alpine-0.1.0.tgz to file://local-dir/alpine-0.1.0.tgz
Would copy gs://bucket-name/index.yaml to file://local-dir/index.yaml
$ gsutil rsync -d gs://bucket-name local-dir/ # performs the copy actions
Building synchronization state...
Starting synchronization
Copying gs://bucket-name/alpine-0.1.0.tgz...
Downloading file://local-dir/alpine-0.1.0.tgz: 740 B/740 B
Copying gs://bucket-name/index.yaml...
Downloading file://local-dir/index.yaml: 346 B/346 B
Полезные ссылки:
- Документация по gsutil rsync
- Руководство по репозиториям чартов
- Документация по версионированию объектов и управлению конкурентным доступом в Google Cloud Storage