Появление технологии облака и контейнеров открыло новую эру в распределенных вычислениях в «Scale Planet Scale», которая была неслыханной и невообразимой всего десять лет назад. Еще одно интересное движение было заваривается десять лет назад, которое поддерживало предоставление этих сложных решений с высокой скоростью и точностью, DevOps. Эти два смены парадигмы прошли руку в руке, дополнив друг друга, чтобы сформировать распределенные вычисления так, как мы знаем (или все еще изучаем) сегодня.
Мы все знаем, насколько неотъемлемая непрерывная интеграция и непрерывное развертывание в парадигме автоматизации DevOps и как организации разработали многословные трубопроводы, чтобы привлечь модель заводского этажа в программное обеспечение для доставки.
Если вы когда -либо участвовали в реализации какой -либо из этих практик DevOps для облачной дистрибьютированной системы, вы, возможно, узнаете, как быстро эти конвейеры CI/CD становятся какофонией сложных инструментов и интеграций, требующих их собственной подзакончики специалистов Построенный и поддерживал тем самым, добавляя к тем самым бункерным, что практики намеревались сломаться.
Большая система, которая состоит из нескольких распределенных суб -систем и обычно развертывается в виде контейнеров Docker, сгруппированных во время выполнения оркестровки, таких как Kubernetes; И для этих систем эти трубопроводы поставляются совсем не простыми. Проблема в том, что вы в любое время имеете дело с 5 инструментами для чего-либо, от триггеров, запуска сборки и упаковки, создание средств для тестирования и выполнения тестов и, наконец, святого Грааля из развертывания одного щелчка (если это Святой вообще!).
Текон
Некоторые хорошие люди в Knative Project с Google почувствовали вышеупомянутую проблему достаточно глубоко, чтобы придумать решение, которое (я полагаю) является одной из лучших попыток строительства левых трубопроводов, которые еще существуют; Текон.
Tekton стремится обеспечить столь необходимую простоту и единообразию в создании и заведении этих трубопроводов, предоставляя высокоразовую, декларативную систему нативной сборки облаков на основе компонентов, в которой используется CRDS Kubernetes для выполнения работы. В философии Тектона любой трубопровод может быть разбит на следующие три ключевые части
- Контроль версий основных сервисов, магазин артефактов, Автоматизация развертывания
- Задачи, которые могут варьироваться от запуска Maven Build до различной автоматизации тестирования до безопасности и оценки производительности
- Рабочий процесс, который решает Как и когда выполняются задачи
Следовательно, видение состоит в том, чтобы преодолеть несоответствие и сложность, чтобы обеспечить механизм строительных трубопроводов то есть
Как это устроено
Tekton определяет ресурсы, которые выполняют характеристики, показанные выше, что позволяет вам сосредоточиться на том, что нужно сделать, и при оставшемся как основная реализация. Давайте посмотрим на ключевые строительные блоки трубопровода, созданного с Tekton.
Шаги
Самыми основными из компонентов Tekton являются шаги, по сути, контейнерная спецификация Kubernetes, которая является существующим типом ресурса, позволяет определить изображение и информацию, необходимую для его запуска. Например:
steps: - image: ubuntu # contains bash script: | #!/usr/bin/env bash echo "Hello from Bash!"
Задача
Задача состоит из одного или нескольких шагов (вы можете выполнять гранулированные или прекрасные задачи) и представляют собой единицу работы в трубопроводе, которая достигает определенной цели (построенный архив JAR, изображение Docker, тестовый запуск и т. Д.) Анкет Например, следующая задача выполняет сборку Maven:
apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: mvn spec: workspaces: - name: output params: - name: GOALS description: The Maven goals to run type: array default: ["package"] steps: - name: mvn image: gcr.io/cloud-builders/mvn workingDir: /workspace/output command: ["/usr/bin/mvn"] args: - -Dmaven.repo.local=$(workspaces.maven-repo.path) - "$(inputs.params.GOALS)"
Трубопровод
Трубопровод — это набор задач, которые вы определяете и организуете в определенном порядке выполнения как часть вашего непрерывного потока интеграции. Каждое задание в трубопроводе выполняется в качестве капсула в вашем кластере Kubernetes. Вы можете настроить различные условия выполнения в соответствии с потребностями вашего бизнеса. По мощности трубопроводы могут быть обоими рабочим процессом, по мере того, как вы желаете. Вот схематическое представление о том, чего будет достигнуть трубопровода в Тектоне.
Сделать все это вместе
Давайте посмотрим на то, что мы ожидаем от трубопровода, чтобы работать для большинства современных проектов:
Если у вас есть несколько приложений, которые нуждаются в этих шагах, вы можете по существу:
- Определите общие задачи, такие как единичные тетики, лининг, создание изображений, запустить тесты (интеграция или сквозная), публикация изображений и т. Д.
- Определите несколько трубопроводов или создайте стандартизированный конвейер, который будет использоваться в аналогичных модулях
- Параметризация трубопровода и масштабируется до большого количества трубопроводов с меньшей автоматизацией или конфигурацией CI/CD
Именно здесь лежит сила этого инструмента, способность создавать любое количество трубопроводов без необходимости интегрировать несколько инструментов для управления сложной оркестровкой. Этот тщательный сухой подход к автоматизированному трубопроводу CI/CD, безусловно, является отличным инструментом в распоряжении групп разработки программного обеспечения.
Строительство трубопровода с Тектоном
Теперь, когда мы увидели, что Tekton — это обещание, которое оно принесет на стол, давайте посмотрим, насколько хорошо это соответствует этому.
Установка Тектона
Чтобы установить основной компонент Tekton (при условии, что у вас уже есть кластер Kube, если не установите кластер Kube в первую очередь), Tekton Pippelines, запустите команду ниже:
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
Это может занять несколько минут до завершения установки. Вы можете проверить прогресс со следующей командой:
kubectl get pods --namespace tekton-pipelines
Подтвердите, что каждый перечисленный компонент имеет статус.
Постоянные объемы
Чтобы запустить рабочий процесс CI/CD, вам необходимо предоставить Tekton постоянный объем для целей хранения. Tekton по умолчанию запрашивает объем 5GI с классом хранения по умолчанию. Ваш кластер Kubernetes, такой как один из двигателя Google Kubernetes, может иметь постоянные объемы, настроенные во время создания, поэтому никаких дополнительных шагов не требуется; Если нет, вам, возможно, придется создать их вручную. В качестве альтернативы вы можете попросить Tekton использовать ведро Google Cloud Storage или вместо этого ведро AWS Simple Service (Amazon S3). Обратите внимание, что производительность Tekton может варьироваться в зависимости от выбранного вами параметра хранения.
kubectl create configmap config-artifact-pvc \ --from-literal=size=10Gi \ --from-literal=storageClassName=manual \ -o yaml -n tekton-pipelines \ --dry-run=client | kubectl replace -f -
Для получения более конкретной информации об установке и конфигурации Tekton вы можете ссылаться на их Документация Анкет
Дальнейшие шаги.
В этом посте мы увидели то, что Tekton приносит на столе с точки зрения предоставления способа для авторизованных трубопроводов, построенных из многоразовых задач, и как быстро его поднять и запустить в кластер Kubernetes. В следующей части мы рассмотрим создание и запуск трубопровода на Тектоне для простого приложения Java.
Оригинал: «https://dev.to/anadimisra/tekton-and-the-promise-of-reusable-pipelines-4jko»