Politecnico di Torino (logo)

GitOps and ArgoCD: Continuous deployment and maintenance of a full stack application in a hybrid cloud Kubernetes environment

Matteo D'Amore

GitOps and ArgoCD: Continuous deployment and maintenance of a full stack application in a hybrid cloud Kubernetes environment.

Rel. Fulvio Giovanni Ottavio Risso. Politecnico di Torino, Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering), 2021

PDF (Tesi_di_laurea) - Tesi
Licenza: Creative Commons Attribution Non-commercial No Derivatives.

Download (5MB) | Preview

The thesis work focuses on the development of a solution for the continuous deployment and provisioning of environments on Kubernetes clusters (hybrid cloud), based on the GitOps approach. The business case concerns a company that wants to develop and maintain a full stack application consisting of a backend and a frontend. The company wants to give developers a large level of freedom, giving them the ability to create, modify and destroy environments on Kubernetes. As a result, the development team becomes more independent of infrastructure team. These environments are used to develop new features, test new releases, and update versions of the application in the production state. At the same time, the company does not want to give developers free access to the infrastructure repositories, which contain YAML manifests, used for defining the environments to be deployed within Kubernetes clusters. Part of the thesis work concerns the development of a “pull-based” GitOps pipeline, using ArgoCD as a continuous deployment operator and GitHub Actions for the continuous integration. Developers can operate on infrastructure repositories in a controlled and indirect way. By streamlining the interaction between the development and the infrastructure team, one of the advantages is the reduction in the average time required to provision or modify an environment on Kubernetes. Thanks to the GitOps paradigm, to ArgoCD and to an abstraction level provided by the YAML file called "input" (conceived during the thesis work), developers can generate custom environments on Kubernetes, without them knowing the Kubernetes details and the management/compilation of YAML files describing k8s resources. The simplicity of interfacing is another strong point of this solution, since only the knowledge of Git (a tool familiar to developers) and the compilation of the “input” file is required. By using the “input” file, the following things can be chosen for each environment: the clusters in which to deploy, the frontend and backend images to be used, the infrastructure parameters to be applied (replicas, ports, etc) and the secrets. These parameters can be redefined as many times as developers like, as long as the environment exists on k8s. The thesis work also includes the use of a branching strategy and a tagging strategy, which is automatically managed by the CI pipelines. Kustomize is chosen as the configuration management tool for the infrastructure repository. In general, some advantages of thesis work are as follows: •??Drastic reduction in the number and resolution time of infrastructure incidents; •??Reduction of update/provisioning time; •??Automatic writing of infrastructure files, achieving greater performance in terms of time and minimising the possibility of human error; •??Greater independence of the development team from the infrastructure team; •??Continuous deployment for feature and release branches and continuous delivery for the production environment; •??ArgoCD as k8s operator: it provides out of the box multiple features useful for monitoring, access management and operations management. Moreover it is a native GitOps tool, hence cloud native; •??CD implemented through a “pull-based” pipeline, then there are no CD scripts, gaining in maintainability and it is not necessary to provide the pipeline with access data related to the clusters, then it is safer.

Relators: Fulvio Giovanni Ottavio Risso
Academic year: 2020/21
Publication type: Electronic
Number of Pages: 117
Corso di laurea: Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering)
Classe di laurea: New organization > Master science > LM-32 - COMPUTER SYSTEMS ENGINEERING
Aziende collaboratrici: Blue Reply Srl
URI: http://webthesis.biblio.polito.it/id/eprint/18142
Modify record (reserved for operators) Modify record (reserved for operators)