Создание своего магазина приложений
Концепция
Основной концепт каталога приложений - графический визард над функционалом helm3. Rancher немного обогащает стандартный чарт двумя файлами, после чего чарт пакуется средствами helm.
Требования перед началом работы
- helm repository (Chart Museum)
- docker registry
- rancher с подключённым репозиторием каталога (подключённый helm repository)
Реализация
Требования
- Чарты должны иметь правильно прописанные версии
- Каждый чарт должен иметь иконку
- Каждый чарт должен иметь app-readme
Перед началом работы подключите репозиторий helm3 к rancher как каталог приложений - через web-интерфейс или манифестом.
apiVersion: catalog.cattle.io/v1
kind: ClusterRepo
metadata:
name: отображаемое имя каталога
spec:
clientSecret:
name: clusterrepo-auth-lqpdn
namespace: cattle-system
url: https://demo.stsoft.lan/chartrepo/bootsman-marketplace
---
apiVersion: v1
data:
password: ПАРОЛЬ В BASE64
username: ЮЗЕР В BASE64
kind: Secret
metadata:
name: clusterrepo-auth-lqpdn
namespace: cattle-system
type: kubernetes.io/basic-auth
Флоу
- Соберите свой docker image
- Пишете обычный helm chart
- Создаёте дополнительные манифесты, описанные ниже
- Пакуете чарт
- Публикуете чарт в Chart Museum
Обогащённые манифесты
questions.yml
Этот файл содержит в себе правильно описанные, строго типизированные поля для values. На основе этого файла rancher сгенерирует графический установщик.
Файл поддерживает не только описание типизированных полей, но и условия их появления, например:
- variable: metrics.enabled
default: false
label: Start postgres exporter
type: boolean
group: "General"
show_if: "global.postgresql.customdatabase=true"
app-readme.yaml
app-readme.yaml - описание в формате markdown. Пример
FAQ
Как запушить helm чарт в Chart Museum
# Установить плагин для работы с Chart Museum
helm plugin install https://github.com/chartmuseum/helm-push
# Добавить репозиторий, если не был добавлен ранее. Где username и password - ваши личные авторизационные данные
helm repo add --username=${USERNAME} --password=${PASSWORD} bootsman-marketplace https://demo.stsoft.lan/chartrepo/bootsman-marketplace
# Helm чарт пушится только в запакованном состоянии
helm package.
# Сам пуш
helm cm-push *.tgz bootsman-marketplace
Какие типы поддерживает marketplace
Как установить зависимость перед установкой чарта
Добавьте аннотацию в Chart.yaml catalog.cattle.io/auto-install
Как сделать красивый выбор из существующих ресурсов в кубе
Используйте предопределённые служебные типы
- string - обычная строка
- multiline
- boolean - Значение true/false. В rancher это будет чек-бокс
- int - численное значение
- enum - Выпадающий список с подготовленными вариантами. Работает с options, куда записываются варианты
- password - Значение будут отображены точками
- storageclass - выбор из всех доступных классов в кластере
- hostname - перечисление всех хостнеймов в кластере
- pvc - выбор из PersistentVolumeClaim в неймспейсе
- secret - выбор из секретов в неймспейсе