Slide 1

Slide 1 text

Joe | 2023 CI/CD con Jenkins y ArgoCD

Slide 2

Slide 2 text

GitOps • Su nombre revela que nos gustaría administrar nuestras operaciones como implementación de aplicaciones, administración, escalamiento, etc. vía Git. • Podemos commitear a Git y nuestra aplicación/infraestructura es instalada o actualizada. • Hay muchas herramientas que soportan esto cómo: ArgoCD, Flux, entre otras. Veremos sólo ArgoCD. • Las herramientas GitOps nos dan las siguientes características: • Declarativo • Observabilidad • Auditoría y compliance • Rollback

Slide 3

Slide 3 text

ArgoCD https://argoproj.github.io/cd/ • Es uno de los proyectos bajo ArgoProj, el cual tiene otros proyecto como Argo Work fl ows, Argo Rollouts y Argo Events.

Slide 4

Slide 4 text

GitOps Work fl ow

Slide 5

Slide 5 text

Desplegando una aplicación con ArgoCD

Slide 6

Slide 6 text

Minikube https://minikube.sigs.k8s.io/docs/start/ • curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube- darwin-amd64 • sudo install minikube-darwin-amd64 /usr/local/bin/minikube

Slide 7

Slide 7 text

minikube start --memory 8GB --cpus=4

Slide 8

Slide 8 text

Instalar ArgoCD • kubectl create ns argocd • kubectl apply -n argocd -f https://raw.githubusercontent.com/ argoproj/argo-cd/stable/manifests/install.yaml • kubectl get pods -n argocd

Slide 9

Slide 9 text

kubectl get pods -n argocd

Slide 10

Slide 10 text

Instalar ArgoCD • Una vez que los pods están Running, podemos acceder a la UI con el usuario admin, pero, hay que ejecutar este comando para obtener el password: • kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

Slide 11

Slide 11 text

Instalar ArgoCD • Para acceder a la UI de ArgoCD ejecuta este comando: • kubectl port-forward svc/argocd-server -n argocd 8080:443

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Crear namespace app • kubectl create ns app

Slide 15

Slide 15 text

Pasos para crear una aplicación • Forkear proyecto: https://github.com/joedayz/rsvpapp-helm-cicd • Login a ArgoCD • Clic en new app y actualizar con lo siguiente • Dar como nombre de aplicación: rsvapp • Seleccionar el proyecto. Por ahora escoger el nombre default, el cual es automáticamente presentado después de la instalación de ArgoCD • Establecer SyncPolicy Automatic. • Habilitar la opción Prune Resources • Habilitar SELF HEAL

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Pasos para crear una aplicación • Definir el repositorio del URL con la demo que se ha forkeado https:// github.com/joedayz/rsvapp-helm-cicd.git • Establecer revision HEAD • El path es la ubicación del archivo de configuración. Escoger . • Destination: Es el cluster donde se va a desplegar la aplicación. • Selecciona el Cluster: https://kubernetes.default.svc. • Selecciona el namespace: app • Clic en create.

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

kubectl get pods,svc -n app

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Crear el ingress para nuestro deployment

Slide 23

Slide 23 text

Con fi gurar CI con Jenkins

Slide 24

Slide 24 text

Instalar jenkins Jenkins-install.sh

Slide 25

Slide 25 text

Instalar jenkins Jenkins-install.sh

Slide 26

Slide 26 text

Instalar jenkins kubectl get pods -n jenkins

Slide 27

Slide 27 text

Instalar jenkins Obtener el password del admin • kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/ cat /run/secrets/additional/chart-admin-password && echo

Slide 28

Slide 28 text

Instalar jenkins Lanzar la UI de Jenkins • minikube service jenkins -n jenkins

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content