ArgoCD-Ressourcen-Hooks.

Jan 12 2023
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.

Hat bei der E2E-Einrichtung geholfen

Argo + Haken

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-Ingress-Setup

ArgoCD Okta-Setup.

ArgoCD-Image-Updater

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.