В типичном развертывании на основе нажима, инструменты, такие как Anbible, Jenkins и т. Д., Подключите непосредственно к серверу или кластеру и выполните команды предоставления. Этот подход хорошо работает, когда кластер доступен в сети, и между нашим сервером развертывания есть прямое подключение между нашим сервером развертывания и сервером назначения. Для соображений соответствия или по соображениям безопасности подключение между инструментом развертывания и кластером может быть невозможным.
ARGOCD — это инструмент развертывания на основе тяги. Он смотрит на удаленный репозиторий Git для новых или обновленных файлов манифеста и синхронизирует эти изменения с кластером. Управляя очевидным в Git и синхронизировать их с кластером, мы получаем все преимущества рабочего процесса на основе GIT (контроль версий, отзывы общих запросов, прозрачность в сотрудничестве и т. Д.) И однозначное отображение между тем, что находится в Git Reppo и то, что развернуто в кластере. Этот метод называется гитами.
В этом руководстве я собираюсь сделать следующее:
- Установите Argocd на монтажу Minikube.
- Создайте образец приложения ARGOCD под названием
Ayush-test-приложение
и Свяжите это с моим репоAyush-Sharma/примерные активы
Отказ - Создать и Развертывание Nginx с 3 репликами Отказ
- Убедитесь, что новое приложение отображается на панели инструментов ARGOCD и проверьте его, используя
kubectl
Отказ
Установка аргоцда
Для этого учебника я использую Minikube Версия: v1.21.0
Отказ Вы можете Скачать и установить Minikube отсюда Отказ
С Minikube up и работает, мы собираемся установить argocd. Документация ARGOCD содержит подробные шаги на Как установить и настроить его для любого кластера Отказ Как только вы выполнили эти шаги, убедитесь, что запустите Туннель Миникуба
В отдельном окне терминала, чтобы Minikube обнаруживает конечную точку балансировщика нагрузки сервера Argocd на вашей локальной системе. Чтобы проверить это, запустить Kubectl Получите Po -n Argocd
и проверьте, если argo-server
Услуга имеет Внешний IP:
user@system ~ kubectl get svc -n argocd NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE argocd-dex-server ClusterIP 10.110.2.525556/TCP,5557/TCP,5558/TCP 3h32m argocd-metrics ClusterIP 10.100.73.57 8082/TCP 3h32m argocd-redis ClusterIP 10.104.11.24 6379/TCP 3h32m argocd-repo-server ClusterIP 10.100.132.53 8081/TCP,8084/TCP 3h32m argocd-server LoadBalancer 10.98.182.198 10.98.182.198 80:32746/TCP,443:31353/TCP 3h32m argocd-server-metrics ClusterIP 10.105.182.52 8083/TCP 3h32m
Как только установка будет завершена, и работает балансировщик нагрузки, ARGOCD UI будет доступен в Внешний IP
Отказ
Создание первого приложения
Прежде чем мы сможем говорить о развертывании ARGOCD, нам нужно обеспечить, чтобы Git Reppo с файлом манифеста K8S готов к развертыванию. Я использую Мое публичное репо Пример-активов
с Файл развертывания развертывания Nginx в /ARGOCD/GELATION
Отказ
Наша цель состоит в том, чтобы получить ARGOCD для прослушивания файла манифеста K8S выше для изменений, а затем синхронизируйте их с кластером, он развернут в этом случае Minikube. Мы делаем это, создавая приложение, содержащее информацию о исходных файлах файлов манифеста, деталями кластера назначения и политики синхронизации.
Нажмите Новое приложение
В верхнем левый, чтобы настроить новое приложение. Поскольку мой пункт назначения kubernetes Server — это один ARGOCD, установлен на (Minikube), я оставлю сервер по умолчанию as — есть. Это значения, которые я настроил:
- Название приложения:
Ayush-test-приложение
- Проект:
дефолт
- Политика синхронизации:
автоматизированный
- Параметры синхронизации:
Brune: True; Самоээль: правда
- УРЛ репозитория источника:
https://gitlab.com/aush-sharma/example-assets.git.
- Пересмотр источника:
ГОЛОВА
- Путь источника:
Argocd/Get. -началось
- URL-адрес кластера назначения:
https://kubernetes.default.svc.
- Пространство на местах:
дефолт
Чтобы сделать все легче, вы можете нажать Редактировать как yaml
Направо и вставьте следующее:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: ayush-test-application spec: destination: name: 'default' namespace: default server: 'https://kubernetes.default.svc' source: path: argocd/getting-started repoURL: 'https://gitlab.com/ayush-sharma/example-assets.git' targetRevision: HEAD project: default syncPolicy: automated: prune: true selfHeal: true
Ваша конфигурация должна выглядеть так:
После сохранения конфигурации ваше приложение должно отображаться как карту на домашней странице. Так как мы указываем политику синхронизации как Автоматизированный
Наше новое приложение начнут немедленно синхронизировать с репо.
Создание развертывания Nginx
В этом уроке мой файл манифеста является стандартным развертыванием Nginx с 3 репликами. Однажды Ayush-test-приложение
Завершает синхронизацию, Argocd будет отображать приятный графический вид на развертывание.
Теперь позвольте мне проверить развертывание, используя Kubectl Получить Po
:
NAME READY STATUS RESTARTS AGE nginx-deployment-585449566-584cj 1/1 Running 0 5m nginx-deployment-585449566-6qn2z 1/1 Running 0 5m nginx-deployment-585449566-d9fm2 1/1 Running 0 5m
Вывод
ARGOCD — это относительно легкий и более безопасный подход к развертыванию K8S. Я особенно увлекаюсь отношением к одной к одному между тем, что в репо, и что в кластере, делая управление инцидентами намного проще.
Еще одним большим преимуществом является то, что с момента нашего Git Reppo содержит все ARGOCD, мы могли бы удалить всю установку Argocd и настроить вещи с нуля. Это означает, что подведение второго одинакового кластера со всей нашей рабочей нагрузкой теперь является более осуществимым и практичным в случае катастрофического отключения.
Третьим большим преимуществом является безопасность: поскольку Argocd вытягивает изменения из удаленного REPO GIT, нет необходимости определять правила брандмауэра и VPC Playing Connections, чтобы получить наши серверы развертывания для подключения с нашим кластером, что составляет один меньший точка входа. Это значительно снижает площадь поверхности атаки для наших серверов DEV/QA/PROD.
Поскольку имя Git Repo и филиала настраивается, вы можете получить креатив с моделями развертывания. Например, у вас могут быть 2 различных аргуцитов, работающих на 2 различных кластерах QA и POD, прослушивающие одно и то же ветвь репо. Это гарантирует, что один и тот же файл манифеста развернут на обоих кластерах, обеспечивая среды QA и PROD, содержат ту же кодовую базу. Кроме того, один ARGOCD способен нацеливаться на нацеливание нескольких серверов, то есть возможна модель развертывания ступицы и спицами, где одно мастер развертываний Orgocd Orchestrates по нескольким разработкам, QA и кластерам Prod в разных регионах/средах.
Я надеюсь, что это учебное пособие было информативным. Получите творчество с Argocd, и не забудьте поделиться своими экспериментами с другими.
Счастливое кодирование:)
Оригинал: «https://dev.to/ayushsharma/getting-started-with-argocd-d1j»