Назад в блог

Развертывание приложений в Kubernetes с использованием Argo CD и GitOps

Развертывание приложений в Kubernetes с использованием Argo CD и GitOps

Введение

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

Однако управление приложениями в Kubernetes также может быть сложным и требует продвинутых навыков. Развертывание приложений с использованием Kubernetes и непрерывной интеграции и непрерывного развертывания (CI/CD) помогает преодолеть этот сложный процесс, обеспечивая абстракцию. GitOps — один из инструментов, который может помочь в достижении абстракции.

В этом руководстве мы покажем, как использовать Argo CD для непрерывной интеграции и развертывания приложений в Kubernetes. При отправке любых изменений в репозиторий они развертываются в целевом кластере. Argo CD также обеспечивает управление версиями, конфигурациями и средами приложений, интегрируясь со всем жизненным циклом разработки программного обеспечения. Если у вас есть менеджеры пакетов для Kubernetes, такие как Helm, или если ваш репозиторий размещен на BitBucket или GitLab, Argo CD также может легко интегрироваться со всеми этими платформами.

Предварительные требования

Для выполнения этого руководства вам понадобятся:

  • SSH-ключи на вашем компьютере. Если у вас нет пары SSH-ключей в Linux/MacOS/BSD, вы можете создать их, следуя нашему руководству SSH Overview – SSH Servers, Clients, and Keys.

  • Вам также понадобится запущенный кластер Kubernetes. Кроме того, на вашем компьютере должен быть установлен kubectl. Если у вас нет кластера Kubernetes, вы можете воспользоваться руководством How To Create a Kubernetes Cluster Using Kubeadm on Ubuntu 18.04.

  • Вы должны иметь базовое представление о концепциях Kubernetes. Если вы хотите ближе познакомиться с Kubernetes, вы можете изучить руководство Getting to know the basics of the Kubernetes tool.

Шаг 1 – Установка Argo CD

Перед установкой Argo CD нам необходима запущенная среда Kubernetes с kubectl. Вы можете проверить это, выполнив команду ниже:

Deploying Applications on Kubernetes Using Argo CD and GitOps Get Nodes

Вы должны увидеть как минимум один узел Kubernetes в статусе Ready. Если доступных узлов нет, вам следует перепроверить установку Kubernetes. Далее мы создадим отдельное пространство имен для нашей установки Kubernetes. Назовем его argocd. Мы сохраним службу, связанную с Argo CD, в этом пространстве имен:

После этого установите скрипты Argo CD в созданное выше пространство имен, выполнив следующую команду:

Deploying Applications on Kubernetes Using Argo CD and GitOps Install ArgoCD

Чтобы проверить статус подов Kubernetes, выполните команду ниже:

Вы получите результат, подобный следующему:

Deploying Applications on Kubernetes Using Argo CD and GitOps Get Pods

На этом вы успешно завершили установку Argo CD. Чтобы выйти из интерфейса watch, вы можете нажать Ctrl + C. Для доступа к службам в этом кластере Kubernetes нам потребуется перенаправить порты. Мы покажем, как это сделать, на следующем шаге.

Шаг 2 – Перенаправление портов для доступа к Argo CD

Kubernetes может развернуть ваше приложение на любой порт по своему выбору. Поэтому необходимо перенаправить порты приложения Kubernetes, чтобы получить к ним доступ с локальной машины. Argo CD предоставляет службу под названием argocd-server которая использует порт 443. Порт 443 является портом по умолчанию для служб HTTPS и HTTP. Вы можете перенаправить порты Kubernetes на любой порт по вашему выбору. В нашем примере ниже мы перенаправили порт на 8080. Чтобы перенаправить порты, выполните в терминале следующую команду:

После того как вы перенаправите порт, он будет заблокирован, чтобы другие службы не могли получить к нему доступ. Для бесперебойного доступа всегда рекомендуется запускать вышеупомянутую команду в новом терминале. Как только вы закончите, вы можете нажать Ctrl+C для выхода из процесса перенаправления портов.

После перенаправления порта вы можете перейти к Argo CD, перейдя по адресу localhost:8080. Вам будет предложено ввести учетные данные, которые вы сможете получить из командной строки на следующем шаге.

