Лучшие практики Helm Test - PullRequest
1 голос
/ 08 октября 2019

Просто чтобы уточнить.

  1. Я не говорю о лучших практиках Хелма. Я могу прочитать их здесь: https://helm.sh/docs/chart_best_practices/
  2. Я не говорю о Терратесте.

Меня интересует Helm Test, вы можете прочитать об этом здесь https://helm.sh/docs/chart_tests/#chart-tests.

К сожалению, документация не предоставляет вам много информации иэто частично является причиной этого вопроса.

Что у нас есть:

  1. Мы можем иметь тест, определенный в диаграмме, следующим путем

our-app / templates / tests / test-our-app.yaml

Насколько я понимаю, согласно документации, это не модульный тест для диаграммы, а скорее тест на дым или интеграционный тест. Документация: «проверьте, что ваша диаграмма работает, как ожидалось, когда она установлена». Это именно то, что мне нужно. Чтобы запустить тест https://helm.sh/docs/chart_tests/#steps-to-run-a-test-suite-on-a-release. Нам нужно установить наше приложение Chart
    $ helm install our-app

и затем мы можем проверить это изображение

    $ helm test release-with-our-app

Вещи, которые я хотел бы уточнить:

  1. Если у нас есть два отдельных изображения докера илиодин для применения и испытаний? ...

    а). В случае если это одно изображение как для кода приложения, так и для тестового кода, мы добавляем код для теста / тестов всего этого изображения, что делает его больше, и дополнительно нам нужно поместить зависимости, требуемые тестами для этого изображения. ,Мне это решение кажется неправильным.

    b). Случай, когда у нас есть отдельное изображение для тестов, имеет больше смысла, потому что наш образ докера приложения свободен от любых ненужных зависимостей. Более того, во втором решении нас не очень заботит размер изображения докера с тестами, потому что предполагается, что это недолговечное изображение, которое отключается, когда тесты на нем заканчиваются.

    Верно ли мое предположение, и у нас должно быть отдельное изображение для этих тестов?

  2. В случае, если есть два отдельных изображения, одно для кода, другое для тестов. Как мы поженим их друг с другом? Означает ли это, что мы должны передать номер сборки / выпуска команде helm test, чтобы она могла вытащить правильный образ для тестов?

  3. Также в случае, если у нас есть два отдельных изображения. Нужно ли указывать запуск теста в файле Docker для тестов? например:

   CMD ["sh", "-c", "gradle test -Denvironment=$ENVIRONMENT"]

Или это должно быть внутри диаграммы

   our-app/templates/tests/test-our-app.yaml

Например, test.yamlиз репозитория MySQL:

https://github.com/helm/charts/blob/master/stable/mysql/templates/tests/test-configmap.yaml

Похоже, среды вообще не упоминаются в документации. Мой вопрос заключается в том, каков наилучший / рекомендуемый способ передачи имени среды на диаграмму, чтобы тесты знали, какие конечные точки нужно использовать и т. Д. Должно ли это быть Chart args Как передать динамические аргументы в рулевую диаграмму, которая выполняет задание ?

1 Ответ

1 голос
/ 09 октября 2019

Просто начинаю эту тему:

На мой взгляд, это зависит от ваших потребностей.

Для 1,2,3 - как я понял " тест руля "очень гибок и может выполнять любые дополнительные тесты в зависимости от ваших потребностей.

Вы можете использовать разные изображения и разные подходы или одно изображение с разными аргументами, но иногда это может быть невозможно из-за точки входа в докер - см. команды и аргументы .

В соответствии с 4 вопросом - по моему мнению, вы должны рассмотреть возможность использования configmaps и секретов для определения и представления переменных env вВаши модули.

Дополнительные ресурсы "helm test":

  • Интеграционное тестирование развернутых сервисов с использованием « helm test »
  • Как использовать тест руля делать интеграционные тесты?

Надеюсь, эта помощь.

...