Управление развертываниями Dynatrace с помощью GitOps
Многие компании сегодня внедряют GitOps для упрощения развертываний в Kubernetes, и интерес к применению этих практик к компонентам Dynatrace постоянно растет. Это руководство посвящено развертыванию Dynatrace Operator с помощью инструментов GitOps и эффективной настройке мониторинга с использованием пользовательского ресурса (CR) DynaKube в соответствии с современными стратегиями развертывания.
Использование ArgoCD¶
В этом разделе рассматривается развертывание Dynatrace Operator и применение CR DynaKube с помощью ArgoCD. Кроме того, описаны параметры и советы по гибкой интеграции с ArgoCD.
Следующие три пункта описывают варианты развертывания Dynatrace, изложенные в подразделах, и их комбинации.
- Индивидуальное развертывание Dynatrace Operator и применение CR DynaKube через ArgoCD Applications
- Применение паттерна App of Apps в ArgoCD
- Использование нескольких источников для ArgoCD Application (бета-функция)
Это руководство было разработано и протестировано с ArgoCD версии 2.10.3.
Развертывание Dynatrace Operator¶
Следующий ArgoCD Application определяет развертывание Dynatrace Operator с использованием OCI-based Helm chart из Amazon ECR:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: dynatrace-operator
namespace: argocd
spec:
project: default
destination:
server: https://kubernetes.default.svc
namespace: dynatrace
source:
repoURL: public.ecr.aws/dynatrace
chart: dynatrace-operator
targetRevision: 1.0.0
helm: {}
Для настройки развертывания через значения Helm обратитесь к руководству пользователя Helm в ArgoCD.
CR Application можно применить следующими способами:
- Напрямую через kubectl
- С помощью паттерна App of Apps
Мультикластерные развертывания через ArgoCD ApplicationSet¶
Для использования CR ApplicationSet при мультикластерных развертываниях используйте приведенный выше CR Application в качестве шаблона и интегрируйте его в CR ApplicationSet согласно официальной документации ArgoCD.
Применение пользовательского ресурса DynaKube¶
Следующий ArgoCD Application ссылается на Git-репозиторий, содержащий CR DynaKube по указанному пути к файлу:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: dynakube
namespace: argocd
spec:
project: default
destination:
server: https://kubernetes.default.svc
namespace: dynatrace
source:
repoURL: <git-reopository-url>
targetRevision: <revision>
path: <path-to-dynakube-dir>
Замените поля источника repoURL, targetRevision и path на соответствующие значения перед применением CR Application одним из следующих способов:
- Напрямую через kubectl
- С помощью паттерна App of Apps
Подробности о настройке CR DynaKube см. в документации по режимам развертывания.
Применение паттерна App of Apps¶
Паттерн App Of Apps в ArgoCD описывает очень распространенный подход в сообществе ArgoCD, обеспечивающий автоматическую начальную настройку кластера. В сочетании с фазами и волнами синхронизации паттерн App of Apps обеспечивает последовательный контроль над синхронизацией Application, необходимый для развертывания Dynatrace Operator перед применением CR DynaKube 1.
Добавьте аннотацию argocd.argoproj.io/sync-wave с соответствующим значением к CR Application из приведенных выше разделов, как показано в следующем фрагменте:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
annotations:
argocd.argoproj.io/sync-wave: "0"
name: dynatrace-operator
namespace: argocd
spec:
...
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
annotations:
argocd.argoproj.io/sync-wave: "10"
name: dynakube
namespace: argocd
spec:
...
Оба CR Application предназначены для применения через паттерн App of Apps (который требует родительского CR Application).
1
Создание пользовательских определений ресурсов (CRD), установленных через Helm chart, может занять несколько секунд, что может привести к сбою первоначального применения CR DynaKube. Чтобы обойти это состояние гонки, мы рекомендуем настроить ArgoCD для использования паттерна App of Apps, изменив логику оценки состояния для Applications. В качестве альтернативы можно настроить автоматические повторные попытки синхронизации.
Использование нескольких источников для ArgoCD Application (бета-функция)¶
Использование нескольких источников для Application является бета-функцией ArgoCD и может быть изменено с нарушением обратной совместимости, согласно документации ArgoCD.
Несколько источников для Application позволяет использовать один ArgoCD Application для развертывания Dynatrace Operator и CR DynaKube. Кроме того, эта функция позволяет использовать файлы значений Helm из Git-репозитория, отличного от самого Helm chart, что ранее не было возможно в ArgoCD.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: dynatrace
namespace: argocd
spec:
project: default
destination:
server: https://kubernetes.default.svc
namespace: dynatrace
sources:
- repoURL: public.ecr.aws/dynatrace
chart: dynatrace-operator
targetRevision: 1.0.0
helm:
valueFiles:
- $values/<path-to-dynatrace-operator-values-file>
- repoURL: <git-repository-url>
targetRevision: HEAD
ref: values
- repoURL: <git-repository-url>
targetRevision: HEAD
path: <path-to-dynakube-dir>
syncPolicy:
retry: # пример конфигурации повторных попыток; подробности см. в примечании ниже
limit: 5
...
...
Перед применением замените все заполнители на соответствующие значения и настройте автоматические повторные попытки2.
2
Создание пользовательских определений ресурсов (CRD), установленных через Helm chart, может занять несколько секунд, что может привести к сбою первоначального применения ресурса DynaKube. Для обеспечения успешного развертывания необходимо настроить повторные попытки, указав политику синхронизации.
Автоматическое обновление Dynatrace Operator¶
Для настройки автоматических обновлений Dynatrace Operator см. Автоматическое обновление Dynatrace Operator, где описана интеграция GitOps с инструментами автоматизации зависимостей.
Связанные темы¶
- Автоматическое обновление Dynatrace Operator