Step 3 – Управление Argo CD из командной строки

Нам необходимо установить интерфейс командной строки Argo CD для управления установкой Argo CD. Рекомендуемый способ установки Argo CD — использование пакетного менеджера, такого как Homebrew. Homebrew — это популярный пакетный менеджер для установки на macOS и Linux. Вы можете установить Homebrew с помощью команды ниже:

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

После вышеуказанной установки вы получите команду argocd. Нам нужно будет получить пароль администратора с помощью команды kubectl . Он был автоматически сгенерирован во время установки. Ниже приведена команда для его получения:

Теперь, когда вы установили Argo CD, вы можете войти в систему, используя команду argocd login ниже:

Вам потребуется войти в систему для развертывания приложения при использовании командной строки:

Applications

Вы можете получить предупреждение безопасности. Если это произойдет, нажмите y, чтобы продолжить. Многие пользователи могут захотеть изменить пароль после входа в систему. Если это так, выполните команду argocd account update-password для изменения пароля. Теперь у нас есть полностью функциональная конфигурация Argo CD.

Наконец, мы развернем приложение в кластере Kubernetes с помощью установленного Argo CD.

Step 4 – Использование нескольких кластеров

Прежде чем продолжить настройку приложения, необходимо узнать целевую машину, на которой вы хотите его развернуть. Во многих сценариях Argo CD и развернутое приложение могут работать в одном кластере. Это поведение Argo CD по умолчанию, но это не ограничение. Если вы хотите развернуть приложение на других целевых машинах, сначала выполните команду kubectl config на вашем компьютере:

Предположим, вы получили два кластера: test-deploy-cluster и test-target-cluster. Теперь, если test-deploy-cluster — это место, где находится ваш Argo CD, а вы хотите выполнить развертывание на test-target-cluster, то выполните команду ниже:

Вышеупомянутая команда добавит сведения о дополнительном кластере в Argo CD. Она также позволит развертывать службы в целевом кластере Argo CD.

Step 5 – Развертывание примера приложения

Наконец-то пришло время развернуть приложения в кластере Kubernetes. Мы будем использовать примеры приложений, предоставляемые Argo CD. Мы также будем использовать helm-guestbook которое создано с использованием Helm чартов.

Для установки приложения мы будем использовать команду argo app create . Мы укажем Git-репозиторий, helm-guestbook , а также передадим целевой сервер и пространство имен по умолчанию:

Вы можете проверить статус только что созданного приложения, выполнив команду argocd app get:

Не удивляйтесь, если увидите OutOfSync статус. К настоящему моменту мы скачали Helm-чарт и создали для него точку входа в Argo CD. Однако со стороны Kubernetes для него не выделено никаких ресурсов. Чтобы синхронизировать это приложение, выполните команду ниже:

Deploying Applications on Kubernetes Using Argo CD and GitOps App Sync

При работе с GitOps всегда необходимо синхронизировать приложение с апстримом. Поэтому при любом изменении в репозитории Argo CD развертывает приложение.

Мы развернули приложение с помощью интерфейса командной строки Argo CD. Вы можете добиться того же результата, используя веб-интерфейс Argo CD. Веб-интерфейс очень полезен, если вы хотите проверить статус и работу приложения. Чтобы открыть веб-интерфейс, откройте localhost:8080:

Deploying Applications on Kubernetes Using Argo CD and GitOps Application UI

Чтобы проверить установку, мы откроем приложение в браузере. Наш helm-guestbook работает на порту 80. Если у вас есть другое приложение, использующее порт 80, вы можете перенаправить порт, чтобы не мешать работе других приложений:

Наконец, откройте URL-адрес localhost:9090 в вашем веб-браузере, чтобы увидеть работающее приложение:

 Guestbook UI

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

Заключение

В этом руководстве мы показали вам, как устанавливать и развертывать приложения в Kubernetes с помощью Argo CD. Важно убедиться, что ваши развертывания в Kubernetes удобны в обслуживании. GitOps может очень помочь вам в этом отношении.

Kubernetes сейчас является стандартом для развертывания в облаке. У Cloudsigma есть отличные руководства по Kubernetes , с которыми вы можете ознакомиться далее:

Приятной работы!

author

Preslav Dobrev

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.