Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 11, 2022 02:20 am GMT

Spring boot, githubActions e argocd

CI/CD no novidade no mundo do desenvolvimento de software, no entanto a entrega de manifestos kubernetes apartado da aplicao, uma prtica a ser seguida.
Este artigo tem por objetivo demonstrar essa prtica, atravs do action github e o argocd.
Pr-requisito: ter noo sobre docker, kubernetes, java e terraform.

Breve explicao dos recursos utilizados neste exemplo

  • Spring boot: framework para aplicaes java, que utiliza padres de projeto para controlar a injeo de dependncia, alem de prover objetos para solucionar diversos problemas. A aplicao executa dentro do seu contexto, alem de possuir um webservice embarcado (modelo imperativo o apache e reativo o netty).
  • Terraform: utilizado para criar recursos/infraestrutura na nuvem ou local via cdigo. Nesse artigo criaremos um cluster kubernetes utilizando terraform localmente, em conjunto com kind.
  • Argocd: ele inspeciona um repositrio que possui os manifestos kubernetes, e caso ocorra alguma alterao, o mesmo os aplica. Em resumo ele cuida da entrega dos manifestos kubernetes dentro do cluster.
  • Githubactions: recurso do github que cuida do CI/CD. No nosso projeto utilizaremos para efetuar o deploy da aplicao, criao da imagem docker e atualizao do repositrio dos manifestos.
  • Helm: instalador de pacotes dentro do cluster kubernetes.
  • docker: container runtime
  • Kubernetes: um orquestrador de containers.

Pr requisitos

Criao do cluster

Nessa etapa criaremos nosso cluster k8s, instalaremos o argocd e por ltimo criaremos a aplicao dentro do argo, onde ele vai monitorar as mudanas no repositrio https://github.com/fabriciolfj/customer-service-k8s.
Com o clone do repositrio customer-service efetuado, acesse o diretrio cluster, nele existe o arquivo main.tf, onde encontra-se o descritivo do que o terraform ir criar. Dentro do main.tf, vamos olhar para o trecho abaixo e entender o que est ocorrendo.

resource "helm_release" "argocd" {  name  = "argocd"  repository       = "https://argoproj.github.io/argo-helm"  chart            = "argo-cd"  namespace        = "argocd"  version          = "4.9.7"  create_namespace = true  values = [    file("argocd/application.yaml")  ]}

O trecho acima representa o uso de um mdulo dentro do terraform. Onde ele executar as seguintes etapas:

  • instalar o argo dentro do cluster, com base na configurao do arquivo application.yaml
  • dentro deste arquivo encontra-se as configuraes adicionais para criar a aplicao dentro do argocd
  • quando falamos em criar aplicao dentro do argocd, o repositrio git com os manifestos que sero monitorados.
  • qualquer modificao nestes manifestos e submetidos ao repositrio git, estes sero re-aplicados dentro do cluster kubernetes.

Abaixo o contedo do arquivo application.yaml e em seguida o arquivo que cria a app dentro do argocd (esto no repositrio de exemplo salientado acima):

server:  additionalApplications:    - name: cluster-config      namespace: argocd      project: default      source:          repoURL: https://github.com/fabriciolfj/customer-service        targetRevision: HEAD        path: argocd/manifests/cluster #local onde encontra-se o arquivo para criar a app        directory:          recurse: true      destination:        server: https://kubernetes.default.svc      syncPolicy:        automated:          prune: false          selfHeal: false
apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata:  name: customer  namespace: argocdspec:  syncPolicy:    syncOptions:      - CreateNamespace=false    automated:      selfHeal: true # sincronizar automaticamente com o repositorio      prune: true # caso exclua algum arquivo, o argo vai excluir o recurso no kubernetes  destination:    server: 'https://kubernetes.default.svc'    namespace: customer  source:    path: helm #por traz usaremos o helm para efetuar o deploy, dentro do cluster    repoURL: 'https://github.com/fabriciolfj/customer-service-k8s' #repositrio da app, que o argo aplicar no cluster quando houver commits.    targetRevision: HEAD    helm:      valueFiles:        - values.yaml  project: default

Os demais contedos do arquivo main.tf, tem por objetivo criar o cluster k8s local, utilizando kind. obs: est fora do escopo desse artigo o detalhamento desse contudos.
Certifique-se que o docker esteja rodando na sua mquina e execute o comando abaixo para inicializar o terraform, com as configuraes do projeto, no path aonde encontra-se o arquivo main.tf:

terraform init

Em seguida vamos analisar o que ser criado, atravs do comando:

terraform plan

Teremos o seguinte resultado:

  • Plan: 24 to add, 0 to change, 0 to destroy.

Original Link: https://dev.to/fabriciolfj/spring-boot-githubactions-e-argocd-3911

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To