Общая картина DevOps (CI + CD / CD?)
Непрерывная интеграция + непрерывная доставка / непрерывное развертывание
В то время как традиционные магазины с большой архитектурой в основном используют CI / Continuous Delivery, некоторые передовые компании в значительной степени полагаются на CI / Continuous Deployments, а некоторые компании используют и то, и другое. Atlassian отлично объясняет эти концепции, и их изображение стоит тысячи слов, которые я пропущу.
Figure 1 Continuous Delivery vs. Continuous Deployment
Read more: https://www.atlassian.com/continuou...tinuous-integration-vs-delivery-vs-deployment
Skaffold довольно прост в использовании после некоторой начальной настройки. Вы можете запустить команду scaffold dev в терминале и заняться своими делами разработчика. С каждым изменением локального исходного кода Skaffold начинает действовать и создает, тестирует, маркирует, отправляет, развертывает и отслеживает артефакты, а также может очистить все с помощью команды scaffold delete. Похоже, много полезных функций. Вот рабочий процесс, описанный командой Skaffold:
Figure 2 Skaffold Workflow and Architecture (Skaffold)
Вы можете выбрать, какой из этих этапов хотите реализовать; вам не обязательно иметь их все, вы можете адаптировать скаффолд по своему усмотрению, чтобы наилучшим образом использовать его для вашего конкретного случая использования.
Read More: https://skaffold.dev/docs/
Локальный запуск Docker-desktop, Minikube или полномасштабного кластера Kubernetes может ускорить разработку и начальное базовое тестирование. Кроме того, Skaffold - отличный инструмент, который может обеспечить столь необходимое непрерывное развертывание.
Бывают ситуации, когда вам необходимо развернуть и интегрировать во внешний кластер Kubernetes: возможно, тяжелые зависимости (например, AWS RDS), ограничения безопасности или сложные или гибридные архитектуры, которые нельзя реплицировать локально. Пока ваш kubectl настроен так, чтобы указывать на внешний кластер k8s, ничего в сценарии использования скаффолда не меняется.
Skaffold работает в Linux, MacOS, Windows или может работать в контейнере Docker. Я буду следить за установкой MacOS, но вот документация для всех:
https://skaffold.dev/docs/install/
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
sudo install skaffold /usr/local/bin/
Самый быстрый способ начать - использовать один из примеров Skaffold; здесь много: https://github.com/GoogleContainerTools/skaffold/tree/master/examples/nodejs
Для этого поста я создал репо, содержащее только исходный код, Dockerfile и манифесты K8s, чтобы упростить этот пример. Клонируйте это локально:
git clone https://github.com/gboie/node-sample-skaffold.git
Обратите внимание, что, в отличие от таких инструментов, как Draft, которые могут их автоматически создавать, вам нужно будет создать свой файл Dockerfile и манифесты k8s. В данном случае они уже есть, но об этом нужно помнить. Однако следующая команда сгенерирует базовый код конвейера Skaffold после быстрого сканирования вашего каталога.
skaffold init
Был создан новый файл skaffold.yaml, представляющий определение конвейера Skaffold; вот как это выглядит для нашего примера:
Это довольно простой пример; Короче говоря, он создает Dockerfile и развертывает файл манифеста k8s. Для расширенной настройки и реализации дополнительных этапов см .:
https://skaffold.dev/docs/design/config/
Как только вы запустите scaffold dev из корневого каталога (nodejs):
Из выходных данных выше видно, что создается новый образ докера, маркируется и затем развертывается в моем локальном кластере k8s (в данном случае Docker-Desktop).
Чтобы определить порт нашей недавно развернутой службы k8s, запустите:
Для проверки ваше приложение откройте браузер по адресу
http://localhost:30695
Все идет нормально! Теперь посмотрим, как работает непрерывное развертывание ...
Измените исходный код, т.е. измените backend / src / index.js, и вы увидите CD в движении ... Я изменил «World» на «Gabriel» в этом файле, и, как только вы сохраните изменения, Skaffold сработает. новое задание сборки / тега / развертывания, и вы можете увидеть…
И в браузере:
Чтобы удалить модуль / развертывание / службу из кластера kubernetes, просто запустите skaffold delete
Это очень упрощенный подход, который показывает, как Skaffold реализует непрерывное развертывание для разработки приложений на базе k8. Нет предела возможностей, и я рекомендую вам ознакомиться с официальной документацией и руководствами по адресу https://skaffold.dev
Перевод статьи с сайта https://igboie.medium.com/
Непрерывная интеграция + непрерывная доставка / непрерывное развертывание
В то время как традиционные магазины с большой архитектурой в основном используют CI / Continuous Delivery, некоторые передовые компании в значительной степени полагаются на CI / Continuous Deployments, а некоторые компании используют и то, и другое. Atlassian отлично объясняет эти концепции, и их изображение стоит тысячи слов, которые я пропущу.
Figure 1 Continuous Delivery vs. Continuous Deployment
Read more: https://www.atlassian.com/continuou...tinuous-integration-vs-delivery-vs-deployment
Skaffold
Проще говоря, Skaffold - это утилита командной строки, которая упрощает непрерывную разработку (scaffold dev) для приложений, родных для Kubernetes. Конечно, вы можете просто использовать его для реализации конвейеров CI / Continuous Delivery (запуск скаффолда).Skaffold довольно прост в использовании после некоторой начальной настройки. Вы можете запустить команду scaffold dev в терминале и заняться своими делами разработчика. С каждым изменением локального исходного кода Skaffold начинает действовать и создает, тестирует, маркирует, отправляет, развертывает и отслеживает артефакты, а также может очистить все с помощью команды scaffold delete. Похоже, много полезных функций. Вот рабочий процесс, описанный командой Skaffold:
Figure 2 Skaffold Workflow and Architecture (Skaffold)
Вы можете выбрать, какой из этих этапов хотите реализовать; вам не обязательно иметь их все, вы можете адаптировать скаффолд по своему усмотрению, чтобы наилучшим образом использовать его для вашего конкретного случая использования.
Read More: https://skaffold.dev/docs/
Developer Setup
Разработка локальных машин не умерла, даже если речь идет о Kubernetes. У среды Kubernetes есть преимущества, в которых вы можете разрабатывать и тестировать свои микросервисы без внешних зависимостей и без затрат на локальную или облачную инфраструктуру.Локальный запуск Docker-desktop, Minikube или полномасштабного кластера Kubernetes может ускорить разработку и начальное базовое тестирование. Кроме того, Skaffold - отличный инструмент, который может обеспечить столь необходимое непрерывное развертывание.
Бывают ситуации, когда вам необходимо развернуть и интегрировать во внешний кластер Kubernetes: возможно, тяжелые зависимости (например, AWS RDS), ограничения безопасности или сложные или гибридные архитектуры, которые нельзя реплицировать локально. Пока ваш kubectl настроен так, чтобы указывать на внешний кластер k8s, ничего в сценарии использования скаффолда не меняется.
Getting Started with Skaffold
Предположения: у вас уже есть доступ к кластеру Kuberntes через kubectl. Либо локальный кластер k8, просто Docker-Desktopo, Minikube или другие реализации k 8s (Ubuntu, Rancher и т. Д.), Либо удаленный кластер.Skaffold работает в Linux, MacOS, Windows или может работать в контейнере Docker. Я буду следить за установкой MacOS, но вот документация для всех:
https://skaffold.dev/docs/install/
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
sudo install skaffold /usr/local/bin/
Самый быстрый способ начать - использовать один из примеров Skaffold; здесь много: https://github.com/GoogleContainerTools/skaffold/tree/master/examples/nodejs
Для этого поста я создал репо, содержащее только исходный код, Dockerfile и манифесты K8s, чтобы упростить этот пример. Клонируйте это локально:
git clone https://github.com/gboie/node-sample-skaffold.git
Обратите внимание, что, в отличие от таких инструментов, как Draft, которые могут их автоматически создавать, вам нужно будет создать свой файл Dockerfile и манифесты k8s. В данном случае они уже есть, но об этом нужно помнить. Однако следующая команда сгенерирует базовый код конвейера Skaffold после быстрого сканирования вашего каталога.
skaffold init
Был создан новый файл skaffold.yaml, представляющий определение конвейера Skaffold; вот как это выглядит для нашего примера:
Это довольно простой пример; Короче говоря, он создает Dockerfile и развертывает файл манифеста k8s. Для расширенной настройки и реализации дополнительных этапов см .:
https://skaffold.dev/docs/design/config/
Как только вы запустите scaffold dev из корневого каталога (nodejs):
Из выходных данных выше видно, что создается новый образ докера, маркируется и затем развертывается в моем локальном кластере k8s (в данном случае Docker-Desktop).
Чтобы определить порт нашей недавно развернутой службы k8s, запустите:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d23h
node NodePort 10.97.40.113 <none> 3000:30695/TCP 22s
Для проверки ваше приложение откройте браузер по адресу
http://localhost:30695
Все идет нормально! Теперь посмотрим, как работает непрерывное развертывание ...
Измените исходный код, т.е. измените backend / src / index.js, и вы увидите CD в движении ... Я изменил «World» на «Gabriel» в этом файле, и, как только вы сохраните изменения, Skaffold сработает. новое задание сборки / тега / развертывания, и вы можете увидеть…
И в браузере:
Чтобы удалить модуль / развертывание / службу из кластера kubernetes, просто запустите skaffold delete
Это очень упрощенный подход, который показывает, как Skaffold реализует непрерывное развертывание для разработки приложений на базе k8. Нет предела возможностей, и я рекомендую вам ознакомиться с официальной документацией и руководствами по адресу https://skaffold.dev
Перевод статьи с сайта https://igboie.medium.com/