Механизм тестирования с открытым исходным кодом для приложений 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.
Предпосылки
- Настройте Google Kubernetes Engine (__[GKE](https://console.cloud.google.com/marketplace/product/google/container.googleapis.com?returnUrl=%2Fkubernetes%2Flist%2Foverview%3F_ga%3D2. и облачной оболочке.
- Установите Kubescape в Google Shell.
- Настройте хранилище 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
Оригинал