Механизм тестирования с открытым исходным кодом для приложений Kubernetes

Механизм тестирования с открытым исходным кодом для приложений Kubernetes

12 марта 2022 г.

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


Все промежуточные и непроизводственные функции должны быть тщательно протестированы для обеспечения эффективного и надежного обслуживания. К сожалению, в настоящее время тестирование происходит только в определенный момент жизненного цикла разработки. Чтобы повысить качество обслуживания конечных пользователей в распределенных облачных кластерах, необходима структура для реализации модульного тестирования на всех этапах жизненного цикла приложения.


Приведенное выше утверждение особенно верно для разработки контейнерных приложений. Когда дело доходит до распределения и распределения нагрузки, командам DevOps приходится проектировать и разрабатывать стратегии и реализовывать их с помощью конфигураций.


Без сомнения, Kubernetes является одним из ведущих игроков на рынке платформ оркестрации контейнеров. Компании из списка Fortune 500 и ведущие ИТ-лидеры используют преимущества Kubernetes в своих сценариях использования в бизнесе.


Многое может пойти не так при внедрении сложной системы (в основном конфигурации). Две из десяти реализаций заканчиваются неправильной конфигурацией, и командам приходится выполнять оценку и проверку кода, чтобы исправить неправильные конфигурации.


Эта проблема в значительной степени способствует задержке доставки кода из-за несоблюдения SLA и влияет на сроки. Давайте сначала разберемся, какие методы доступны в Kubernetes для тестирования.


Методы тестирования для K8s


Kubernetes — это продвинутая платформа с разнообразным набором инструментов и компонентов. По мере развития платформы эти компоненты разрабатываются и поддерживаются вне Kubernetes.


Обычно в приложениях Kubernetes участвует несколько сервисов, каждый из которых работает в своем контейнере. Таким образом, разработка и отладка этих сервисов на удаленном кластере K8s может иногда создавать проблемы и требовать от вас использования ssh для отладки.


Использовать ssh в удаленном кластере несложно, но выполнение скриптов и контрольных примеров для тестирования может быть затруднено из-за многих факторов, таких как неформатированный вывод, обработка ошибок, документирование причины и исправления и многое другое. Kubernetes можно легко протестировать и отладить следующими способами:**
**


  • Локально с телеприсутствием: Телеприсутствие предлагает простые настраиваемые инструменты для локальной отладки служб во время проксирования служб. на удаленный кластер.

  • End-to-End с Kubetest2 & Go: Kubetest2 — это платформа Kubernetes для запуска и выполнения сквозных тестов. Сквозная платформа Kubernetes поддерживает тесты и утверждения, написанные на языке Go, которые полагаются на Ginkgo для управления тестами и Gomega для утверждений.

  • Сторонние драйверы: Kubernetes поддерживает множество сторонних драйверов, поддерживающих функции тестирования. Одним из таких сторонних драйверов является Kubescape.

Вариант с открытым исходным кодом: Kubescape


__Kubescape__является инструментом с открытым исходным кодом для K8. , обеспечивающий анализ рисков, соответствие требованиям безопасности, визуализатор RBAC и сканирование уязвимостей образов под одной крышей.


Поскольку тестирование является важной частью любой деятельности по разработке, динамическое выполнение тестовых случаев может сэкономить много времени и ресурсов. Kubespace — один из таких инструментов, который предлагает исключительные услуги для выполнения работы с минимальными усилиями.


Kubescape извлекает объекты K8 сервера ARMO API и сканирует их, запуская набор предопределенных сценариев, соответствующих рекомендациям передового опыта. Затем он сравнивает, насколько хорошо ваша конфигурация Kubernetes соответствует этим рекомендациям, рекомендует решения на основе неправильных конфигураций и мгновенно вычисляет оценку риска, показывая тенденции риска с течением времени.


Инструмент достаточно гибок, чтобы по умолчанию удобно печатать на консоли и извлекать результаты в формате JSON. Kubescape не зависит от облака и на данный момент доступен как в AWS, так и в GCP.


Из-за простоты и легкости использования я буду использовать GCP для тестирования Kubescape.


Предпосылки


  1. Настройте Google Kubernetes Engine (__[GKE](https://console.cloud.google.com/marketplace/product/google/container.googleapis.com?returnUrl=%2Fkubernetes%2Flist%2Foverview%3F_ga%3D2. и облачной оболочке.

  1. Установите Kubescape в Google Shell.

  1. Настройте хранилище Google и создайте корзину.

Шаг 1 легко настроить, если вы следуете документации GCP.


Давайте установим Kubescape в нашу Google Cloud Shell.


<script src="https://gist.github.com/jayachandra27/a7174abd35ae6891791acc39ffa44b29.js"></script>


https://gist.github.com/jayachandra27/a7174abd35ae6891791acc39ffa44b29.js


curl -s https://raw.githubusercontent.com/armosec/kubescape/master/install.sh | /бин/баш



Теперь пришло время протестировать наши конфигурации с помощью этого инструмента.


Демо


В этой демонстрации используется образец файла YAML для сканирования и выполнения тестов, а также для предоставления общего обзора того, что происходит внутри. Без лишних слов давайте воспользуемся gsutils и перенесем наши данные в облачную оболочку для выполнения.**
**


gsutils cp path_to_your_bucket имя_папки_in_cloud_storage


наш пример файла YAML выглядит так:


```javascript


версия: "3"


Сервисы:


Прометей:


образ: пром/прометей:v2.8.1


тома:


  • ./prometheus/entrypoint.sh:/bin/prometheus-entrypoint.sh

  • ../прометей/прометей.yml:/etc/прометей/прометей.yml

пользователь: корень


входная точка:


  • /бин/ш

  • /bin/prometheus-entrypoint.sh

--config.file=/etc/prometheus/prometheus.yml


--storage.tsdb.path=/прометей


--web.console.libraries=/usr/share/prometheus/console_libraries


--web.console.templates=/usr/share/prometheus/consoles


порты: ["9090:9090"]


сети: ["песочница"]


графана:


изображение: графана/графана:6.0.2


тома: ["../grafana/plugins/cinnamon-prometheus-app:/var/lib/grafana/plugins/cinnamon-prometheus-app"]


порты: ["3000:3000"]


сети: ["песочница"]


зависит_на: ["прометей"]


сети:


песочница:


водитель: мост


Как только конфигурация будет готова, мы можем запустить среду сканирования Kubescape для файла, чтобы отсканировать и обнаружить неправильные конфигурации для нас.


Инструмент предоставляет подробное описание и обзор того, какие проверки были выполнены, каков был статус проверки и что необходимо сделать, чтобы предотвратить или улучшить общие конфигурации.



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



Заключение


Kubernetes — это продвинутая и сложная платформа для оркестровки с множеством абстракций. Большинство тестировщиков не знают обо всех этих абстракциях, но тестируют конечный продукт/услугу.


Документация K8s предоставляет исчерпывающий набор лучших практик, на которые вы можете ссылаться и которые можно реализовать в зависимости от вашего варианта использования. Но зачем изобретать велосипед, если можно использовать существующий с современными и простыми в использовании элементами управления. Kubescape и другие сторонние соединители призваны восполнить этот пробел для тестировщиков, используя лучшие практики для тестирования конфигураций и предоставления рекомендаций по улучшению общего качества.


Я надеюсь, что этот пост был информативным, и вы узнали что-то новое. Спасибо!


Фото на обложке: Сюзанна Марсилья на Unsplash



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE