Перейти к содержанию

Создание своего магазина приложений

Концепция

Основной концепт каталога приложений - графический визард над функционалом 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"
Оператор 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

https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/helm-charts-in-rancher/create-apps#question-variable-reference

Как установить зависимость перед установкой чарта

Добавьте аннотацию в Chart.yaml catalog.cattle.io/auto-install

Как сделать красивый выбор из существующих ресурсов в кубе

Используйте предопределённые служебные типы

  • string - обычная строка
  • multiline
  • boolean - Значение true/false. В rancher это будет чек-бокс
  • int - численное значение
  • enum - Выпадающий список с подготовленными вариантами. Работает с options, куда записываются варианты
  • password - Значение будут отображены точками
  • storageclass - выбор из всех доступных классов в кластере
  • hostname - перечисление всех хостнеймов в кластере
  • pvc - выбор из PersistentVolumeClaim в неймспейсе
  • secret - выбор из секретов в неймспейсе