Ganchos de recursos do ArgoCD.

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

Ajudou na configuração do E2E

Argo + Ganchos

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 do ArgoCD Okta.

Atualizador de imagem 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.