"Сохраните ваши ценные артефакты... в облаках!"
ChartMuseum — это открытое исходное программное обеспечение для Хранилища шаблонов Helm, написанное на Go (Golang), с поддержкой облачных хранилищ, включая Google Cloud Storage, Amazon S3 и Microsoft Azure Blob Storage.
Работает как действительное хранилище шаблонов Helm и также предоставляет API для загрузки новых пакетов шаблонов в хранилище и т.д.
Поддерживается отличной технологией Go:
"Наконец-то!!">"ChartMuseum замечательна"
"Это просто отлично!"
"О да!!!! Я ждал этого так долго. Это значительно упрощает жизнь, особенно при создании файла index.yaml."
"Я думал о том, чтобы самому написать что-то подобное. Это идеально! Спасибо!"
"Я прыгаю от радости благодаря ChartMuseum, полноценному серверу для управления хранилищем Helm с возможностью загрузки."
"Это действительно круто... У нас есть процесс, который генерирует файл индекса и затем загружает его, поэтому это очень полезно."
"Действительно хорошая идея... действительно-таки великолепная, спасибо еще раз. Я могу использовать nginx для хранения репозиториев и museum для добавления/удаления шаблонов. Это целый жизненный цикл управления шаблонами с текущим Helm." >"спасибо за создание музея!"
GET /index.yaml
- получается при выполнении команды helm repo add chartmuseum http://localhost:8080/
GET /charts/mychart-0.1.0.tgz
- получается при выполнении команды helm install chartmuseum/mychart
GET /charts/mychart-0.1.0.tgz.prov
- получается при выполнении команды helm install
с флагом --verify
POST /api/charts
- загрузка новой версии чартаPOST /api/prov
- загрузка нового файла provenanceDELETE /api/charts/<name>/<version>
- удаление версии чарта (и соответствующего файла provenance)GET /api/charts
- вывод всех чартовGET /api/charts/<name>
- вывод всех версий конкретного чартаGET /api/charts/<name>/<version>
- описание версии чарта### Информация о сервереGET /health
- возвращает 200 OKСледуйте разделу "Как запустить" ниже, чтобы запустить ChartMuseum по адресу http://localhost:8080
Сначала создайте mychart-0.1.0.tgz
с помощью Helm CLI:
cd mychart/
helm package .
Загрузите mychart-0.1.0.tgz
:
curl --data-binary "@mychart-0.1.0.tgz" http://localhost:8080/api/charts
Если вы подписали свой пакет и сгенерировали файл provenance, загрузите его с помощью:
curl --data-binary "@mychart-0.1.0.tgz.prov" http://localhost:8080/api/prov
Оба файла также могут быть загружены одновременно (или по отдельности) через маршрут /api/charts
, используя формат multipart/form-data
:
curl -F "chart=@mychart-0.1.0.tgz" -F "prov=@mychart-0.1.0.tgz.prov" http://localhost:8080/api/charts
Добавьте URL вашего установочного экземпляра ChartMuseum в список локальных репозиториев:
helm repo add chartmuseum http://localhost:8080
Поиск чартов:
helm search chartmuseum/
Установка чарта:
helm install chartmuseum/mychart
Установите бинарник:
# на Linux
curl -LO https://s3.amazonaws.com/chartmuseum/release/latest/bin/linux/amd64/chartmuseum
# на macOS
curl -LO https://s3.amazonaws.com/chartmuseum/release/latest/bin/darwin/amd64/chartmuseum
# на Windows
curl -LO https://s3.amazonaws.com/chartmuseum/release/latest/bin/windows/amd64/chartmuseum
Дайте исполняемые права бинарному файлу:
chmod +x ./chartmuseum
mv ./chartmuseum /usr/local/bin
Используйте latest
в URL выше, чтобы получить последнюю версию бинарника (построенную с мастера).Замените latest
на $(curl -s https://s3.amazonaws.com/chartmuseum/release/stable.txt)
, чтобы автоматически определять последнее стабильное издание (например, v0.3.0
).
Определите вашу версию с помощью команды chartmuseum --version
.
Показывает все опции командной строки с помощью chartmuseum --help
. Общие конфигурации можно увидеть ниже.
Все опции командной строки могут быть указаны как переменные окружения, которые определяются опцией командной строки, приведённой в верхнем регистре, с заменой всех дефисов на нижние черты.
Например, переменная окружения STORAGE_AMAZON_BUCKET
может использоваться вместо --storage-amazon-bucket
.
Убедитесь, что ваше окружение правильно настроено для доступа к my-s3-bucket
.
chartmuseum --debug --port=8080 \
--storage="amazon" \
--storage-amazon-bucket="my-s3-bucket" \
--storage-amazon-prefix="" \
--storage-amazon-region="us-east-1"
Вы должны иметь хотя бы следующие права доступа внутри своей политики IAM
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListObjects",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::my-s3-bucket"
},
{
"Sid": "AllowObjectsCRUD",
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-s3-bucket/*"
}
]
}
Убедитесь, что ваше окружение правильно настроено для доступа к my-gcs-bucket
.
chartmuseum --debug --port=8080 \
--storage="google" \
--storage-google-bucket="my-gcs-bucket" \
--storage-google-prefix=""
```#### Использование с Microsoft Azure Blob Storage
Убедитесь, что ваше окружение правильно настроено для доступа к `mycontainer`.
Для этого вам нужно установить следующие переменные окружения:
- `AZURE_STORAGE_ACCOUNT`
- `AZURE_STORAGE_ACCESS_KEY`
```bash
chartmuseum --debug --port=8080 \
--storage="azure" \
--storage-microsoft-container="mycontainer" \
--storage-microsoft-prefix=""
Убедитесь, что вы имеете права на чтение/запись к ./chartstorage
(будет создан, если не существует)
chartmuseum --debug --port=8080 \
--storage="local" \
--storage-local-rootdir="./chartstorage"
Если оба следующих параметра указаны, базовая HTTP-аутентификация будет защищать все маршруты:
--basic-auth-user=<user>
- имя пользователя для базовой HTTP-аутентификации--basic-auth-pass=<pass>
- пароль для базовой HTTP-аутентификацииВы можете захотеть использовать базовую аутентификацию только для операций, которые могут изменять диаграммы, то есть для методов PUT, POST и DELETE. Чтобы избежать использования базовой аутентификации для операций GET, используйте:
--auth-anonymous-get
- разрешение анонимных операций GETЕсли оба следующих параметра указаны, сервер будет прослушивать и обслуживать HTTPS:
--tls-cert=<crt>
- путь до файла цепочки сертификатов TLS--tls-key=<key>
- путь до файла ключа TLSВы можете указать опцию --gen-index
, если хотите использовать ChartMuseum только для генерации вашего файла index.yaml.Содержимое файла index.yaml
будет выведено в стандартный вывод, после чего программа завершится. Это полезно, если вы довольны текущим процессом CI/CD Helm и/или не хотите мониторить ещё одну веб-службу.
--log-json
— вывод структурированных логов в формате JSON--disable-api
— отключение всех маршрутов, начинающихся с префикса /api
--allow-overwrite
— разрешение повторной загрузки версий диаграмм--chart-url=<url>
— абсолютный URL для .tgz
в index.yaml
--storage-amazon-endpoint=<endpoint>
— альтернативный конечный адрес S3--storage-amazon-sse=<algorithm>
— алгоритм шифрования стороннего сервера S3--chart-post-form-field-name=<field>
— поле формы, которое будет запрошено для содержимого файла диаграммы--prov-post-form-field-name=<field>
— поле формы, которое будет запрошено для содержимого файла справедливостиДоступно через Docker Hub.
Пример использования (S3):
docker run --rm -it \
-p 8080:8080 \
-e PORT=8080 \
-e DEBUG=1 \
-e STORAGE="amazon" \
-e STORAGE_AMAZON_BUCKET="my-s3-bucket" \
-e STORAGE_AMAZON_PREFIX="" \
-e STORAGE_AMAZON_REGION="us-east-1" \
-v ~/.aws:/root/.aws:ro \
chartmuseum/chartmuseum:latest
Существует Helm chart для ChartMuseum сам по себе, который можно найти в официальном репозитории Kubernetes Charts.
Вы также можете просмотреть его на Kubeapps Hub. Для установки:
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com
helm install incubator/chartmuseum
```Если вас интересует внесение изменений, пожалуйста, отправьте Pull Request в kubernetes/charts. Перед выполнением работы проверьте наличие любых [текущих открытых Pull Requests](https://github.com/kubernetes/charts/pulls?q=is%3Apr+is%3Aopen+chartmuseum). Спасибо!
## Примечания по index.yaml
Индекс репозитория (index.yaml) генерируется динамически на основе найденных в хранилище пакетов. Если вы храните свою версию файла index.yaml, он будет полностью игнорирован.
`GET /index.yaml` выполняется при выполнении команд `helm repo add chartmuseum http://localhost:8080` или `helm repo update`.
Если вы вручную добавляете/удаляете пакет .tgz из хранилища, изменения будут немедленно отражены в `GET /index.yaml`.
Вы больше не обязаны поддерживать свою версию файла index.yaml с помощью `helm repo index --merge`.
CLI опция `--gen-index` (описана выше) может использоваться для генерации и вывода index.yaml в stdout.
## Отображение официальных репозиториев Kubernetes
Пожалуйста, обратитесь к скрипту `scripts/mirror_k8s_repos.sh`, чтобы узнать, как скачать все .tgz пакеты из официальных репозиториев Kubernetes (как стабильных, так и incubator).
Затем вы можете использовать *ChartMuseum*, чтобы предоставить внутреннее зеркало:
scripts/mirror_k8s_repos.sh chartmuseum --debug --port=8080 --storage="local" --storage-local-rootdir="./mirror"
## Сообщество
Вы можете связаться с сообществом и разработчиками *ChartMuseum* в канале **#chartmuseum** на [Slack Kubernetes](https://slack.k8s.io).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )