Ресурсные хуки ArgoCD.

Jan 12 2023
Помогло в настройке E2E Несколько вариантов использования перехватчиков: A- Перед развертыванием новой версии приложения используйте перехватчик PreSync для выполнения миграции схемы базы данных. B- Использование ловушки синхронизации для организации сложного развертывания, требующего большей сложности, чем стратегия непрерывного обновления Kubernetes.

Помогли в настройке E2E

Арго + крючки

Вот несколько вариантов использования хуков:

A- Перед развертыванием новой версии приложения используйте хук PreSync для выполнения миграции схемы базы данных.

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

C- После развертывания используйте хук PostSync для запуска интеграции и проверки работоспособности.

D- Если операция синхронизации не удалась, используйте хук SyncFail для запуска логики очистки или финализатора. Хуки для SyncFail доступны только в версии 1.2.

В моем случае использования -

Мне нужно создать настройку End-2-End, что означает, что после развертывания службы через ArgoCD и проверки работоспособности модулей мне нужно немедленно запустить модульный тест, чтобы завершить процесс CI/CD.

В результате хук PostSync подходит для моего варианта использования.

Итак, в этом блоге мы обсудим настройку хука PostSync.

Просто просмотрите приведенный ниже файл один раз.

1 apiVersion: batch/v1
2 kind: Job
3 metadata:
4   name: ms-echoserver-Unit-test-trigger
5   annotations:
6     argocd.argoproj.io/hook: PostSync
7     argocd.argoproj.io/hook-delete-policy: HookSucceeded
8 spec:
9   template:
10     metadata:
11       labels:
12         name: unit-test
13     spec:
14       containers:
15       - name: unit-test
16         args:
17             - /bin/sh
18             - -ec
19             - "curl --location --request POST  \"https://api.buildkite.com/v2/organizations/example/pipelines/unit-test/builds\" --header \"Authorization: Bearer ${GITHUB_TOKEN}\" --header \"Content-Type: application/json\" 
20                 --data-raw '{
21                    \"commit\": \"HEAD\",
22                    \"branch\": \"main\",
23                    \"message\": \"Triggered by ArgoCD post deployment of ms-echoserver :rocket:\"
24                 }'"
25         env:
26         - name: GITHUB_TOKEN
27           valueFrom: 
28             secretKeyRef: 
29               name: ms-echoserver-secret
30               key: token
31 
32         image: curlimages/curl
33       restartPolicy: Never
34   backoffLimit: 0

Строка 2 — тип: Job

Я запускаю его как kind:job, потому что он нужен только после каждого успешного развертывания службы, и как только он запускается, задача задания завершается, поэтому kind:job — правильный тип в моем случае.

Строка 6: argocd.argoproj.io/hook: PostSync [аннотация крючка]

Строка 7: argocd.argoproj.io/hook-delete-policy: HookSucceeded

[После срабатывания хука и завершения задания оно будет удалено.]

Строка 19: команда curl

Отредактируйте команды Curl в соответствии с вашими потребностями. В моей ситуации я использую инструмент buildkite для запуска модульного теста.

curl --location --request POST  \"https://api.buildkite.com/v2/organizations/example/pipelines/unit-test-pipeline/builds\" --header \"Authorization: Bearer ${GITHUB_TOKEN}\" --header \"Content-Type: application/json\"

Докер файл-

FROM alpine:3.15

RUN apk add --no-cache bash curl jq

ENTRYPOINT ["/bin/bash"]

Совет: - Избегайте установки любого программного обеспечения или инструментов, которые вам не нужны; это поможет вам поддерживать безопасность.

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

Нажми на меня-

Полное руководство по установке ArgoCD.

ArgoCD High Availability (HA) [готов к производству].

Настройка входа ArgoCD

Настройка ArgoCD Окта.

Средство обновления изображений ArgoCD

Настройка уведомлений ArgoCD Slack

Надеюсь, этот пост будет информативным и полезным для вас :)

От меня Кофе ← — — — Если вам нравится блог, пожалуйста, хлопните мне в ладоши : ) и подпишитесь на меня, чтобы узнать больше такого контента .

Ваши аплодисменты мотивируют меня продолжать писать такие блоги.