Haki zasobów ArgoCD.

Jan 12 2023
Pomógł w konfiguracji E2E Oto kilka przypadków użycia haków: A- Przed wdrożeniem nowej wersji aplikacji użyj haka PreSync, aby przeprowadzić migrację schematu bazy danych. B- Używanie haka synchronizacji do orkiestracji złożonego wdrożenia wymagającego większego wyrafinowania niż strategia aktualizacji stopniowych Kubernetes.

Pomógł w konfiguracji E2E

Argo + Haczyki

Oto kilka przypadków użycia haków:

A- Przed wdrożeniem nowej wersji aplikacji użyj haka PreSync , aby przeprowadzić migrację schematu bazy danych.

B- Używanie haka synchronizacji do orkiestracji złożonego wdrożenia wymagającego większego wyrafinowania niż strategia aktualizacji stopniowych Kubernetes.

C- Po wdrożeniu użyj haka PostSync , aby uruchomić integrację i kontrolę kondycji.

D- Jeśli operacja synchronizacji nie powiedzie się, użyj haka SyncFail , aby uruchomić logikę czyszczenia lub finalizatora. Haki dla SyncFail są dostępne tylko w wersji 1.2

W moim przypadku użycia —

Muszę utworzyć konfigurację End-2-End, co oznacza, że ​​po wdrożeniu usługi za pośrednictwem ArgoCD i upewnieniu się, że pody działają, muszę natychmiast uruchomić test jednostkowy, aby zakończyć proces CI/CD.

W rezultacie hak PostSync jest odpowiedni dla mojego przypadku użycia.

Tak więc na tym blogu omówimy konfigurację haka PostSync.

Wystarczy raz przejść przez poniższy plik.

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

Linia 2 — rodzaj: Praca

Uruchamiam go jako kind:job , ponieważ jest potrzebny tylko po każdym pomyślnym wdrożeniu usługi, a po uruchomieniu zadanie zadania jest zakończone, więc kind:job jest w moim przypadku właściwym rodzajem.

Linia 6: argocd.argoproj.io/hook: PostSync [Adnotacja haka]

Linia 7: argocd.argoproj.io/hook-delete-policy: HookSucceeded

[Po uruchomieniu haka i zakończeniu zadania zostanie ono usunięte.]

Linia 19: polecenie zwijania

Edytuj polecenia Curl, aby dostosować je do swoich potrzeb. W mojej sytuacji używam narzędzia buildkite, aby rozpocząć test jednostkowy.

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\"

plik Docker-

FROM alpine:3.15

RUN apk add --no-cache bash curl jq

ENTRYPOINT ["/bin/bash"]

Wskazówka: – Unikaj instalowania oprogramowania lub narzędzi, których nie potrzebujesz; pomoże to zachować bezpieczeństwo.

Stan potoku testów jednostkowych można wyświetlić w następujący sposób:

Kliknij-

Podręcznik konfiguracji urządzenia wielofunkcyjnego ArgoCD.

ArgoCD High Availability (HA) [gotowy do produkcji].

Konfiguracja wejścia ArgoCD

Konfiguracja ArgoCD Okta.

Aktualizator obrazu ArgoCD

Konfiguracja powiadomień ArgoCD Slack

Mam nadzieję, że ten post będzie dla Ciebie przydatny i pouczający :)

By me a Coffee ← — — — Jeśli blog ci się podoba, poklasknij :) i śledź mnie po więcej takich treści .

Wasze brawa motywują mnie do dalszego pisania takich blogów.