Развертывание одним чартом#

Вы можете развернуть кластер Системы Global из одного чарта, поместив в него и простраснтво имен gs-ctk, и конфигурационный ресурс. Для этого:

  1. Создайте чарт при помощи команды helm create.

  2. Добавьте в папку charts наш чарт gs-ctk из дистрибутива nsctl

  3. Очистите папку templates и добавьте ваш конфигурационный файл. Вы можете шаблонизировать его, например, выделив параметры комплекта приложений для удобства или для автоматической их подстановки вашим CI/CD-скриптом.

  4. Добавьте в values.yaml параметры развертывания gs-ctk, например:

    gs-ctk:
        imageRepository: "docker-register.net"
        imagePullSecret: "docker-secret"
        systemVolume:
            nfs:
            server: "10.10.0.1"
            path: /export(venv)
    

    У вас должен получиться следующий чарт:

    my-chart
    ├── charts
    │   └── gs-ctk
    │       ├── Chart.yaml
    │       └── ...
    ├── Chart.yaml
    ├── templates
    │   └── globalconfigurations.yaml
    └── values.yaml
    
  5. Создайте и разверните секреты в вашем кластере, или воспользуйтесь одним из решений ниже.

  6. Разверните его при помощи команды:

    helm --install upgrade my-release .
    

Весь кластер развернут из одного чарта при помощи одной команды Helm!

Управление секретами#

Созданный нами чарт сейчас не разворачивает секреты автоматически. Этот вопрос умышленно выведен из рассмотрения в инструкции выше, поскольку вопрос хранения секретов сложный.

Есть несколько способов автоматизировать развертывание секретов:

  1. Сделать шаблоны секретов и передавать значения через Helm. Это допустимый вариант, если секреты внедряются в надежном месте (то есть, например, не хранятся в values.yaml открыто).

  2. Использовать helm-secrets и sops для хранения и подстановки секретов.

  3. Использовать Sealed Secrets, External Secrets или другой оператор для Kubernetes, который забирает на себя задачу непосредственного развертывания секретов.

Напоминаем, что хранение секретов в открытом виде вместе с самим чартом крайне опасно.