Ganchos de recursos do ArgoCD.
Ajudou na configuração do E2E
Alguns casos de uso para ganchos são:
A- Antes de implantar uma nova versão do aplicativo, use um gancho PreSync para executar uma migração de esquema de banco de dados.
B- Usando um gancho de sincronização para orquestrar uma implantação complexa que requer mais sofisticação do que a estratégia de atualização contínua do Kubernetes.
C- Após uma implantação, use um gancho PostSync para executar verificações de integridade e integração.
D- Se uma operação de sincronização falhar, use um gancho SyncFail para executar a lógica de limpeza ou finalizador. Ganchos para SyncFail estão disponíveis apenas na v1.2
Em Meu caso de uso —
Preciso criar uma configuração End-2-End, o que significa que, após implantar um serviço via ArgoCD e garantir que os pods estejam operacionais, preciso executar imediatamente o teste de unidade para concluir meu processo de CI/CD.
Como resultado, o gancho PostSync é apropriado para o meu caso de uso.
Portanto, neste blog, discutiremos a configuração do hook PostSync.
Basta percorrer o arquivo abaixo uma vez.
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
Linha 2 — tipo: Trabalho
Estou executando-o como kind:job porque ele só é necessário após cada implantação de serviço bem-sucedida e, uma vez acionado, a tarefa do trabalho é concluída, então kind:job é o tipo certo no meu caso.
Linha 6: argocd.argoproj.io/hook: PostSync [Hook annotation]
Linha 7: argocd.argoproj.io/hook-delete-policy: HookSucceeded
[Depois que o gancho for acionado e o trabalho for concluído, ele será excluído.]
Linha 19: comando curl
Edite os comandos Curl para atender às suas necessidades. Na minha situação, uso a ferramenta buildkite para iniciar meu teste de unidade.
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\"
arquivo Docker-
FROM alpine:3.15
RUN apk add --no-cache bash curl jq
ENTRYPOINT ["/bin/bash"]
Dica:- Evite instalar qualquer software ou ferramenta que você não precise; isso ajudará você a manter a segurança.
Você pode visualizar o status do seu pipeline de testes de unidade da seguinte maneira:
Clique em mim-
Guia de configuração do ArgoCD All-in-One.
ArgoCD High Availability (HA) [Pronto para Produção].
Configuração de entrada do ArgoCD
Configuração de notificação do ArgoCD Slack
Espero que este post seja informativo e útil para você :)
Por mim um café ← — — — Se você gosta do blog, por favor me dê um Clap : ) e siga-me para mais conteúdos como esse .
Seus aplausos me motivam a continuar escrevendo esses blogs.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)