ArgoCD-Ressourcen-Hooks.
Hat bei der E2E-Einrichtung geholfen
Einige Anwendungsfälle für Hooks sind:
A- Bevor Sie eine neue Version der App bereitstellen, verwenden Sie einen PreSync-Hook , um eine Datenbankschemamigration durchzuführen.
B- Verwenden eines Sync-Hooks zur Orchestrierung einer komplexen Bereitstellung, die mehr Komplexität erfordert als die Rolling-Update-Strategie von Kubernetes.
C- Verwenden Sie nach einer Bereitstellung einen PostSync-Hook , um Integrations- und Integritätsprüfungen durchzuführen.
D- Wenn ein Synchronisierungsvorgang fehlschlägt, verwenden Sie einen SyncFail-Hook , um die Bereinigungs- oder Finalizer-Logik auszuführen. Hooks für SyncFail sind nur in Version 1.2 verfügbar
In meinem Anwendungsfall –
Ich muss ein End-2-End-Setup erstellen, was bedeutet, dass ich nach der Bereitstellung eines Dienstes über ArgoCD und der Sicherstellung, dass die Pods betriebsbereit sind, sofort den Komponententest ausführen muss, um meinen CI/CD-Prozess abzuschließen.
Daher ist der PostSync-Hook für meinen Anwendungsfall geeignet.
In diesem Blog besprechen wir daher die PostSync-Hook-Konfiguration.
Gehen Sie einfach einmal die folgende Datei durch.
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
Zeile 2 – Art: Job
Ich führe es als kind:job aus, weil es nur nach jeder erfolgreichen Dienstbereitstellung benötigt wird und sobald es ausgelöst wird, die Aufgabe des Jobs abgeschlossen ist, also ist kind:job in meinem Fall die richtige Art.
Zeile 6: argocd.argoproj.io/hook: PostSync [Hook-Anmerkung]
Zeile 7: argocd.argoproj.io/hook-delete-policy: HookSucceeded
[Sobald der Hook ausgelöst wurde und der Job abgeschlossen ist, wird er gelöscht.]
Zeile 19: Curl-Befehl
Bearbeiten Sie Curl-Befehle entsprechend Ihren Anforderungen. In meiner Situation verwende ich das Buildkite-Tool, um meinen Unit-Test zu starten.
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\"
Docker-Datei-
FROM alpine:3.15
RUN apk add --no-cache bash curl jq
ENTRYPOINT ["/bin/bash"]
Tipp: Vermeiden Sie die Installation von Software oder Tools, die Sie nicht benötigen. Dies wird Ihnen helfen, die Sicherheit aufrechtzuerhalten.
Sie können den Status Ihrer Unit-Test-Pipeline wie folgt anzeigen:
Klick mich-
ArgoCD All-in-One-Setup-Anleitung.
ArgoCD High Availability (HA) [Produktionsbereit].
ArgoCD Slack-Benachrichtigungs-Setup
Ich hoffe, dieser Beitrag ist informativ und nützlich für Sie :)
Von mir einen Kaffee ← — — — Wenn Ihnen der Blog gefällt, klatschen Sie mir bitte :) und folgen Sie mir für weitere Inhalte dieser Art .
Ihr Applaus motiviert mich, weiterhin solche Blogs zu schreiben.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































